はじめに
Webサーバについて理解を深めることで,開発環境の構築の際に役に立つ.私が勘違いしていた点などを含めてWebサーバについてまとめる.
Webサーバの2つの意味
個人でWebサイトやWebアプリを開発する際に,ローカル環境に動作確認を行うためのWebサーバが必要になる.インターネットで環境構築のやり方について調べると,"Webサーバのインストール"という言葉が出てくる.「Webサーバって物理的なものでは?」と思うことがあるが,"Webサーバ"はソフトウェアとハードウェアとしての意味を持つ.
ソフトウェアとしてのWebサーバ
Webサーバを構築するための機能を提供するソフトウェアのことで,インストールすることで個人のPCでもWebサーバとしての利用を可能にする.ソフトウェアとしてのWebサーバは本来はWebサーバソフトウェアと呼び,これを略して"Webサーバ"と呼ばれることが多い.
ハードウェアとしてのWebサーバ
ハードウェアとしてのWebサーバは,前述の"Webサーバソフトウェア"やWebアプリ・サイトのコンポーネントファイル(HTML/CSS,画像など)を格納しているコンピュータのことである.
まとめると,Webサーバは物理的なコンピュータであり,Webサーバソフトウェアはそのコンピュータ上で動作するプログラムであるということができる.
Webサーバの機能
WebページやWebアプリを提供するWebサーバには,以下のような機能を持つ.ここでは代表的な機能だけで,他にもセキュリティに関する機能も提供する.
1.リクエストの受信
Webサーバは,HTTPプロトコルに基づいて,パソコンやスマホなどのクライアントからのリクエストを受け取る.リクエストは,WebページやWebアプリを取得するためのもので,Webサーバはそれに応じて適切な応答を生成する.
2.静的コンテンツの提供
Webサーバは,WebページのHTMLやCSS,JavaScript,画像などの静的なコンテンツを提供する.これらのコンテンツはWebサーバに保存されており,クライアントからのリクエストに応じて提供される.
3.動的コンテンツの生成
Webアプリとして利用可能にする動的なコンテンツを生成することができる.これには,データベースから情報を取得したり,APIを呼び出したり,動的に生成されたHTMLを作成したりすることを含む.
4.キャッシュの管理
キャッシュを管理することで,Webサーバの負荷を軽減し,レスポンスタイムを改善することができる.
キャッシュとは
最近利用されたものや利用回数が多いリソースを一定期間保存するもので,取得による負担を削減することができる.
5.ログの記録
Webサーバが処理するリクエストに関する情報を記録し,Webサーバの動作やパフォーマンスの問題を特定するための情報として利用する.
Webサーバソフトウェアの種類
Webサーバソフトウェアにはなどさまざまな種類があり,メジャーなものとして以下のものがある.
・Appatch(アパッチ)
正式名称は「Apache HTTP Server」で,世界的に広く使用されているWebサーバソフトウェア.オープンソースソフトウェアであり,誰でもダウンロードすることができる.幅の広い動作環境に対応しており,LinuxやUNIX,WindowsやMac OSなどユーザの環境を選べないという点が特徴を持つ.
・Nginx(エンジンエックス)
2004年にリリースされた比較的新しいWebサーバソフトウェア.Apacheと同様で誰でもダウンロードすることができる.静的コンテンツの処理能力の高さ,並列処理性能の高さ,メモリの使用量の少なさという特徴を持っている.
・IIS(アイアイエス)
IIS(Internet Information Services)はWindows用のWebサーバソフトウェア.Microsoft社が提供しているためWindowsに特化している.Windowsの画面上でマウスで視覚的に操作できるので,難易度が低く使いやすいという特徴をもつ.