#サーバーとは
サーバーとは、情報やデータをいつでも提供してくれる、提供専用のコンピューターのこと。
個人用のPCと比較した時に、大きく異なる部分は2つ
・IPアドレスが固定されている
・レスポンスを返すようにOSとアプリケーションが設定されている
##IPアドレスが固定されている
普段私たちが使っているPCは、IPアドレスが固定されていません。
なぜなら、
・情報を取得する側であり、提供する側でないから
・セキュリティの観点から同じIPアドレスだと外部からの攻撃を受けやすいから
※AWSのEC2もデフォルトではIPアドレスが変わってしまう設定になっています。そこでElastic IP addressをEC2にアタッチさせることで、IPアドレスを固定させます。IPアドレスを固定化した後は、Route53(DNSサーバー)でドメインとIPアドレスを対応させます。こうすることで、クライアント側(個人用のPC)からサーバーへリクエストを送ることができます。
しかし、これだけではダメです。
サーバーがリクエストを返すには、OSを設定する必要があります。
##サーバーのOSの設定
OSとは、スマホやパソコンに搭載された基本ソフトウエアのことです。スマホでアプリケーションが使えたり、パソコンで基本的な操作ができるのは、全てOSがあるおけげです。またWebサービスやアプリケーションを動かすには、必ずOSが必要です。そのためサーバーにもOSを入れないと動かすことができません。
では、サーバーでは具体的にどのようなOSを使うかというとLinux(RedHat, CentOS, Amazon Linux 2など)が一般的です。Linuxは、サーバーの用途にあったOSとなります。
###サーバーの管理と操作
サーバーは通常、温度管理やセキュリティが行き届いた専用施設であるデータセンターに置かれています。
※EC2もAWSが管理するデータセンタに置かれています。
サーバーは離れた場所にあるので、遠隔で通信してログインして操作する必要があります。
操作の設定には、
・CUI : コマンドを使って操作する
・GUI : マウスや指を使って直感的に画面を操作する
の2種類が存在します。
サーバーでは、CUIを使うのが一般的です。
理由は、コマンドを打って作業した方が作業効率が良いからです。
##サーバーのアプリケーションの設定
サーバーにOSを設定しただけでは、サイトを見ることはできません。具体的なアプリケーションを設定してサーバーにアップロードし、それをOSを連携させることが必要になります。
###HTML,CSSの仕組みとデメリット
HTML,CSSのファイルをアップロードすると、シンプルなWebページだけのサービスが提供することが可能です。クライアント(あなたのPC)が、「Webページの情報ください」というシンプルなリクエストを出して、サーバーがHTML, CSSで作られたファイルをレスポンスとして返す。これだけでもシンプルなWebページを世界中に公開することができます。
しかし何度アップデートしても同じページが表示されるだけで、ユーザごとのプロフィールページ、データなどは扱うことができません。
###データベース、サーバーサイド言語の存在意義
クライアントからリクエストを受け取ったサーバーは、クライアントにリスポンスを返す前に処理を行っています。
SNSのプロフィールを更新したり、いいねを押したり、世界中の人に最新のWebページを更新するためには、2つの仕組みが必要です。
それは、データを保存と作成する仕組みです。
####データの保存(データベース)
例えば、SNSのユーザのプロフィール情報、サイトの更新情報、獲得したいいね数などの膨大の情報はWebページ運用するために管理する必要があります。
このデータを保存する場所をデータベースと言います。
そのデータベースに保存されているデータを取り扱う言語があります。
それが、SQLです。
ここでの注意点は、
データベースはあくまで情報の保管庫であり、データベースのデータをSQLで取り出すことはできます。しかし、そのデータを加工したり表示したりするには別の仕組みが必要になります。
####データの作成(サーバーサイド言語)
そこで必要になるのが、サーバサイド言語です。
サーバサイド言語は、
・取り出したデータをどのように加工するか
・どのように表示するか
処理する言語です。
Ex) python, Ruby, PHP, Java
SNSの例だと、
⓵あなたがSNSを見たいと、サーバーにリクエストを送ります。
⓶サーバーがあなたのプロフィールの情報(データ)を、サーバーサイド言語を用いてデータベースから取り出す
⓷取り出したデータをHTMLの中に組み込んで、あなたのプロフィールが入ったWebページを生成する
⓸その生成したWebページをリスポンスとして返す
という流れになります。
※AWSでは、EC2(サーバー)の中にデータベースやサーバサイド言語もインストールして、EC2一台でWebサービスを構築することも可能です。しかし通常はセキュリティの観点からデータベースだけ別のサーバーに分けて配置します。そこでRDS(データベースのサービス)を用いて、その中のEC2のデータベースにソフトウエアをインストールして、AWS上で使いやすくアレンジしています。