### Apache HTTP Server

# Apache の開始

- Apache を Windows で開始する
- Apache を Unix で開始する
  - 開始時のエラー
  - ブート時の開始
  - 追加の情報

## Apache を Windows で開始する

Windows 上では、Apache は通常、 Windows NT, 2000, XP ではサービスとして、Windows 95, ME ではコンソールアプリケーションとして実行されます。このことは、 Cygwin プラットフォームについては完全にはあてはまりません。 詳細は Windows 用の Apache を実行する を見てください。

## Apache を Unix で開始する

Unix では httpd プログラムはバックグラウンドで継続的に動作してリクエストを処理する デーモンとして実行されます。Apache は ServerType ディレクティブによってHTTP サービスへの接続のたびに インターネットデーモン `inetd` から起動する事も 可能ですがこれは推奨されません。

もし設定ファイルで指定したポートが デフォルトの 80 (もしくは 1024 未満のポートのどれか) であるなら、 この特権ポートにバインドできるように、Apache の起動には root 権限が必要です。サーバが、ログファイルを開くなどいくつか準備の動作を終えると、 待ち受けてクライアントのリクエストに応答する子プロセスをいくつか スタートします。メインの `httpd` プロセスは root ユーザとして動き続けますが、子プロセスはより低い権限のユーザとして動きます。 これは Apache のプロセス生成ディレクティブ により制御されます。

`httpd` の起動時に最初にすることは設定ファイル `httpd.conf` を見つけて読み込むことです。このファイルの位置はコンパイル時に設定されますが、 コマンドラインオプション `-f` を使って実行時に その位置を指定することが可能です。

> `/usr/local/apache/bin/httpd -f /usr/local/apache/conf/httpd.conf`

`httpd` バイナリを直接起動する代わりに apachectl と呼ばれるシェルスクリプトを使うことも出来ます。これによりデーモンプロセスを `apachectl start` や `apachectl stop` などの簡単なコマンドによって制御することができます。

開始の段階がすべてうまく行けば、サーバはターミナルを切り離し、 コマンドプロンプトがほぼ一瞬で戻って来ます。これは、 サーバが動作していることを示しています。その後で、ブラウザを使用して サーバに接続し、DocumentRoot ディレクトリのテストページやそのページからリンクされた文書の ローカルコピーを見ることができます。

### 開始時のエラー

もし Apache が開始時に致命的な問題に遭うと、 終了する前に問題を説明するメッセージをコンソールまたは ErrorLog に書きだします。 最もよくあるエラーメッセージの一つは "`Unable to bind to Port ...`" です。このメッセージは通常これらの原因があります:

- root ユーザとしてログインしていない時に特権ポートで サーバを始めようとした;
- 他の Apache または他のウェブサーバが既に同じポートに バインドしている時にサーバを始めようとした。

トラブルシューティングの手順は、Apache FAQ を参照してください。

### ブート時の起動

システムのリブート後にもサーバを実行し続けさせたい場合は、 `httpd` または `apachectl` の呼び出しをシステムのスタートアップファイル(標準では `rc.local` または、`rc.N` ディレクトリのファイル)に追加して下さい。これは root で Apache を開始します。この設定をする前にセキュリティやアクセス制限が サーバに対して適切に設定されるようにしてください。 `apachectl` スクリプトは init スクリプトとして直接リンクできるように設計されていますが、 システムの正確な仕様を把握してから使用してください。

### 追加の情報

サーバに含まれている他のサポートプログラムと同様に httpd と apachectl のコマンドラインオプションについての追加の情報は、 サーバとサポートプログラム ページで入手可能です。Apache 配布に含まれているすべての モジュール やそれにより提供される ディレクティブ の文書もあります。

### Apache HTTP Server