支援対象地域:札幌、仙台、関東、愛知、関西、広島、福岡

  • TOP
  •   
  • コラム
  •   
  • Webサーバー構築の仕組みと基礎

はじめに

今や個人1人1人に普及するほど一般的となったスマホやPC。それらがよく使用される機能の一つとしてインターネットがあります。そのインターネットを使用するにあたって必要になるのがWebサーバーです。今回はそのWebサーバーの基本的な概要と構築を行う方法についてご紹介していきます。

Webサーバーとは

Webサーバーとは簡単に言い表すと「自身のWebサイトを公開するために情報をまとめて、必要に応じて要求された仕事を行う管理場所」です。もっと具体的な働きを解説すると

①Webサイトの閲覧者が要求した内容に対してWebサーバーの情報を公開する。(Webサイトを表示)
②設定に応じてWebサーバー内のデータを保護して特定の利用者に対してアクセスを制限する。
③「CMS:Contents Management System」で作成されたWebサイトの場合、データベースサーバーとのやり取りを仲介し必要な動作を行う。

となります。では「パソコンとWebサーバーの違い」はどうでしょうか。

①グローバルIPアドレスが固定的に割り当てられておりインターネットに常時接続状態である。
②サーバーソフトがインストールされ、起動中にある。

の2つが主な違いとして挙げられます。極端な話であれば上記の条件を満たしていた場合、普段日常使いしているPCもWebサーバーと呼べるということになります。

Webサーバーを理解するうえで

Webサーバーを理解するにあたっていくつか必要な用語の基本的な説明を行いたいと思います。

クライアントとサーバー、リクエストとレスポンス

Webサイトを閲覧するために使用している「Webブラウザ」。例として「Goole Chrome」や「Firefox」「Safari」「Internet Explorer」など、他にもスマートフォンで動作するブラウザソフトもあり様々な種類があります。これらはユーザーの手元で動作し、情報をインターネットを通じて引き出すツールになります。これを「クライアント」と呼びます。
逆にクライアントが情報を引き出し先、これを「サーバー」といい、サーバーはクライアントからの注文に対してそれに応じた情報を送り返しています。
さらにクライアント(利用者)がサーバー(提供者)に送る情報を「リクエスト」、サーバー(提供者)がクライアント(利用者)に送り返す情報を「レスポンス」と呼びます。

URLとの関係性

Webブラウザでは「http」あるいは「https」から始まるアドレスが入力される。これらのアドレスは「URL:Uniform Resource Locator」と呼ばれます。WebブラウザではこのURLを受け取ると内容を確認して3つの要素に分けて順に処理を行います。

・「http」部分は相手との接続方式として使用。
・アドレス末[.jp]や「.com」などの部分は接続先ホストとして認識。
・上記2つの要素からサーバーへ接続が完了したら以下のアドレスに続きがあればそのファイルを、なければそのWebサイトを表示。

※クライアントがWebサイト等を閲覧する際「ページを閲覧したい」というリクエストをサーバーに送信し、リクエストをサーバーが受け取りレスポンスを行います。これら相互にデータのやり取りを行う仕組みを「httpプロトコル」と呼びます。

Webサーバーを構築していく

それでは早速Webサーバーを構築していきます。そのために今回「Apache」を使用します。これは現在、世界で最も使用されているWebサーバーでありApacheライセンスに基づいてフリーで公開されています。

Apacheについて

【特徴】

低コストで安定したクオリティ:ApacheはLinuxやWindows、MacOSなどほとんどの環境で動作し、OSが異なるなどの動作環境による影響を考えなくてよいという面と、動作に安定性があります。動作が不安定な場合、Webページが重くなったり最悪の場合、閲覧出来ないケースもありますので非常に大きなアドバンテージです。
機能の拡張性が高い:Apacheは基本的な標準型のままでも多彩な機能が搭載されています。さらにシェアが多いことも幸いし、Apacheに対応した機能拡張ソフトが数多くリリースされています。
モジュールによる機能の拡張性:Apacheは拡張機能がモジュール化されており、新しい機能を追加する際にはその都度再設定を行わず、追加したい機能を持つモジュールをコンパイルするだけでApacheを再起動したときにそのモジュールが自動的にロードされて機能が使用可能となります。

Webサーバーを構築する動作環境

Webサーバーを構築するためにApacheをインストールしていきます。そこでインストールする方法として「パッケージインストール」と「ソースインストール」という大きく分けて2つ存在します。

パッケージインストール

インストールしたい内容が既にコンパイルされており、起動することでバイナリパッケージを指示に従っていくだけで自動的にインストールされる方法です。さらにインストールされるパッケージ情報はデータベースに保存されているために管理も容易になります。さらにインストールするうえで他に必要なパッケージがあると判明した場合、不足しているパッケージを自動的にインストール処理を行ってくれるパッケージマネージャーも存在します。
逆に欠点として、コンパイルされているパッケージがインストールする環境に合わない場合が存在します。特にApacheのように様々な環境に適応できるソフトウェアではソフトウェア側に互換性があってもそれは動作環境には適応されないことが少なくありません。さらにパッケージに内蔵されているバイナリコードはインストールするマシンに最適化は行われません。そのためそのマシンに最適化されたプログラムに比べて実行速度が劣る場合があります。またソフトウェアの更新においてラグがあります。つまり使用しているソフトウェアの最新バージョンがリリースされたとしてもパッケージ化されていない場合、最新バージョンを使用したい場合は「ソース」からインストールしか方法がありません。

ソースインストール

公開されているソースコードを自身でコンパイルしてバイナリファイルを作成してインストールする方法です。こちらはパッケージインストールと比べてソースコードからコンパイルオプションを調べたり、プログラムの依存性を調べたりと、インストール前に初めから自身で全て作業を行う必要があり、手間がかかります。さらにそインストール後もアップデートやアンイストールも手動で行う必要があります。ここまで欠点だらけのソースインストールですが、メリットとしてパッケージインストールでは行えない最適化が行えます。インストールしたいプログラムを他でもない自身の動作環境に対して調整が効くため、動作効率は非常に高くなります。

ApacheをインストールしWebサーバーを構築するにあたって動作環境を整える必要があります。(※今回の動作環境はあくまで一例です。)

・VisualBox内でCentOS7をインストールする
・CentOS7内でApache(httpdパッケージ)を無修正でインストールする
・VisualBox内の設定で「VisualBox内CentOSとのネットワーク接続は標準設定のNAT」であり、「ポートフォワーディングを設定し8080番ポートと80番マッピング」を行っている。※利用環境が異なる場合は必要に応じて調整ください

※今回、CentOSのインストール方法については割愛します。詳細はまた別記事にて説明します。

Apacheをソースインストールする

今回は一例としてApacheをソースインストールして進めたいと思います。
まずは最新版のApacheのソースコードを公式サイトにてダウンロードします。ソースコード自体には言語で分かれている等がないため、公式サイトでダウンロードすると最新のものを手に入れることができます。
ダウンロードしたソースコードは「tar」でまとめられ、さらにそこからgzipで圧縮された「tar.gz」となっています。これを逆の手順でファイルを解凍してソースコードを元の状態に復元していきます。しかし解凍を行っていく際、注意すべき点として把握していないおかしなディレクトリへファイルを作成する等のミスを犯すリスクを減らすために解凍先をあえてrootユーザーを避けて一般ユーザーで行うことを推奨します。
ファイルを解凍するとバージョンに応じたディレクトリが作成され、圧縮されていたファイルが表示されます。表示されるこれらがコンパイルするに必要とされる各種ファイルになります。ソースコードに興味がある場合は作成されたディレクトリ内にある「src」を参照します。
解凍後、作業を進める前に必ず確認すべきファイルが2つ存在します。解凍して作成されたディレクトリ内にある「README」「INSTALL」です。「README」は使用するにあたっての注意事項やApacheについての簡単な説明が記載されており、「INSTALL」にはインストール方法やインストール時の注意事項が記載されています。またこれらのドキュメントにはインストールに必要なツールなどが記載されている場合があるため、必ず確認ください。

コンパイルする前設定を行う

ソースコードの解凍作業が終わったら次にインストール前の準備である「コンフィグ」を行います。これはApacheのインストールオプションの設定を行うものです。これはWindowsのアプリケーションで例えるとインストーラーでカスタムインストールを選択して必要なコンポーネントを選択する手順にあたります。
ソースディレクトリにて[$ ./configure --help]と入力します。その後表示されるメッセージは[configure]という設定を行うコマンドの詳細な説明になります。
[configure]の設定内容といってもそこまで多くはなく、希望した内容がある場合や特殊な環境下でのインストールでもなければインストールするのはモジュールのみとなる。さらに加えるなら一般的なモジュールはデフォルトでインストールされるため、追加・削除するようなモジュールは限られてきます。
configureのhelpを参考して設定内容を確定させたら「$ ./configure (オプション)」を実行させてコンパイル前の設定を実施します。ここで実行したconfigureのn内容は同ディレクトリ内に「config.status」として保存されています。もし後で変更したい場合はこのファイル内容を変更して「./config.status」と実行すれば設定の変更が行われます。しかし設定変更時、画面に進行状況が表示されますがエラーが生じた場合はそこで作業は中断されます。さらにエラーが生じていた場合でも見落としている場合があるので注意してください。

コンパイルとインストールを行う

では実際にプログラムをコンパイルしていきます。コンパイルを行うために「make」というコマンドを用いますが、このコマンドは「Makefile」を読み込んで動作します。(この「Makefile」とは上記の「./configure」を実行した際に書き換えられており、コンパイル時にプログラムを動的に変更するために必要なパラメータや、アプリケーションをコンパイルする手順などを定義しているファイルになります。)
makeを実行後、Makefiles中で定義されたパラメータを指定する必要がありますが、今回のMakefilesにはデフォルトのパラメータが定義されており、Apacheの場合では「build」がそれにあたります。
つまりコンパイルを行うには[$ make][$ make build]と入力すればエラーが生じた場合を除きコンパイルが完了しバイナリファイルが作成されています。さらに注意すべき点として正常に終了してもその旨を示すメッセージは表示されないため、確認を怠らないようにしましょう。

作成したバイナリファイルをインストールする

ここまでの手順で作成したバイナリファイルをインストールしていきます。しかし作成したファイルがどこへ配置されているのか、配置場所はどこなのかが不明な場合、それらを自動的に行なってくれる「make install」コマンドが存在します。この「make install」はMakefileの中のinstallパラメータに定義された手順で処理を行います。しかしこの作業はrootユーザーでなければ書き込めないディレクトリに書き込みを行うため、今回、これまで作業をしていた一般ユーザーでは作業を完了させることが出来ません。必ず「su」を実行して管理者になってから「make install」を実行してください。
実行後、画面にはこれまでと同じくして進行状況が表示されるが、これまでと違い「cp」コマンドや「mkdir」コマンドが表示されています。そして作業が正常に完了した場合、「You now have successfully built and installed ~」のようなメッセージが表示されます。このメッセージが表示た場合、Apacheが正常にインストールされています。

Apacheの起動と動作確認

インストールが完了したものの、正常に処理が行われるかの確認を行う必要があります。そのためメッセージに従ってApacheを起動していきます。ちなみにメッセージでは起動の前に設定ファイルの修正を指示されますが、別に修正せずとも起動の確認は可能です。

# /usr/local/apache/apachectl

start: httpd started

Apacheの起動を確認したら次にWebブラウザでWebページが正常に表示が行われるかの確認も行います。しかしその場合、サーバー上にコンテンツがないためテストが行えないと思われるかもしれませんが、Apacheではインストールした時点でテスト用のコンテンツも配置されているため、これらを表示させることで簡易の動作確認を行うことが出来ます。
Webブラウザを起動し、http://に続いてApacheをインストールしたサーバのIPアドレスを入力します。しかし、これだけではテスト用のWebページは表示されず、ポート番号8080に接続する必要があります。そのため「http://192.168.1.2:8080/」などとIPアドレスとポート番号を指定してアクセスを行います。
正常にサーバーが起動している場合、無事にブラウザにページが表示されます。ここまででApacheのセットアップは完了です。

最後に

いかがでしょうか。今回はWebサーバー構築を行うためにApacheを用いて基本的な方法をご紹介致しました。上記の内容は基本的なサーバーの構築に際し、Apacheのオプションやその他の拡張機能について省いた非常に簡素な内容になります。今回の内容がサーバーを構築し、使いやすいものに改善を図っていくためにも知識を吸収して発展への切っ掛けになれば幸いです。ここまで読んでくださりありがとうございました。