先日インストールが無事終わり、使えるようになったApache2.4.3。
この後、こんなにハマるとは予想だにしていませんでした。
思えばヒントは2.2から.2.4の変更点に書いてありました。
●汎用表現パーサー
新しい表現パーサーでは、SetEnvIfExpr、RewriteCond、ヘッダー、などのようなディレクティブで共通の構文を使用して複雑な条件を指定できます。
いつもの設定なので、サクサクバーチャルホストの設定を行います。
まずはドキュメントルート用のディレクトリを作って、
index.htmlをコピーします。
続いて設定ファイルの変更。
保存して、Apacheを再起動。
Apacheのページを見てみると、なんとディレクティブが変わっていました。
は、2.4系では次のように書かないといけないらしい。
変更して、再起動したところ無事It works!のページが表示されました。
まさか、こんなよく使っていたディレクティブが変更されているとは思いませんでした。
今回はこの変更に悩まされましたが、ほかにもいくつか変わっているみたいです。
MaxRequestsPerChild → MaxConnectionsPerChild
MaxClients → MaxRequestWorkers
そしてFileETagはデフォルトでINodeを参照しないように変わっています。
Apache2.4.x系の変更点
http://httpd.apache.org/docs/2.4/upgrading.html
わかりやすく変わること自体はいいことだと思いますが、
configtestの時に変わったよって教えてくれればいいのにと思ってしまいました。
ちなみに疑って書いたNameVirtualHostはいらないよって教えてくれました。
要らないのはエラー出さなくてもあまり影響ありませんが、
設定しているのに効かないのはしっかりエラー出してほしいです。
どうもチェックが中途半端な気がします。
この後、こんなにハマるとは予想だにしていませんでした。
思えばヒントは2.2から.2.4の変更点に書いてありました。
●汎用表現パーサー
新しい表現パーサーでは、SetEnvIfExpr、RewriteCond、ヘッダー、などのようなディレクティブで共通の構文を使用して複雑な条件を指定できます。
バーチャルホストの設定
いつもの設定なので、サクサクバーチャルホストの設定を行います。
まずはドキュメントルート用のディレクトリを作って、
index.htmlをコピーします。
続いて設定ファイルの変更。
# cd /usr/local/apache2/conf/
# vi extra/httpd-vhosts.conf
<VirtualHost *:80>
DocumentRoot (ドキュメントルートのパス)
ServerName (ドメイン)
ServerAlias www.(ドメイン)
ErrorLog "logs/(ドメイン)-error_log"
CustomLog "logs/(ドメイン)-access_log" common
<Directory "(ドキュメントルートのパス)">
Order Allow, Deny
Allow from all
</Directory>
</VirtualHost>
# vi extra/httpd-vhosts.conf
<VirtualHost *:80>
DocumentRoot (ドキュメントルートのパス)
ServerName (ドメイン)
ServerAlias www.(ドメイン)
ErrorLog "logs/(ドメイン)-error_log"
CustomLog "logs/(ドメイン)-access_log" common
<Directory "(ドキュメントルートのパス)">
Order Allow, Deny
Allow from all
</Directory>
</VirtualHost>
保存して、Apacheを再起動。
# /usr/local/apache2/bin/apachectl configtest
# /usr/local/apache2/bin/apachectl restart
# /usr/local/apache2/bin/apachectl restart
設定したバーチャルホストがForbidden!
これで設定できているはず。
とアクセスするとForbiddenのページが表示されます。
今指定したばかりのエラーログを見ると、
とのこと。
ディレクティブの場所を間違えたかなと、確認してみましたが合っています。
他にも追加したのですが、そちらもアクセスできません。
DNSの設定も疑ってみましたが、こちらもきちんと設定されています。
そもそもhostsファイルに書き込みしてるから問題ない。
とアクセスするとForbiddenのページが表示されます。
今指定したばかりのエラーログを見ると、
AH01630: client denied by server configuration
とのこと。
ディレクティブの場所を間違えたかなと、確認してみましたが合っています。
他にも追加したのですが、そちらもアクセスできません。
DNSの設定も疑ってみましたが、こちらもきちんと設定されています。
そもそもhostsファイルに書き込みしてるから問題ない。
2.6からディレクティブが変更されていた!
Apacheのページを見てみると、なんとディレクティブが変わっていました。
<Directory "(ドキュメントルートのパス)">
Order Allow, Deny
Allow from all
</Directory>
Order Allow, Deny
Allow from all
</Directory>
は、2.4系では次のように書かないといけないらしい。
<Directory "/www/www/htdocs">
Require all granted
</Directory>
Require all granted
</Directory>
変更して、再起動したところ無事It works!のページが表示されました。
まさか、こんなよく使っていたディレクティブが変更されているとは思いませんでした。
今回はこの変更に悩まされましたが、ほかにもいくつか変わっているみたいです。
MaxRequestsPerChild → MaxConnectionsPerChild
MaxClients → MaxRequestWorkers
そしてFileETagはデフォルトでINodeを参照しないように変わっています。
Apache2.4.x系の変更点
http://httpd.apache.org/docs/2.4/upgrading.html
わかりやすく変わること自体はいいことだと思いますが、
configtestの時に変わったよって教えてくれればいいのにと思ってしまいました。
ちなみに疑って書いたNameVirtualHostはいらないよって教えてくれました。
要らないのはエラー出さなくてもあまり影響ありませんが、
設定しているのに効かないのはしっかりエラー出してほしいです。
どうもチェックが中途半端な気がします。