2021.07.14

コーディング

Apache(アパッチ)とは【入門編】

こんにちは!
みなさんWebサーバ用のソフトウェアの一つであるApache(アパッチ)ってご存知でしょうか。
「知らない」という方や、「聞いたことはあるけど実際どのように動いているのか分からない」という方向けに今回Apacheの仕組みやどのように動いているのかを解説していきます。

Apacheとは

Apacheとは何かというと「Apache HTTP Server」の略で、世界で最も広く使われていたWebサーバ(HTTPサーバ)ソフトウェアの一つとなっております。このHTTPサーバーの役割っていうのは、Webサイトを閲覧するためにクリックしたURLやアドレスバーに打ち込んだURLに応じてサーバー内に蓄積された情報を提供するシステムのことです。この処理が行われることによってWebサイトが見れるようになっています。

Apacheの特徴として
・オープンソースソフトウェアなので、無償で誰でも利用可能
・動作の軽快さと安定性(場合によってはメモリを大量に使ってしまう)
・複数のOSに対応していて幅広いユーザーに適応
などがあげられます。

続いてApacheがどのように動いているのか解説していきたいと思います。

Apacheがどのように動いているのか

今回は「MAMP(マンプ)」というローカルの環境構築ソフトを使用して Apache がどのように動いているのか見ていきます。(Windowsの場合はXAMPP(ザンプ)が使用されることが多いです。)
※MAMPについてサクッと説明すると、Apache(アパッチ)・MySQL(マイエスキューエル)・PHP(ピーエイチピー)これらの最低限必要な開発環境を簡単に整えることができるソフトとなっています。なのでMAMPで説明していきます(バージョンは6.4です)。

ここではMAMPのインストール方法については割愛させていただきます。
「MAMP インストール方法」などと調べるとすぐ出で来るのでそちらを参考にしてください。

インストールしたら続いてサーバーを起動させて、localhost:8888と打つとこのような表示がされると思います。

ここからはApacheがどのように動いて上のような表示がされるのかを見ていきます。

DocumentRoot

WebサーバーはApacheに設定されてるフォルダからリクエストされたHTMLなどのファイルを探してきて返すということをしていて、Apacheに設定されてるフォルダのことをDocumentRootと言います。

テキストエディタで、application/MAMP/conf/apache/httpd.confファイルを開くとズラーっといろいろ書いてあって、217行目あたりにこのように記述されていると思います。

#
# MAMP DOCUMENT_ROOT !! Don't remove this line !!
DocumentRoot "/Applications/MAMP/htdocs"   ←ここです

#

これでHTMLなどのファイルを探すためのフォルダが/Applications/MAMP/htdocsに設定されているよ、ということがわかります。
そしたら次に、/Applications/MAMP/htdocsフォルダに移動します。
すると、以下のようにフォルダの中にindex.phpファイルがあるのが分かります、そのindex.phpファイルこそが localhost:8888 と打った時に表示されるファイルとなっています。

試しに、 localhost:8888 で開いたページの「Welcome to MAMP」部分を変更してみます。

すると、このように「Welcome to MAMP」と記述されていたところが「こーでィ」と変更されているのが分かります。

また、DocumentRootの設定を変えることにより、指定したフォルダ内のファイルを探しに行くようになっています。
設定を変える際は271行目のDocumentRootだけでなく、242行目あたりのDirectory部分も変更する必要があります。

#
# This should be changed to whatever you set DocumentRoot to.
#
<Directory "/Applications/MAMP/htdocs">   ←ここです
    #
    # Possible values for the Options directive are "None", "All",
    # or any combination of:
    #   Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
    #

例として、DocumentRootDirectoryの設定をデスクトップに変更してMAMPを再起動させます。
※デスクトップにはあらかじめファイルを用意しておきます。ファイルの中身は以下のようになっています。

<?php echo 'こんにちは、こーでィです' ?>

すると、デスクトップで作成したファイルを表示しました。

このようにApacheの設定ファイルによって表示するファイルが書き換わったことがわかります。DocumentRootの設定はApacheの設定の中で重要な設定の一つなので覚えておいて損はないと思います。

DirectoryIndex

続いてDirectoryIndexについて説明します。
今現在、わざわざファイル名を指定しなくても、 localhost:8888 と打っただけでファイルが表示されると思います。
これはなぜかと言うとファイル名が指定されてない(省略された)場合にDirectoryIndexで指定されたファイル名がレスポンスとして返ってくるからです。

それではDirectoryIndexの設定を見ていきましょう。テキストエディタで、先ほど開いたapplication/MAMP/conf/apache/httpd.confファイルを開きます。
276行目あたりにDirectoryIndexの設定でindex.htmlindex.phpファイルの設定がされていると思います。

# DirectoryIndex: sets the file that Apache will serve if a directory
# is requested.
#
<IfModule dir_module>
    DirectoryIndex index.html index.php  ←ここです

先ほどのDocumentRootで設定されていた/Applications/MAMP/htdocsフォルダの中にはindex.phpファイルしかなかったと思います。そこでそのフォルダ内にindex.htmlファイルを作成したいと思います。

ファイルの中はどちらのファイルが呼ばれたのかわかりやすいようにこのようにしました。

<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>index.html</title>
</head>
<body>
    <h1>これはindex.htmlファイルです。</h1>
</body>
</html>

これでMAMPを再起動させ、 localhost:8888 を打つとindex.phpファイルではなくindex.htmlファイルが表示されると思います。

これはDirectoryIndexで指定された順番がindex.htmlファイルの方が先なのでindex.htmlファイルを表示して!と命令しているからです。このようにファイル名なしでもDirectoryIndexの設定でファイルが表示される仕組みがわかりました。

ここで始めに戻りますが、 localhost:8888 で打つとどうやってファイルが表示されているのかがわかると思います。

まとめ

Apacheの基本としてお届けしました。この記事でApacheについて少しでも理解いただけたら幸いです。
今回はApacheの大本のファイル、httpd.confファイルで設定しましたが、Apacheの設定をするにはもう一つ方法があり、.htaccessというファイルでも設定することが可能です。(httpd.confファイルよりは設定できることが限定されています。)
こちらに関しては、また勉強してお届けできるようにしたいと思います。

次の記事でお会いしましょう。

この記事を書いた人

こーでィ

こーでィ

フロントエンドエンジニア

大好物はトリの唐揚げ