Apache の起動
Windows 上では、Apache は通常はサービスとして実行されます。 詳細に関しては、「 サービスとして実行する」をご覧下さい。
Unixでは、httpd
プログラムが、バックグラウンドで常にリクエスト処理を行う
デーモンとして実行されます。この文書ではどのように
httpd
を起動するかについて記述しています。
Apache の起動方法
もし、設定ファイル中で指定されている
Listen
がデフォルトの 80 (もしくは 1024 以下の他のポート)
である場合は、Apache を起動するためには root
権限が必要になりますが、
これはこの特権ポートにバインドするためです。
起動して、一度ログファイルを開くといった準備のための
動作を幾つか実行した後は、クライアントからのリクエストに対する
listen と応答を実際に行う子プロセスを起動します。
メインの httpd
プロセスは root 権限で走り続けますが、
子プロセスはもっと低い権限で走ります。
これは選択したマルチプロセッシングモジュールで制御されます。
推奨の httpd
実行プログラムの起動方法は、
apachectl
制御スクリプトを使用する方法です。このスクリプトは、httpd
がオペレーティングシステム上で正常に動作するように必要な環境変数を
適切に設定して、httpd
バイナリを起動します。
apachectl
はどんなコマンドライン引数も通過させますので、
httpd
のどのコマンドラインオプションも
apachectl
のオプションとして使用できます。
また、apachectl
スクリプトを直接編集し、
スクリプト先頭付近の HTTPD
変数を変更することで、
httpd
バイナリの正しい位置を指定したり、常に
付加させるコマンドライン引数を指定したりすることができます。
httpd
が起動されてまず最初にすることは、
設定ファイル
httpd.conf
の位置を特定して読み込むことです。
このファイルの位置はコンパイル時に設定されますが、実行時に
-f
コマンドラインオプションを使って
位置を指定することもできます。例えば次のようにです。
/usr/local/apache2/bin/apachectl -f
/usr/local/apache2/conf/httpd.conf
スタートアップが万事上手くいったら、サーバはターミナルから
切り離されて、コマンドプロンプトが即座に戻ってくるでしょう。
これはサーバが起動している状態を示しています。
その後はブラウザでサーバに接続して、
DocumentRoot
ディレクトリのテストページを見ることができるでしょう。
起動時のエラー
Apache は、起動時に致命的な問題に遭遇すると、
終了する前に、コンソールか
ErrorLog
のどちらかに問題を記述したメッセージを出力します。
最もよくあるエラーメッセージは
「Unable to bind to Port ...
」
です。このメッセージは普通は次のどちらかが原因です。
- root でログインしていない時に、 特権ポートでサーバを起動しようとした。
- 同じポートに既にバインドされている Apache がもう一つあるときや他のウェブサーバが存在している時に、 サーバを開始しようとした。
より多くの問題解決の方策の説明は、 Apache FAQ をご覧下さい。
ブート時の起動
システムがリブートした後でも
サーバが実行され続けるようにしたい場合は、
apachectl
を呼び出すものをシステムスタートアップファイル
(通常 rc.local
や rc.N
内のファイル) に追加しなければなりません。
この方法では Apache を root 権限で起動します。
これをする前に、セキュリティやアクセス制限が
適切に設定されていていることを確認してください。
apachectl
スクリプトは通常は、標準的な SysV init
スクリプトとして動作するように設計されています。
start
, restart
, stop
といった引数をとって、httpd
への適切なシグナルに変換します。
ですから、通常は単に適切な init ディレクトリ内から
apachectl
へリンクすることができます。しかし、
念のためシステムの要求に合致していることを確認してください。