【3/18〜】Amazon、VMwareが語る『クラウドの未来』 スラッシュドット    はてなブックマーク  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-
  TomcatやJBossなどAPサーバ環境に関する
情報を集約! “業務”用APサーバ大百科

New!
  一気に解説! 最新のクラスタストレージ
「RAIDを超えたストレージ基準」……など

New!
  クラウド的ユーザー体験の変化は脅威か?
仮想化技術を使いこなす運用管理術を紹介

New!

  上司や部下、部署内メンバーとの情報共有
を“ガラッ”と変えるコラボツールとは?

New!
  おばかアプリ選手権、第4弾開催中!!
ムダにカッコよくてくだらない作品求ム!

  社内ファイルサーバを“クラウド”に統合
VPN直結「クラウド型ストレージ」を紹介

  Twitterのアカウントはなぜ突破された?
メールによる新手の攻撃手法とその対策

  もう仮想化のお試しフェイズは終わりだ!
Hyper-V 2.0が基幹システムも仮想化

  美人!? まあまあ? 気になる いやし系!!
PV急増で「美人時計」がとった手段とは?

  クライアント企業から求められる人材
⇒IT技術と経営戦略を併せ持つ「戦略家」

  .NET編集長が実践する「技術情報検索術」
サンプル・コードを簡単に探す“技”は?

  業務効率と情報セキュリティ対策を両立!
手間なく確実に機密情報を守る方法とは?

  進化を続ける富士通ストレージETERNUS DX
製品開発者の自信を裏付けるものとは何か

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

  【CTC事例】約30の基幹システムを統合!
膨大なバッジジョブを制御した方法は?

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

  その数、なんと400台以上! グループ内
サーバの「統合管理」によるメリットは?