Webサーバとは、クライアントのWebブラウザからのリクエストを受け取り、自身の管理するデータをWebブラウザに送信するサーバです。
今回はWebサーバの役割や種類、サーバーソフトウェアについて解説を行なっていきます。
Webサーバの役割
ホームページなどのサイトを閲覧する際に、クライアントはWebブラウザを使用し、Webサーバへリクエストを送信します。Webサーバは受け取ったリクエストを基にデータをWebブラウザへレスポンスとして返す事でクライアントの画面にページを表示します。
Webサーバの役割は主に2つあり、静的サイトを扱うか動的サイトを扱うかによって役割が変わってきます。
静的サイトと動的サイトの違い
Webサーバが扱うデータには静的サイトと動的サイトが存在します。
静的サイトとは
いつ誰がどのような環境からアクセスをしても同じ物をレスポンスするサイトです。WebページのHTMLファイルをWebサーバにアップロードする事で、クライアントからのリクエストに対してWebサーバはそのまま事前に用意されたHTMLファイルを返します。
例えば、企業のホームページやランディングページなどアクセスする人によって内容を変える必要がないサイトに使われます。
動的サイトとは
クライアントからのリクエストを受けてページを生成するため、アクセスする人や環境により異なった物をレスポンスするサイトです。例えばショッピングサイトやSNSなど利用するクライアントにより表示する内容が異なるサイトが動的サイトです。動的サイトの場合クライアントからのリクエストを受けたWebサーバはAP(アプリケーション)サーバへ処理の依頼を行います。依頼を受けたAPサーバは場合によってはDB(データベース)サーバへ処理に必要なデータを取得しに行き、生成したページをWebサーバへ返します。
Webサーバの種類
Webサイトを公開するために必要なWebサーバですが、いくつかの種類があります。
1台のサーバーを複数人で共有する共有サーバや、1台丸々自分専用に使用ができる専用サーバなど主に4つの形態があるため解説をします。
1.専用サーバ
専用サーバは物理的なサーバを完全に1台専有して使用出来るサーバです。自分専用のためOSの選択やマシンスペックなど自由にカスタマイズを行うことができます。また、サーバの中には自分だけしか居ないため、他のユーザーの運用状況による影響を受けません。ただし、自由に使える反面運用から保守管理まで自身で行わないといけないため、高い専門知識が求められます。
2.共有サーバ
共有サーバは物理的な1台のサーバを複数人で共有して使用するサーバです。1台のサーバを共有するためOSを変更するなど高度な変更は行えず、他のユーザーの運用状況に影響されてしまいます。メリットは低価格で使用することが出来る点と保守管理をレンタル会社に任せられる点が挙げられます。
3.VPS
VPS(Virtual Private Server)は「専用サーバ」と「共有サーバ」の両者の面を持つサーバです。物理的な1台のサーバを複数人で共有する点は共有サーバと同じですが、そのサーバ内に仮想的に専用サーバを作成することができます。共有サーバと違い仮想的に自分専用のサーバを持っているためOSの選択やアプリケーションの構築など、ある程度のカスタムが行えます。専用サーバほど自由度はないが、共有サーバよりは自由度が高く、料金設定も中間的な設定になっています。
4.クラウドサーバ
クラウドサーバはVPSと似ていますが、VPSは1契約につき1つの仮想サーバを提供するのに対してクラウドサーバは複数の仮想サーバを契約することができ、リソースも自由に変更ができます。また料金設定もVPSは月額固定制が多いですが、クラウドサーバは従量課金制なことが多いです。自由度が高く使用状況に応じてリソースの増減を行える点はメリットですが、使用用途によっては運用費が高額になる場合もあるので注意が必要です。
Webサーバソフトウェアとは
Webサーバを構築するうえで次に重要になってくるのがWebサーバソフトウェアです。
サーバとして使用したいハードウェアにWebサーバソフトウェアをインストールする事でサーバとして使用する事ができるようになります。代表的なWebサーバソフトウェアとして「Apache」「Nginx」「IIS」の3つがあるため詳しく解説を行います。
Apache
Apacheは1995年にリリースされて以来20年以上の歴史を持つオープンソースのWebサーバソフトウェアです。ApacheにはMulti Processing Module(以降、MPM)が採用されており、プロセスを複数生成することで同時にリクエストを処理することができるようになります。一時期は全世界のWebサーバのうち、半数近くにApacheが使われており、その実績から信頼性の高いWebサーバソフトウェアと言えます。日本でも主流のWebサーバソフトウェアとして人気があるため開発者向けの技術情報も豊富で、インストール方法やトラブルシューティングなどあらゆる情報が入手しやすいのもメリットとして挙げられます。
Apachについて詳しくはこちらの記事で解説しています。
Nginx
NginxはApacheと同じくオープンソースのWebサーバソフトウェアです。2023年1月現在、Apacheを抜きシェア率1位となっています。Nginxの特徴として同時リクエストの処理に特化しており、軽量で処理が速い点が挙げられます。Apacheの駆動方式がクライアントのリクエスト数だけプロセスを生成する方式なのに対して、Nginxはアクションが起きた時だけ処理を行うイベント駆動方式です。このイベント駆動方式によりメモリを効率的に使用できるので、処理速度が非常に高速となります。
Nginxについて詳しくはこちらの記事で解説しています。
IIS
IIS(Internet Information Services)はMicrosoft社が提供するWebサーバーソフトウェアです。ApacheやNginxがLinuxなどの様々なOSに対応しているのに対してIISはWindows用となっています。IISはWindowsベースであり、コマンドを入力して実行させるCUIと違い直感的に操作が行えるGUIである点も大きなメリットといえます。また、Microsoft社が提供を行っているため日本語のマニュアルも充実しており、導入がしやすい点もポイントとなります。Windows系の開発環境と相性がいいためASP.NETのフレームワークなどと連携を考えている方におすすめです。
まとめ
Webサーバとはクライアントからのリクエストを受け取り、自身の管理するデータをWebブラウザに送信するサーバです。
Webサーバの役割は主に2つあり、静的なサイトを扱う場合は予め用意されていた静的コンテンツをクライアントにレスポンスし、動的なサイトを扱う場合はAPサーバやDBサーバと連携しクライアントにレスポンスします。Webサーバを構築するためにはサーバに使用するハードウェアにWebサーバソフトウェアをインストールしないとWebサーバとして使用することはできません。Webサーバをどのような使用用途で使いたいのかを見極め、適したWebサーバソフトウェアの選択を行いサーバをビルドしましょう。
【番外編】USBも知らなかった私が独学でプログラミングを勉強してGAFAに入社するまでの話
プログラミング塾に半年通えば、一人前になれると思っているあなた。それ、勘違いですよ。「なぜ間違いなの?」「正しい勉強法とは何なの?」ITを学び始める全ての人に知って欲しい。そう思って書きました。是非読んでみてください。
「フリーランスエンジニア」
近年やっと世間に浸透した言葉だ。ひと昔まえ、終身雇用は当たり前で、大企業に就職することは一種のステータスだった。しかし、そんな時代も終わり「優秀な人材は転職する」ことが当たり前の時代となる。フリーランスエンジニアに高価値が付く現在、ネットを見ると「未経験でも年収400万以上」などと書いてある。これに釣られて、多くの人がフリーランスになろうとITの世界に入ってきている。私もその中の1人だ。数年前、USBも知らない状態からITの世界に没入し、そこから約2年間、毎日勉学を行なった。他人の何十倍も努力した。そして、企業研修やIT塾で数多くの受講生の指導経験も得た。そこで私は、伸びるエンジニアとそうでないエンジニアをたくさん見てきた。そして、稼げるエンジニア、稼げないエンジニアを見てきた。
「成功する人とそうでない人の違いは何か?」
私が出した答えは、「量産型エンジニアか否か」である。今のエンジニア市場には、量産型エンジニアが溢れている!!ここでの量産型エンジニアの定義は以下の通りである。
比較的簡単に学習可能なWebフレームワーク(WordPress, Rails)やPython等の知識はあるが、ITの基本概念を理解していないため、単調な作業しかこなすことができないエンジニアのこと。
多くの人がフリーランスエンジニアを目指す時代に中途半端な知識や技術力でこの世界に飛び込むと返って過酷な労働条件で働くことになる。そこで、エンジニアを目指すあなたがどう学習していくべきかを私の経験を交えて書こうと思った。続きはこちらから、、、、
エンベーダー編集部
エンベーダーは、ITスクールRareTECHのインフラ学習教材として誕生しました。 「遊びながらインフラエンジニアへ」をコンセプトに、インフラへの学習ハードルを下げるツールとして運営されています。
関連記事
2020.02.25
完全未経験からエンジニアを目指す爆速勉強法
USBも知らなかった私が独学でプログラミングを勉強してGAFAに入社するまでの話
- キャリア・学習法
- エンジニア
2023.02.09
GraphQLとREST:API技術の選択に悩んでいる方へ
GraphQLとはFacebook社により開発されたAPI向けのクエリ言語、およびそのランタイムを指します。
- WEB
2024.04.30
ウェブマーケティング用語「CTA」とは?効果的な使い方7つもご紹介
この記事では「WebマーケティングにおけるCTA」について解説しています。その他、CTAを設置する時に知っておきたい「CTAの効果的な使い方」や「CTAの注意点」も解説しているので、ぜひ参考にしてください。
- WEB
2023.02.13
【SEO対策】メタタグとは?SEOに重要なタグの種類や使い方について解説
メタタグ(meta情報)とは検索エンジンやブラウザに対して、Webページの情報を伝えるためのHTMLタグを指します。
- SEO
- WEB