Apacheとは?導入方法とメリットについて解説

Apacheとは?導入方法とメリットについて解説のアイキャッチイメージ

Apacheとは?

Apache(アパッチ)は、Apache HTTP Server というソフトウェアの略称です(単に Apacheとも呼ばれます)。Apacheは1995年4月に発表された、Webサーバーソフトウェアです。Webサーバーソフトウェアとは、HTTPリクエストを送ったときに、何らかのレスポンスを返すプログラムのことを指します。netcraftによれば、2020年4月時点で全世界の約25%のシェアを占め、世界で2番目に利用されています。インターネット上で、動画やSNSを利用したり、企業や官公庁の公式サイトで情報を入手したりする場合には、必ずWebサーバーソフトウェアのお世話になります。そのうち25%ものサービスでApacheがバックエンドを担当しています。感覚的に理解しがたいかもしれませんが、まぎれもない事実です。今回の記事では、導入方法を紹介した後、簡単な使用例を紹介していきます。

Apacheを利用するメリット

現在主要なWebサーバーソフトウェアはNginxとApacheです。その2つを比較して、Apacheを利用するメリット・デメリットを紹介します。

メリット① 信頼性の高さ

ApacheもNginxもOSSです。OSSの信頼性を高める要因は、利用者数や開発年数などにあります。この点で、比較的最近開発されたNginxに比べ、Apacheは情報の蓄積量や知名度の点で優れています。

メリット② 簡単に拡張できる

Apacheは、「モジュール」を使用することで必要な機能を簡単に追加できます。公式が出しているモジュールだけでなく、インターネット上で配布されているモジュールや、自分で開発したモジュールを利用することができます。

デメリット① C10K問題

Apacheには「C10K問題」と呼ばれる問題が発生しています。「C」は「Client(クライアント)」、「10K」は「1万」を表し、ネットワーク性能やハードウェアに問題がなくても、同時接続数がある一定数を超えたタイミングでサーバーがパンクしてしまう問題のことを指します。Nginxは、これに耐えうるように設計されています。

デメリット② 大量の処理に弱い

これはC10K問題にも通じていますが、前提として、Apacheはマルチプロセス、Nginxはシングルスレッドかつイベントループ方式を採用しています。マルチプロセスというのは、簡単に言うと大量のタスクを同時に処理してしまおうということです。これにより大量のアクセスが行われると、プロセスが同時に蓄積し負荷が大きくなってしまうというデメリットを持っています。対してシングルスレッドというのは1つずつ処理を完了させることですが、もう一つイベントループ方式と言って重い処理を後回しにできる機構を備えています。そのおかげで、重い処理によるサイトの停止を防ぐことができます。下記のサイト(英語)にイベントループについての分かりやすい説明が乗っていますので、興味があれば読んでみてください。

Apacheの導入方法

今回はApacheの導入方法を、Windows 10環境下で紹介していきます。公式サイトによるとWindows 2000以降であれば最新であるApache 2.4に対応しているようです。

Apacheのダウンロード

Apache自体は、コンパイルされたソフトウェアを提供せず、ソースコードのみを提供しています。そのため、Windowsであれば、公式サイトからでなく誰かがビルドしたものをダウンロードして利用することが一般的です。以下のサイトにアクセスし、最新バージョンのbinariesのzipファイルをダウンロードしてください。

Apacheのインストール

Apacheのインストールは、ダウンロードした圧縮ファイルを展開し、配置するだけで完了します。ダウンロードした「httpd-2.4.43-win64-VS16.zip」ファイルを解凍したのち、任意のディレクトリに配置して下さい。

http.confファイルの修正

Apacheには設定ファイルであるhttp.confファイルが存在しています。修正を行う前のhttp.confファイルをコピーし、念のためにバックアップとして保存しておいてください(不要であれば省略してください)。Apacheの設定ファイルは[インストールしたディレクトリ]\Apache24\conf\に入っていますので、任意のテキストエディタで起動しそれを編集します。

インストールディレクトリを修正する

最初に、ファイル内でSRVROOTを検索してください。以下のような記述が出てきます。## ServerRoot: The top of the directory tree under which the server's# configuration, error, and log files are kept.## Do not add a slash at the end of the directory path. If you point# ServerRoot at a non-local disk, be sure to specify a local disk on the# Mutex directive, if file-based mutexes are used. If you wish to share the# same ServerRoot for multiple httpd daemons, you will need to change at# least PidFile.#Define SRVROOT ""c:/Apache24""ServerRoot ""${SRVROOT}""この中の、Define SRVROOT ""c:/Apache24""という記述の""c:/Apache24""という部分を自分がApacheをインストールしたディレクトリに変更してください。

ポート番号を設定する

次にポート番号の設定を確認します。通常変更する必要はありませんが、複数のWebサーバーを同一サーバーで動かしている場合などで、ポート番号を変更する必要が出た場合には、この設定を変更してください。ファイル内でListenを検索してください。以下のような記述が出てきます。## Listen: Allows you to bind Apache to specific IP addresses and/or# ports, instead of the default. See also the # directive.## Change this to Listen on specific IP addresses as shown below to # prevent Apache from glomming onto all bound IP addresses.##Listen 12.34.56.78:80Listen 80もし変更が必要であれば、Listen 8080を変更します。

サーバー名を設定する

最後にサーバー名の設定を行います。ファイル内でServerNameを検索してください。以下のような記述が出てきます。## ServerName gives the name and port that the server uses to identify itself.# This can often be determined automatically, but we recommend you specify# it explicitly to prevent problems during startup.## If your host doesn't have a registered DNS name, enter its IP address here.##ServerName www.example.com:80ServerNameでは、サーバー自身を表すホスト名・ポート番号を設定します。インストールされた段階ではコメントアウトされており設定されていません。設定する場合、ホスト名+ポート番号で設定します。例えば「www.example.com:80」のように設定します。もしポート番号を省略した場合は、サーバーへのリクエストが来ているポート番号が使用されます。設定する場合は、行頭に #でコメントアウトがなされているので#を消去して設定を記述します。設定ファイルの修正が全て終わりましたら、設定ファイルを保存しておくことを忘れないでください。

Apacheを導入してみよう

今回はApacheの歴史や利点、導入方法を紹介しました。Apacheはさまざまな拡張が可能で、Web上の環境構築に役立ちます。学習用の記事や動画も出回っているので、いろいろ挑戦してみてください。