【Apache】Windows(64bit)版Apache2.4でバーチャルドメインを有効にする方法
2018/05/17
使っていたPCのHDDが逝ってしまわれたので、新マシンにApache2.4、PHP5.6、MySQL5.1という内容で開発環境を作成しました。
以前と同じく、Apacheのバーチャルドメインを有効にし複数サイトを管理する必要があるので、バーチャルホストを設定するのですが、Apache2.4で若干ハマったポイントを備忘録としてポストします。
バーチャルホスト設定
Acpahe2.4のhttpd.conf編集
インストールの状況は以前のポストからどうぞ。
今回の状態だと「httpd.conf」のパスは C:\Program Files\Apache24\conf\httpd.conf となります。
500行目あたりのコメント記号(#)を削除し、Apacheを再起動します。
1 2 |
# Virtual hosts Include conf/extra/httpd-vhosts.conf |
これでバーチャルホストがオンになってくれます。
httpd-vhosts.conf編集
バーチャルホストを起動した場合のPHPの設定ファイルは
C:\Program Files\Apache24\conf\extra にある「httpd-vhosts.conf」となるので、オリジナルをバックアップしてから編集します。
httpd-vhosts.conf には下記のコメントアウトされたサンプルがあるので、これと、これまで過去に使っていた設定を交えて編集します。
掲載されているサンプル
1 2 3 4 5 6 7 8 |
#<VirtualHost *:80> # ServerAdmin webmaster@dummy-host.example.com # DocumentRoot "${SRVROOT}/docs/dummy-host.example.com" # ServerName dummy-host.example.com # ServerAlias www.dummy-host.example.com # ErrorLog "logs/dummy-host.example.com-error.log" # CustomLog "logs/dummy-host.example.com-access.log" common #</VirtualHost> |
Apache2.2で使っていた設定
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
<VirtualHost *:80> ServerAdmin hoge@example.com DocumentRoot "E:/website_data/TG-DEVELOP/toogie/www/tg-develop" ServerName tg-develop.lh ServerAlias tg-develop.lh ErrorLog "| bin/rotatelogs E:/website_data/TG-DEVELOP/toogie/logs/tg-develop.lh-error_%Y%m.log 86400" CustomLog "| bin/rotatelogs E:/website_data/TG-DEVELOP/toogie/logs/tg-develop.lh-access_%Y%m.log 86400" combined <Directory "E:/website_data/TG-DEVELOP/toogie/www/tg-develop"> Options FollowSymLinks AllowOverride All Order allow,deny Allow from all </Directory> </VirtualHost> |
例として、最初のテストなので適当に以下のようなURLとドキュメントルートで作成します。
ドキュメントルート : I:\website_data\FIRSTTEST\firsttest\public_html
PHPをインストールした(C)ドライブではなく、データ用の(I)ドライブで管理展開していくので、ドキュメントルートなどのパスは(多少面倒ですが)フルパスで設定していくことにします。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<VirtualHost *:80> ServerAdmin hoge@example.com DocumentRoot "I:/website_data/FIRSTTEST/firsttest/public_html" ServerName firsttest.lh ServerAlias firsttest.lh ErrorLog "logs/firsttest.lh-error.log" CustomLog "logs/firsttest.lh-access.log" common <Directory "I:\website_data\FIRSTTEST\firsttest\public_html"> AllowOverride All Order allow,deny Allow from all </Directory> </VirtualHost> |
上記のように記述。
"Directory" から始まるブロック(ディレクティブ)を追記します。
あと、この設定だとエラーログ及びアクセスログは、C:\Program Files\Apache24\logs 以下に延々と同じファイルで作成されてしまいますが、まずは起動テストが先なので細かいところは無視して進めます。
hostsファイルの編集
次に「hosts」ファイルの設定を行います。
C:\Windows\System32\drivers\etc にある「hosts」ファイルをメモ帳や秀丸などのエディタで編集します。
管理者権限が必要になる場合もあるので、管理者として実行すると幸せになれるかもしれません。
1 |
127.0.0.1 firsttest.lh |
超カンタンなテスト用のHTML、PHPテスト用のファイルも作成。
index.html
1 2 3 4 5 6 7 8 |
<html> <head> <title>firsttest.lh</title> </head> <body> firsttest.lh </body> </html> |
info.php
1 2 3 |
<?php phpinfo(); ?> |
これをドキュメントルート(I:/website_data/FIRSTTEST/firsttest/public_html)に配置。
アクセス許可の設定
起動テスト
Apacheを再起動し、起動テストします。
さぁこい。
↑ 403 Forbidden。なんでやねん。
アクセス許可設定の記述方法
エラーログ(C:\Program Files\Apache24\logs\firsttest.lh-error.log)を見ると以下の通り。
よくわからないのでエラーメッセージを頼りにググります。
どうやら、Apache2.4系では Directory 部分の書き方がApache2.2系とは変わっているとのこと。
以下のように書く必要があるようです。
なるほどですね。
1 2 3 |
<Directory "I:\website_data\FIRSTTEST\firsttest\public_html"> Require all granted #←★ここ! </Directory> |
↑ 無事にバーチャルホストで動きました。
.htaccessを有効にする
もうひとつ大事なこと。
CakePHPでサイトを運用することが大前提なので、必ず.htaccess を有効にする必要があります。
ここでもう一行追加して、.htaccess を使えるようにもします。
1 2 3 4 |
<Directory "I:\website_data\FIRSTTEST\firsttest\public_html"> AllowOverride All #←★ここ! Require all granted </Directory> |
以上で幸せになれます。
ログローテーションする
前述しましたが、この設定だとエラーログ及びアクセスログは、C:\Program Files\Apache24\logs 以下に延々と同じファイルで作成されてしまうので、以前使っていた設定通り、月替りでログローテーションするよう変更します。
ついでにログのパスをフルパスにして、ドキュメントルート近くのlogsディレクトリに作成保存するようにもします。
最終的には以下のように記述。
1 2 3 4 5 6 7 8 9 10 11 12 |
<VirtualHost *:80> ServerAdmin toogiesaka@gmail.com DocumentRoot "I:/website_data/FIRSTTEST/firsttest/public_html" ServerName firsttest.lh ServerAlias firsttest.lh ErrorLog "| bin/rotatelogs.exe I:/website_data/FIRSTTEST/firsttest/logs/firsttest.lh-error_%Y%m.log 86400" CustomLog "| bin/rotatelogs.exe I:/website_data/FIRSTTEST/firsttest/logs/firsttest.lh-access_%Y%m.log 86400" combined <Directory "I:\website_data\FIRSTTEST\firsttest\public_html"> AllowOverride All Require all granted </Directory> </VirtualHost> |
↑ ログも指定通りにキタ!
ローテーション部分ではどこが変わったかといえば、rotatelogs に「.exe」の拡張子が必要になったようです。
これがわからなくて少しハマってしまいました…。
バージョンが変わるとこういう事に陥るのですよね。
ふぅ、やれやれ。
Apacheが起動しない場合のWindowsのログ
最後に、Apacheが起動しない場合のWindowsのシステムイベントログの確認方法。
ApacheMonitor.exe からではいまいち何が起こっているのか分からないので、Apacheが起動しない場合は[サービス]ウィンドウから起動・再起動すると、このようなウィンドウが開いて「ログを確認しなはれ」という喚起をしてくれます。
サービスウィンドウは[コントロールパネル] → [管理ツール] → [サービス] をたどり、登録されていれば、Apache2.4という項目があると思います。
システムイベントログ
[コントロール パネル] → [管理ツール] → [イベント ビューアー]をダブルクリックして開き、
左フレームの「Windowsログ」 → 「システム」から確認することが出来ます。
これで、多少の手がかりにはなりそうです。
…なってるか?