Apache HTTP Server 2.4 のインストールと設定(Windows)
ダウンロード
- Apache公式Webサイトにアクセスする。
- ダウンロードページへ移動する。
左側のフレームにある「Download!」セクション内の「from a mirror」を選択する。
- 該当セクションを確認する。
表示されたページを下方向にスクロールし、「Apache HTTP Server ... the latest available version」のセクションを確認する。
- 「Files for Microsoft Windows」を選択する。
- 「ApacheHaus」を選択する。
- 適切なバージョンを選択し、ダウンロードする。
インストール
- ダウンロードしたZIPファイルを展開する。
Windowsでのファイル展開には7-Zipが便利である。詳細は別ページ »を参照。
- readme_first.htmlを確認する。
readme_first.htmlファイル内の「Notice」セクションを確認する。内容に同意できる場合のみ、インストールを続行する。
- Apache24ディレクトリを配置する。
展開した「Apache24」ディレクトリをC:\直下に移動する。C:\Apache24ディレクトリが作成される。
- 環境変数PATHを設定する。
Windowsキー + I → システム → 詳細情報 → システムの詳細設定 → 環境変数と進み、システム環境変数のPATHに以下を追加する。
C:\Apache24\bin - サービスをインストールし、起動する。
スタートメニューで「cmd」と入力し、「管理者として実行」を選択してコマンドプロンプトを起動する。次のコマンドを実行する。
httpd -k install httpd -k start
「Windowsセキュリティの警告」または「スマートスクリーン」が表示された場合は、「詳細情報」→「実行」を選択する。
基本設定(httpd.conf)
C:\Apache24\conf\httpd.confをテキストエディタで開く。管理者権限が必要なため、テキストエディタを「管理者として実行」してから開くこと。
- ServerRootの確認(変更不要)
Define SRVROOT "/Apache24" ServerRoot "${SRVROOT}"
- ServerNameの設定
コメント記号(#)を削除し、以下のように設定する。
【変更前】 #ServerName www.example.com:80 【変更後】 ServerName localhost:80 - ServerAdminの設定(任意)
ServerAdmin admin@example.com - DocumentRootの確認
Webコンテンツを配置するディレクトリを指定する。既定値は以下の通りである。
DocumentRoot "${SRVROOT}/htdocs"
動作確認
Webブラウザでhttp://localhost/にアクセスする。
「It Works!」というメッセージが表示されれば、Apache HTTP Serverは正常に動作している。
トラブルシューティング
ポート80が使用中の場合
コマンドプロンプトで以下を実行し、ポート80を使用しているプロセスを確認する。
netstat -ano | findstr :80
tasklist | findstr "プロセスID"
IISとの競合
IIS(Internet Information Services)がポート80を使用している場合、httpd.confのListen設定を変更する。
Listen 8080
この場合、動作確認は http://localhost:8080/ で行う。
サービスが起動しない場合
Windowsの「サービス」からApache2.4の状態を確認する。
- Windowsキー + R → services.mscを実行
- Apache2.4を探し、プロパティで「スタートアップの種類」を「自動」に設定
- 「開始」をクリック
セキュリティ設定
本番環境で運用する場合、以下のセキュリティ設定をhttpd.confに追加する。
# サーバ情報の隠蔽
ServerTokens Prod
ServerSignature Off
TraceEnable Off
# ディレクトリ一覧の無効化
Options -Indexes
# シンボリックリンクの制限
Options -FollowSymLinks
# .htaccessによる設定変更の制限
AllowOverride None
# アクセス制限
<Directory />
Require all denied
</Directory>
<Directory "${SRVROOT}/htdocs">
Require all granted
</Directory>
各設定の意味は以下の通りである。
- ServerTokens Prod:エラーページ等に表示されるサーバ情報を最小限にする
- ServerSignature Off:サーバが生成するページにバージョン情報を表示しない
- TraceEnable Off:TRACEメソッドを無効化し、クロスサイトトレーシング攻撃を防止する
パフォーマンス設定
高負荷環境で運用する場合、以下の設定をhttpd.confに追加する。
- KeepAlive設定
HTTPの持続的接続を有効にし、接続のオーバーヘッドを削減する。
KeepAlive On KeepAliveTimeout 5 MaxKeepAliveRequests 100 - スレッド数の設定
Windows版ApacheはMPM(Multi-Processing Module)としてmpm_winntを使用する。ThreadsPerChildで同時接続数の上限を設定する。
<IfModule mpm_winnt_module> ThreadsPerChild 150 MaxConnectionsPerChild 10000 </IfModule>ThreadsPerChildの既定値は150である。同時接続数が多い環境では、この値を増加させる。
設定変更後、Apache HTTP Serverを再起動する。
httpd -k restart
ファイアウォールとログの管理
- Windows Defenderファイアウォールでの通信許可
- Windowsセキュリティ → ファイアウォールとネットワーク保護 → 詳細設定
- 受信の規則 → 新しい規則 → ポート → TCP → 特定のローカルポート:80
- 接続を許可する → 適切なプロファイルを選択 → 名前:Apache HTTP Server
- ログの監視
- アクセスログ:C:\Apache24\logs\access.log
- エラーログ:C:\Apache24\logs\error.log
- セキュリティ更新の確認
- Apache公式サイトでセキュリティアップデートを定期的に確認する
CGIの設定
- PHPをインストールする。
Windows環境でのPHPインストール手順は別ページ »を参照。
- Perlをインストールする。
Windows環境でのStrawberry Perlインストール手順は別ページ »を参照。
- printenv.plの先頭行を修正する。
C:\Apache24\cgi-bin\printenv.plファイルの先頭行を、perl.exeの実際のパスに合わせて修正する。
#!C:/Strawberry/perl/bin/perl.exe - httpd.confでCGIを有効にする。
C:\Apache24\conf\httpd.confに以下の設定を行う。
- cgi-binディレクトリの設定
【変更前】 <Directory "${SRVROOT}/cgi-bin"> AllowOverride None Options None Require all granted </Directory> 【変更後】 <Directory "${SRVROOT}/cgi-bin"> AllowOverride None Options ExecCGI Require all granted </Directory>
- CGIハンドラの設定
AddHandler cgi-script .cgi .pl
- PHPモジュールの読み込み
PHPのバージョンとインストールパスに合わせて設定する。
LoadModule php_module C:/php/php8apache2_4.dll
- PHPファイルの関連付け
AddType application/x-httpd-php .php AddType application/x-httpd-php-source .phps - DirectoryIndexの設定
【変更前】 DirectoryIndex index.html 【変更後】 DirectoryIndex index.html index.phpこの設定により、ディレクトリにアクセスした際にindex.phpも自動的に読み込まれる。phpMyAdmin等の動作に必要である。
- cgi-binディレクトリの設定
- Apache HTTP Serverを再起動する。
httpd -k restart