Apacheを触ってみる

  • 環境
    • OS : macOS Mojave バージョン10.14.1
    • Apatche : 2.4.37 (Unix)

Apacheは、Webサーバです。

  • 正式名称 : Apache HTTP Server

Apacheという名前はインディアン部族、Apacheに対する敬意の念をあらわすため選んだ」らしいです。
Webサーバで利用されているアプリケーションで、Netcraft社によるとシェアはここ数年下がりつつあるとはいえそれなりにあります。
Web Server Survey | Netcraft

Webサーバは、HTMLファイルやそれに付随する画像などのファイルをクライアントコンピュータに配信するサーバコンピュータのことです。

https://eng-entrance.com/wp-content/uploads/2016/05/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88-2016-05-25-7.58.03.png
今更聞けない!Webサーバーの仕組みと構築方法

f:id:ponsuke_tarou:20181219233515p:plain
第8回 Webサーバーを作る(Apache) « shell-mag

http://www.atmarkit.co.jp/fjava/special/ejb01/zu03.gif
Webアプリケーションにおけるサーバ・サイドJavaの効果的な利用

Apacheの利点

  1. 多彩なプラットフォーム
    • UNIXWindowsIBMOS/2Mac OS Xなどで動作します。だから特別な環境を用意しなくったって今使っているものが使えちゃうんです。
  2. オープンソース
    • オープンソースのため、興味があれば誰でもソースコードを見ることができます。そのため、常に外部から多くの人の目でチェックされ、改良を続けることでApacheの安定性は高まっています。
    • オープンソースがゆえに、商用製品のような手厚いサポートを受けることはできませが、コミュニティなどやサイトが沢山あるので情報は容易く手に入るのです!
  3. 機能が豊富
    • Apacheは機能を積極的に追加・拡張・機能をモジュールとして分割し、ユーザが新機能を開発するためのAPIも公開しています。このAPIを利用した追加モジュールがユーザによって数多く作成され、公開されています。そのため有用な機能を提供するモジュールはApacheの配布パッケージに含まれることもあるのです。

インストールの方法

qiita.com

起動と停止の方法

ターミナルを使います。

# 起動する
$ apachectl start

# 停止する
$ apachectl restart

# 再起動する
$ apachectl restart

Apacheを起動してからブラウザで「http://localhost:80」を表示すると「It works!」と表示されます。
f:id:ponsuke_tarou:20181227133522p:plain

Apacheを設定してみる

どこに「It works!」が書かれているのでしょう?こういった情報はApacheの設定ファイルで確認できます。

設定ファイルの名前は「httpd.conf」です。

設定ファイルは、Macにデフォルトで入っているApacheの場合は「/etc/apache2/httpd.conf」です。ただ「etc」というディレクトリは「Finder」では見えないのでターミナルで開きます。

$ open /etc/apache2/

アクセスするポート番号をListenに設定します。

#
# Listen: Allows you to bind Apache to specific IP addresses and/or
# ports, instead of the default. See also the <VirtualHost>
# 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:80
Listen 80
設定するポート番号の注意 : 80番はよく他のアプリケーションに使われています。

環境によっては「It works!」が表示されない事があります。原因は沢山あるのですが、1つにポート番号があります。

例えば、「Listen 80」と httpd.conf に設定したとします。これはApacheが 80番 のポートを使いますよってことです。

ところが、意外と他のアプリケーションが 80番を使っていてApacheが80番を使えず起動できないことがあります。
qiita.com

まずは現在使われているポート番号を調べます。
Macでは Network Utility を使います。
f:id:ponsuke_tarou:20181210211746p:plain

何のアプリケーションとポート番号がバッティングしているか判ったら方法は2つ
① 使っているアプリのポート番号を変更する
Apacheのポート番号を変更する

②の場合は、「Listen 80」の 80 を変更します。
「8080」あたりが無難です。

そして、Apacheを再起動するとポート番号のバッティングが治ります。

表示するファイルを格納するディレクトリをDocumentRootに設定します。

#
# DocumentRoot: The directory out of which you will serve your
# documents. By default, all requests are taken from this directory, but
# symbolic links and aliases may be used to point to other locations.
#
DocumentRoot "/Library/WebServer/Documents"


「/Library/WebServer/Documents」を開いてみると「index.html」というファイルが入っています。ここに「It works!」が書かれています。

< html >< body><h1 >It works!</h1></body></html>
DirectoryIndexに設定されたファイルがデフォルトで表示されます。

ここまででDocumentRootに設定されたディレクトリにある「index.html」が表示されたことがわかりました。
この「index.html」を指定するのがDirectoryIndexになります。
http://localhost:80/」のようにファイル名が指定されない場合はDirectoryIndexに設定されたファイル名が返されて「http://localhost:80/index.html」となります。

#
# DirectoryIndex: sets the file that Apache will serve if a directory
# is requested.
#
<IfModule dir_module>
    DirectoryIndex index.html
</IfModule>

r7kamura.hatenablog.com

f:id:ponsuke_tarou:20181219233806j:plain