言わずとしれたシェアNo.1のWebサーバ、Apache についてです。バージョン2の話が中心となっています。
参考リンク
インストール
本家から最新版のソース(2003年3月の時点では2.0.44)をダウンロードして、任意のディレクトリに解凍します。そして、解凍してできたディレクトリに移動して、configureします(以下 --prefixで指定したディレクトリを$APACHE_HOMEと表記します)。
$ ./configure --prefix=/usr/local/www
コンパイルして、インストールします。
$ make # make install
Apacheを動作させるために、最低限の設定を行なっておきます。具体的には、$APACHE_HOME/conf/httpd.confの以下の項目を修正します。
ServerName localhost # 使用しているマシンのホスト名
設定が終わったら、rootになって以下のコマンドで Apache を起動します。
# $APACHE_HOME/bin/apachectl -k start
動作確認は、ブラウザから http://localhost/ にアクセスすることで行なえます。以下の画面が表示されれば、インストール完了です。
Debian 流のインストール
Debian では当然パッケージが用意されています。
# apt-get install mpm-prefork
ここでインストールしているのは mpm-prefork と言って、HTTPリクエストを処理するためのプロセスをあらかじめ用意しておく(prefork)タイプの MPM[1] です。パフォーマンスを優先したい場合は、 mpm-worker というスレッドを使用するタイプの MPM をインストールしてみても良いかもしれません。以上でインストールは完了です。
# /etc/init.d/apache2 start
でサーバが起動します。
Debian 固有の話
sites-available と site-enabled ディレクトリ
Debian では、ソースからインストールした場合と異なり、サイト固有の設定は httpd.conf では行いません。サーバ全体に関わる設定は /etc/apache2/apache2.conf にまとめられていますが、サイト毎の設定は /etc/apache2/sites-available/ 配下にファイルを作成して運用します。インストール直後ではここに default というファイルがあるはずです。感の良い方は気付いたかもしれませんが、この sites-available に1サイト1ファイルずつ作成して、VirtualHost という複数のサイトを運用できるような仕組みになっています。ただし、 sites-available にファイルを作成しただけではそのサイト(VirtualHost)は有効になりません。 /etc/apache2/sites-enabled/ というディレクトリがあるので、ここに sites-available のファイルのシンボリックリンクを張ることによって初めてそのサイトが有効になります。そのサイトを無効にしたければ、このシンボリックリンクを削除してやれば良いわけです。
モジュールを有効/無効にする
Apache では DSO[2] と呼ばれるモジュール機能を使って動的に機能を追加することが可能です[3]。例えば、下記のTipsにある「~user 形式で各ユーザのコンテンツを公開する」機能も mod_userdir というモジュールによって提供されているのです。モジュールを組み込むには、本来ならば httpd.conf に下記のように「モジュールをロードする」設定を追加しなければなりませんが、Debian では a2enmod と a2dismod というツールが用意されており、簡単にモジュールを組み込むことが出来ます。
LoadModule foo_module modules/mod_foo.so
例えば、 mod_rewrite というモジュールを組み込みたい場合は下記のように"mod_"を抜いた名前を a2enmod の引数に与えてやり、httpd を再起動します。
# /usr/sbin/a2enmod rewrite
逆に mod_rewrite を無効にしたい場合は
# /usr/sbin/a2dismod rewrite
という風にします。ちなみに a2enmod/a2dismod を引数無しで起動すると、対話的に有効/無効にしたいモジュールを選択することが出来ます。
設定
Apache ではその設定ファイルである httpd.conf を編集することによってサーバの動作などを設定します。より具体的にいうと、設定ファイルの中で「ディレクティブ」(指示子)というものを使用して設定します。
また、このディレクティブを適用する範囲として「コンテナ」と呼ばれるものも重要です。
Tips
~user 形式で各ユーザのコンテンツを公開する
http://localhost/~hoge/ という形式で各ユーザのコンテンツを公開できるようにするには、UserDirというディレクティブを使用します。
UserDir public_html
とhttpd.confに記述すると、ユーザのホームディレクトリの直下にあるpublic_htmlディレクトリが公開されます。
デフォルトではhttpd.confに上記の記述があるので、~/public_htmlを用意すれば、ユーザのコンテンツは公開されます。~/public_html以下にHTMLファイルを置いて、
http://localhost/~ユーザ名/HTMLファイル名
でそのHTMLにアクセスしてみるといいでしょう。
日本語のファイルが文字化けするのですが...
Apache2では AddDefaultCharset ディレクティブにより、デフォルトの文字セットが ISO-8859-1 になっています。そのため、以下のような日本語を含むHTMLファイルは文字化けします。
<html> <head><title>こんにちは</title></head> <body bgcolor="white"> <h3>へろうわーるど</h3> </body> </html>
文字化けを回避するにはこの AddDefaultCharset を off にします。
AddDefaultCharset off