第1部 構築編

本番運用に向けて

WWW サーバ構築

さてさて、次は Apache HTTP サーバのインストールだ。
前回のお試しインストールでは Apache は Red Hat Linux 7.3 に付属する RPM でインストールした
コレでインストールすると、Apache は /etc/httpd にインストールされるらしい。
しかし普通 Apache をソースからインストールした場合には、慣例では /usr/local/apache にインストールするものだ。
おかげで設定ファイルの場所を探し回って要らぬ時間を費やした過去がある。

と言うわけで、今回はソースからインストールすることにしよう。

Apache は Apache Software Foundation のページからダウンロード出来る。
http://www.apache.org/ に行って、Download の下の from a mirror ないし from here からソースをダウンロードする。
from here でダウンロードする場合、Index of /dist というページが表示されるので、httpd/ を選択する。
すると Apache の各種パッケージが用意されているので、apache_1.3.27.tar.gz を取ってくる。

apache_1.3.27.tar.gz はこの日記を執筆している時点で最新の 1.3 系 Apache だ。
Apache にはマルチスレッド対応した 2.0 系が公開されているが、今回は実績のある 1.3 系を用いてみよう。

とりあえず、ダウンロードした apache_1.3.27.tar.gz を /home/******** に FTP 転送して、SSH でサーバにログインする。
んで、早速作業開始だ。

$ su
Password: ????????
# mkdir /usr/local/src/apache
# mv apache_1.3.27.tar.gz.tar /usr/local/src/apache/
# cd /usr/local/src/apache/
# tar -xzf apache_1.3.27.tar.gz.tar

これで、/usr/local/src/apache/ 以下に apache_1.3.27 というディレクトリが出来たはずだ。
とりあえずソースのディレクトリに移動する。

# cd apache_1.3.27

そして configure スクリプトを実行する。

# ./configure --enable-module=all --enable-shared=max

この時、--enable-module=all は有効にするモジュールを全て指定する
不要なモジュールも入ってしまうが、設定ファイルの方で設定出来るので容赦なくぶちかます。
--enable-shared=max は有効にしたモジュールのウチ、DSO として取り込むモジュールを指定する。
max を指定しているので、起動時に必要なモジュール以外は全て DSO にしてしまう。

DSO というのは、Dynamic Shared Object の略で、Apache に必要な機能を外部から組み込めるようにした仕組みだ。
以前の Apache は全ての機能が本体に組み込まれていたため、メンテナンス性が悪かったのだが、DSO によって切り離すことによって、メンテナンス性の向上が図られたわけだ。

本当は Apache のインストール先を指定する --prefix 指定もあるのだが、省略すると標準で /usr/local/apache にインストールされるので、指定を省略している。
んで、コンパイル。

# make

さらにインストール。

# make install

そうすると、/usr/local/apache 以下にインストールされたはずだ。
さて、Apache を起動する前に、ちょっと設定を変更する。
vi で Apache の設定ファイル /usr/local/apache/conf/httpd.conf を開く。
ServerName という設定がコメントアウトされているままなので、この先頭の # を削除して有効にしてしまう。
サーバのホスト名がきちんと設定されている場合には、すでにここにホスト名が設定されているはずだ。
ホスト名の設定を怠っている場合には、正常に設定しないと Apache が起動しない
んで、正常に書き換えられたら、取り敢えず起動してみよう。

# /usr/local/apache/bin/apachectl start

とタイプする。
すると、

/usr/local/apache/bin/apachectl start: httpd started

と表示された。
どうやら、正常に起動しているらしい。
試しに Windows 端末から覗いてみる。
すると正常に Apache の画面が表示された。

さて、次ぎに Linux を起動したと同時に Apache が起動するように、自動設定を行おう。
System V 系の UNIX の初期起動プロセスの管理方法に則り、設定を行う。
まず、Apache の起動スクリプトである apachectl を、/etc/init.d の下に慣例に従って httpd という名前でコピーする。

# cp /usr/local/apache/bin/apachectl /etc/init.d/httpd

そうしたら、まず普段起動するランレベル 3 では標準で起動するように、httpd のシンボリックリンクを作成する。

# cd /etc/rc3.d
# ln -s /etc/init.d/httpd S99httpd

この時、/etc/rc3.d はランレベル 3 の場合の起動スクリプトを格納する場所だ。
しかし起動スクリプト本体は /etc/init.d に置き、/etc/rc3.d にはシンボリックリンクを置くのが普通だ。
Linux では、ランレベルに応じて /etc/rc0.d ~ /etc/rc6.d までのディレクトリが用意されている。
ランレベルに応じて実行する場合、シンボリックリンクの頭が "S" ならば "start" パラメータを、"K" ならば "stop" パラメータを指定して呼び出される。
二桁の数値は呼び出し順序だ。
99 を指定しておけば他のサービスが起動した後から起動されるように順序づけが出来る。

次ぎに、同様の手順でランレベル 0 で停止するように設定する。

# cd /etc/rc0.d
# ln -s /etc/init.d/httpd K10httpd

これで Linux システムを停止する際には Apache を停止させるように出来る。
ランレベル 0 は Linux を停止させる際に起動されるランレベルなのだ。

さて、取り敢えず設定を確認するために、SSH で繋いでいたコンソールを切断して、直接サーバで root にログオン。
再起動してみる。

# shutdown -r now

しばらくしてサーバが再起動した。
起動時の INIT のログでは httpd が正常に起動しているようだ。
更に Windows 端末から覗いてみると、やはり問題なく起動している。

うむ、結構いい感じだ。

Valid HTML 4.01 Strict Valid CSS!