-
10月112008
Apache VirtualHostでDocumentRoot does not exist でもあるのに。。
No CommentsCentOS4
Apache 2.0.52
VirtualHostを設定して、
httpdを再起動すると下記のエラーが。。
DocumentRoot does not exist
VirtualHostでのDocumentRootは間違ってないし、
なんでだぁ???とかなり探しました。
ありますた。SELinux あんたが邪魔してたのね。。
たとえば、http.confを下記のように設定したとするServerName aaa.com DocumentRoot /home/test/www で
/home/test/www ディレクトリを作成して
普通はhttpdを再起動すればOKなんですけど、
Forbiddenとなってみれない。。
ここでよくあるミスが、testユーザを作ったときに
/home/testのパーミッションが700になってる場合。
これだとtestの中を見る許可がないのでForbiddenになる。
でも、今回はこれを755とか適切なパーミッションにしてるのにおきるForbidden。。
なんでだ~?と悩んだ末、辿り着いた答えが、SELinux。
SELinuxはセキュリティーポリシーを「タイプ」と呼ばれるラベルで管理してるので
それが適切でないとForbiddenとなってウェブからみることができません。$ ls -lZ
をすると、ラベルがあることがわかります。
これがhttpで見れるラベルになってないと、Forbiddenになるようです。
私の場合、このラベルを変更してやってみたんですけど、
なんかうまく動かなかったので、結局SELinuxを無効にすることにしました。
SELinuxを無効にするには、rootで# setenforce 0
とするとOK
SELinuxが有効か無効かを確認するには# getenforce
とする。
Enforcing が出たら、有効。
Permissive が出たら、無効。
サーバー起動時にSELinuxが有効にならないようにするには
SELinuxの設定ファイルを編集します。# vi /etc/sysconfig/selinux
SELINUX=enforcing
↓
SELINUX=disabled
これで起動時にSELinuxが無効になります。
サーバをリブートしてみてください。
参考サイト Thanks!http://www.selinux.gr.jp/documents/FC3-SELinuxmemo.html#2-1
http://home-mg.que.ne.jp/200801.html





