
【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を再起動します。
[default]
# Virtual hosts
Include conf/extra/httpd-vhosts.conf
[/default]
これでバーチャルホストがオンになってくれます。
httpd-vhosts.conf編集
バーチャルホストを起動した場合のPHPの設定ファイルは
C:\Program Files\Apache24\conf\extra にある「httpd-vhosts.conf」となるので、オリジナルをバックアップしてから編集します。
httpd-vhosts.conf には下記のコメントアウトされたサンプルがあるので、これと、これまで過去に使っていた設定を交えて編集します。
掲載されているサンプル
[default]
#
# 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
#
[/default]
Apache2.2で使っていた設定
[default]
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
Options FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
[/default]
例として、最初のテストなので適当に以下のようなURLとドキュメントルートで作成します。
ドキュメントルート : I:\website_data\FIRSTTEST\firsttest\public_html
PHPをインストールした(C)ドライブではなく、データ用の(I)ドライブで管理展開していくので、ドキュメントルートなどのパスは(多少面倒ですが)フルパスで設定していくことにします。
[default]
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
AllowOverride All
Order allow,deny
Allow from all
[/default]
上記のように記述。
"Directory" から始まるブロック(ディレクティブ)を追記します。
あと、この設定だとエラーログ及びアクセスログは、C:\Program Files\Apache24\logs 以下に延々と同じファイルで作成されてしまいますが、まずは起動テストが先なので細かいところは無視して進めます。
hostsファイルの編集
次に「hosts」ファイルの設定を行います。
C:\Windows\System32\drivers\etc にある「hosts」ファイルをメモ帳や秀丸などのエディタで編集します。
管理者権限が必要になる場合もあるので、管理者として実行すると幸せになれるかもしれません。
[default]
127.0.0.1 firsttest.lh
[/default]
超カンタンなテスト用のHTML、PHPテスト用のファイルも作成。
index.html
[default]
firsttest.lh
[/default]
info.php
[default]
[/default]
これをドキュメントルート(I:/website_data/FIRSTTEST/firsttest/public_html)に配置。
アクセス許可の設定
起動テスト
Apacheを再起動し、起動テストします。
さぁこい。
↑ 403 Forbidden。なんでやねん。
アクセス許可設定の記述方法
エラーログ(C:\Program Files\Apache24\logs\firsttest.lh-error.log)を見ると以下の通り。
よくわからないのでエラーメッセージを頼りにググります。
どうやら、Apache2.4系では Directory 部分の書き方がApache2.2系とは変わっているとのこと。
以下のように書く必要があるようです。
なるほどですね。
[default]
Require all granted #←★ここ!
[/default]
↑ 無事にバーチャルホストで動きました。
.htaccessを有効にする
もうひとつ大事なこと。
CakePHPでサイトを運用することが大前提なので、必ず.htaccess を有効にする必要があります。
ここでもう一行追加して、.htaccess を使えるようにもします。
[default]
AllowOverride All #←★ここ!
Require all granted
[/default]
以上で幸せになれます。
ログローテーションする
前述しましたが、この設定だとエラーログ及びアクセスログは、C:\Program Files\Apache24\logs 以下に延々と同じファイルで作成されてしまうので、以前使っていた設定通り、月替りでログローテーションするよう変更します。
ついでにログのパスをフルパスにして、ドキュメントルート近くのlogsディレクトリに作成保存するようにもします。
最終的には以下のように記述。
[default]
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
AllowOverride All
Require all granted
[/default]
↑ ログも指定通りにキタ!
ローテーション部分ではどこが変わったかといえば、rotatelogs に「.exe」の拡張子が必要になったようです。
これがわからなくて少しハマってしまいました…。
バージョンが変わるとこういう事に陥るのですよね。
ふぅ、やれやれ。
Apacheが起動しない場合のWindowsのログ
最後に、Apacheが起動しない場合のWindowsのシステムイベントログの確認方法。
ApacheMonitor.exe からではいまいち何が起こっているのか分からないので、Apacheが起動しない場合は[サービス]ウィンドウから起動・再起動すると、このようなウィンドウが開いて「ログを確認しなはれ」という喚起をしてくれます。
サービスウィンドウは[コントロールパネル] → [管理ツール] → [サービス] をたどり、登録されていれば、Apache2.4という項目があると思います。
システムイベントログ
[コントロール パネル] → [管理ツール] → [イベント ビューアー]をダブルクリックして開き、
左フレームの「Windowsログ」 → 「システム」から確認することが出来ます。
これで、多少の手がかりにはなりそうです。
…なってるか?