Apache HTTP サーバ バージョン 2.4

Apache > HTTP サーバ > ドキュメンテーション > バージョン 2.4

# Apache の起動

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

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

### 参照

- 停止と再起動
- `httpd`
- `apachectl`

## 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` へリンクすることができます。しかし、 念のためシステムの要求に合致していることを確認してください。

## 追加情報

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