【2/17】今年は「濃厚」技術トーク!@ITメールセミナー スラッシュドット    はてなブックマーク  Yahoo!ブックマークに登録  印刷
いまさら聞けない!? Web系開発者のためのサーバ知識

第2回 もっとApacheを知ろう

竹下 肯己
株式会社 qnote

2009/11/30

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

自動起動の設定

- PR -

 第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/3
next

Index
もっとApacheを知ろう
Page1
自動起動の設定
  Page2
Apache設定の基本項目
ログ出力の設定
エラーログ
  Page3
アクセスログ
アクセスに応じて環境変数を設定する
アクセスログを目的別に分けて出力したい

いまさら聞けない!? Web系開発者のためのサーバ知識

 Mac OS X関連記事
プログラマーを引き付けるMac OS Xの魅力
続々移行するそのワケとは
 Mac一筋という熱狂的なユーザーだけでなく、「面白いことをしたい」と考えるエンジニアもMac OS Xを利用し始めている。いったいなぜだろう
Mac OS XでAMP構築
3通りの方法で整備できる開発環境
 Mac OS Xの上にWebアプリケーションの定番、AMP(Apache+MySQL+PHP)環境を3通りの方法で導入してみましょう
Mac OS Xで動かす軽量プログラミング言語
導入からPHP拡張モジュール組み込みまで
 Leopardでは、インストール直後からいくつかの軽量プログラミング言語が利用できます。早速試してみませんか?
Objective-Cは特殊な言語?
Cocoaの素、Objective-Cを知ろう(1)
 iPhone用アプリケーション開発で注目を集める言語「Objective-C」。C++とは異なるC言語の拡張を目指したこの言語の基本を理解しよう
Mac内にPHP4、5、6を同居させるコツ
Mac OS X+PHPでオールインワン環境(インストール編)
 PHP4の開発は終了したが、移行の問題は残されている。異なるバージョンのPHPをスムーズに切り替えるには?
  Coding Edgeフォーラムフィード  2.01.00.91

Coding Edge フォーラム 新着記事

@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

RSSフィード

スキルアップ/キャリアアップ(JOB@IT)

お勧め求人情報

キャリアアップ 〜JOB@IT
@IT Special -PR-
  企業の仮想化に足りない“発想”とは?
仮想化運用管理のキモは意外なところに!

New!
  操作もマニュアルも分かりやすい!
ユーザー視点で開発されたPC管理ツール

New!
  仮想化すればコストは削減できるか?
仮想化に必要な「3つの視点」を解説する

  セキュリティを知り尽くす上野氏が登壇!
@ITメールソリューションLive! in Tokyo

  運用管理の課題を“2つの観点”から分析
ユーザー満足度の高い「仮想環境」とは?

  世界に通用するストレージの作り方とは?
製品に込めた思いを富士通の開発者に聞く

  OSSで手間も時間も、障害も減った――
「マピオンの事例」オープンソース活用法

  「ノートPCの持ち出し禁止」で大丈夫?
情報漏えいを防ぐ管理手法とインフラは?

  1日の処理を1秒に――MySQLの達人が語る
「コスト削減」できるチューニング

  ドキュメント作成を自動化して、SEの作業
効率を大幅アップ! Visio 2007の魅力

  急速に広がるHyper-Vでのサーバ仮想化
そのベストプラクティスをデルが解説

  @IT主催セミナーで語られた、「担当者に
求められるセキュリティ対策」をレポート

  @IT「Windows 7」 特設サイトオープン!
最新情報・移行ノウハウを公開しています