page_adsence

2010年6月5日土曜日

apacheでVirtualHost作ったら403 Forbidden

ApacheでVirtualHostを作ってサイトを作ろうと思ったらVirtualHostの設定を書いたらForbiddenになるという現象にあった。

httpd.confはVirtualHostの記述以外はほぼ初期状態で変更した部分は以下の通り。
・DocumentRootは/var/www/html
・ServerNameはコメントアウトしたまま
・Directory関連の記述もそのまま
・IPでアクセスする時に/var/www/htmlが参照される状態

#NameVirtualHost *:80 → NameVirtualHost *:80

以下を追記

<VirtualHost *:80>
ServerAdmin admin@mailaddress.co.jp
DocumentRoot /home/linux_user/sites/sitename/web
ServerName dummy.servername.co.jp
ErrorLog /home/linux_user/sites/sitename/log/error_log
CustomLog /home/linux_user/sites/sitename/log/access_log common
</VirtualHost>
<Directory /path/to/document_root>
AllowOverride All
Order allow,deny
Allow from all
</Directory>


で、再読み込み

# /etc/rc.d/init.d/httpd reload

するとdummy.servername.co.jpにアクセスしてもIPでアクセスしてもForbiddenがでるようになってしまった。
VirtualHostの設定を削除し、IPでアクセスするとまた見れるようになる。
いろいろ調べてみたがSELinuxも切ってあるし、ファイルのパーミッションも問題なさげ。
apacheのOrderの記述も問題ない。
とりあえず原因の切り分けのために、httpd.confのDocumentRootを書き換えてみた。
するとForbidden・・・。
ということはファイルのパーミッションかということで確認してみると、
VirtualHost設定内に書かれているlinux_userのとこ(今回の場合は自分のホームディレクトリ)のパーミッションが700になっていた。
ここを755に修正して再度確認すると問題なかった。
その後にもう一度VirtualHostの設定をすると、問題なく表示された。