開発者として常にプログラマに徹してしまっていないだろうか。そうすると、どうしてもサーバ知識が不足しがちになる(編集部)
第1回「Webサーバから始めよう」で手順を追って設置した/etc/rc.d/init.d/httpdというApacheの制御スクリプトは、システム起動時におけるApacheの自動起動に利用できます。
今回は、Linuxのシステム起動時に各種のサーバプログラムを自動的に起動させる方法を、Apacheを例に紹介しておきましょう。
まず、/etc/rc.d/init.d/配下に、サーバ制御スクリプトを設置します。制御スクリプトの内容はサーバプログラムにより異なりますが、多くのパッケージではインストール時に自動で設置されるか、またはサンプルが提供されます。今回の例では、すでに紹介した手順で/etc/rc.d/init.d/httpdを設置済みです。
次に、/etc/rc.d/rc[0-6].d/ というディレクトリ([0-6]の部分にはシステムのランレベルを表す数字が入ります)に、一定の命名規則に従って、先ほどのサーバ制御スクリプトへのシンボリックリンクを作成します。このシンボリックリンクも、RPMでのインストールでは自動で設置される場合があります。
Apacheを例に、RPMでインストールした直後の状態で確認してみると、以下のようにシンボリックリンクが作成されていることが確認できます。
# find /etc/rc.d/rc*.d -name "*httpd*" -ls 2491130 0 lrwxrwxrwx 1 root root 15 7月 29 16:05 /etc/rc.d/rc0.d/K15httpd -> ../init.d/httpd 2491131 0 lrwxrwxrwx 1 root root 15 7月 29 16:05 /etc/rc.d/rc1.d/K15httpd -> ../init.d/httpd 2491132 0 lrwxrwxrwx 1 root root 15 7月 29 16:05 /etc/rc.d/rc2.d/K15httpd -> ../init.d/httpd 2491133 0 lrwxrwxrwx 1 root root 15 7月 29 16:05 /etc/rc.d/rc3.d/K15httpd -> ../init.d/httpd 2491134 0 lrwxrwxrwx 1 root root 15 7月 29 16:05 /etc/rc.d/rc4.d/K15httpd -> ../init.d/httpd 2491135 0 lrwxrwxrwx 1 root root 15 7月 29 16:05 /etc/rc.d/rc5.d/K15httpd -> ../init.d/httpd 2491136 0 lrwxrwxrwx 1 root root 15 7月 29 16:05 /etc/rc.d/rc6.d/K15httpd -> ../init.d/httpd
Kで始まるシンボリックリンクは、リンク先の制御スクリプトを通して、サーバプログラムを停止させるためのものです。上記の例では、すべてのランレベルでApacheが自動起動しない設定になっていることが分かります。
Apacheをソースからインストールした場合には、そもそも/etc/rc.d/init.d/httpdが自動では設置されませんので、当然シンボリックリンクも存在しません。
サーバプログラムを自動起動させたいときは、起動に対応するランレベル(ランレベル3や5)のディレクトリにSから始まるシンボリックリンクを作成します。また、そのディレクトリのKで始まるシンボリックリンクは削除します。
なお、KやSに続く数字は、スクリプトが実行される順序です。別のサービスに依存するサーバプログラムもありますので、起動や終了の順序を指定できるようになっています。
シンボリックリンクはlnコマンドで手動で作成してもよいのですが、chkconfigというコマンドを利用すると便利です。chkconfigは、各ランレベルでのサービスの有効・無効を一元管理できるツールです。
ApacheをRPMからインストールした場合には、chkconfigの管理対象として/etc/rc.d/init.d/httpdがすでに含まれていますので、以下のコマンドで起動設定を確認できます。
# chkconfig --list | grep httpd httpd 0:off 1:off 2:off 3:off 4:off 5:off 6:off
先ほどシンボリックリンクの検索で確認できたとおり、すべてのランレベルでApacheが起動しないようになっていることが分かります。
Apacheをソースからインストールした場合には、前回の手順で設置した/etc/rc.d/init.d/httpdをchkconfigに認識させる必要があります。/etc/rc.d/init.d/httpdを開いて、先頭のコメントブロックの最後あたりに、以下の2行のコメントを記述してください。
#chkconfig: - 85 15 #description:Apache
85は起動時のスクリプト実行順序、15は終了時のスクリプト実行順序です(ここではRPMの場合のデフォルト値を流用しました)。記述したら、chkconfigに制御スクリプトを認識させます。以下のコマンドを実行してください。
chkconfig --add httpd
これで、RPMでインストールした場合と同じく、chkconfigからApacheの起動設定が可能になりました。試しに先ほどの「chkconfig --list | grep httpd」を実行してみてください。RPMの場合と同じ表示が得られ、Apacheがchkconfigの管理対象として認識されたことが確認できます。
ここまでのお膳立てができたら、最後に、特定のランレベルでのシステム起動時にApacheが自動的に起動するようにchkconfigで設定します。ランレベル3(テキストモードでの起動)およびランレベル5(GUIモードでの起動)のときに、Apacheが起動するようにしてみましょう。以下のようにコマンドを実行します。
chkconfig --level 35 httpd on
あらためて起動設定を確認してみます。
# find /etc/rc.d/rc*.d -name "*httpd*" -ls 3572341 0 lrwxrwxrwx 1 root root 15 7月 29 17:48 /etc/rc.d/rc0.d/K15httpd -> ../init.d/httpd 3572455 0 lrwxrwxrwx 1 root root 15 7月 29 17:48 /etc/rc.d/rc1.d/K15httpd -> ../init.d/httpd 3572459 0 lrwxrwxrwx 1 root root 15 7月 29 17:48 /etc/rc.d/rc2.d/K15httpd -> ../init.d/httpd 3572460 0 lrwxrwxrwx 1 root root 15 7月 29 18:40 /etc/rc.d/rc3.d/S85httpd -> ../init.d/httpd 3572461 0 lrwxrwxrwx 1 root root 15 7月 29 17:48 /etc/rc.d/rc4.d/K15httpd -> ../init.d/httpd 3572462 0 lrwxrwxrwx 1 root root 15 7月 29 18:40 /etc/rc.d/rc5.d/S85httpd -> ../init.d/httpd 3572463 0 lrwxrwxrwx 1 root root 15 7月 29 17:48 /etc/rc.d/rc6.d/K15httpd -> ../init.d/httpd
# chkconfig --list | grep httpd httpd 0:off 1:off 2:off 3:on 4:off 5:on 6:off
以上でシステムの起動時にApacheが自動的に起動されるようになりました。ここで紹介した設定方法は、多くのサーバプログラムで共通となりますので、仕組みや設定手順を理解しておきましょう。
Copyright © ITmedia, Inc. All Rights Reserved.