Apache の起動 - Apache HTTP サーバ バージョン 2.4

Apache Server 2.4

<-

Apache の起動

Windows 上では、Apache は通常はサービスとして実行されます。 詳細に関しては、「 サービスとして実行する」をご覧下さい。

Unixでは、httpd プログラムが、バックグラウンドで常にリクエスト処理を行う デーモンとして実行されます。この文書ではどのように httpd を起動するかについて記述しています。

top

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 ディレクトリのテストページを見ることができるでしょう。

top

起動時のエラー

Apache は、起動時に致命的な問題に遭遇すると、 終了する前に、コンソールか ErrorLog のどちらかに問題を記述したメッセージを出力します。 最もよくあるエラーメッセージは 「Unable to bind to Port ...」 です。このメッセージは普通は次のどちらかが原因です。

  • root でログインしていない時に、 特権ポートでサーバを起動しようとした。
  • 同じポートに既にバインドされている Apache がもう一つあるときや他のウェブサーバが存在している時に、 サーバを開始しようとした。

より多くの問題解決の方策の説明は、 Apache FAQ をご覧下さい。

top

ブート時の起動

システムがリブートした後でも サーバが実行され続けるようにしたい場合は、 apachectl を呼び出すものをシステムスタートアップファイル (通常 rc.localrc.N 内のファイル) に追加しなければなりません。 この方法では Apache を root 権限で起動します。 これをする前に、セキュリティやアクセス制限が 適切に設定されていていることを確認してください。

apachectl スクリプトは通常は、標準的な SysV init スクリプトとして動作するように設計されています。 start, restart, stop といった引数をとって、httpd への適切なシグナルに変換します。 ですから、通常は単に適切な init ディレクトリ内から apachectl へリンクすることができます。しかし、 念のためシステムの要求に合致していることを確認してください。

top

追加情報

httpdapachectl、サーバに含まれていたその他補助プログラムの、 コマンドラインオプションに関する追加情報は、 サーバと補助プログラムページに 記載されています。 Apache 配布に含まれている全モジュール、 それによって提供されるディレクティブ のドキュメントもあります。