連載
» 2009年11月30日 00時00分 UPDATE

いまさら聞けない!? Web系開発者のためのサーバ知識(2):もっとApacheを知ろう (1/3)

開発者として常にプログラマに徹してしまっていないだろうか。そうすると、どうしてもサーバ知識が不足しがちになる(編集部)

[竹下肯己,株式会社 qnote]

自動起動の設定

 第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

 あらためて起動設定を確認してみます。

●ランレベルの3と5のスクリプトのディレクトリに起動用のシンボリックリンクが作成されている
# 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
●ランレベルの3と5でApacheが起動するようになっている
# chkconfig --list | grep httpd
httpd          	0:off	1:off	2:off	3:on	4:off	5:on	6:off

 以上でシステムの起動時にApacheが自動的に起動されるようになりました。ここで紹介した設定方法は、多くのサーバプログラムで共通となりますので、仕組みや設定手順を理解しておきましょう。

       1|2|3 次のページへ

Copyright© 2017 ITmedia, Inc. All Rights Reserved.

@IT Special

- PR -

TechTargetジャパン

この記事に関連するホワイトペーパー

Focus

- PR -

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。