KennyQiのPHPメモと息抜きブログ

KennyQi(ケニーチー)のブログへようこそ
Web制作 PHP開発のメモと息抜きブログ
ウェブ開発・デザイン・Nucleusのメモや旅日記などを綴っています
Apache VirtualHostでDocumentRoot does not exist でもあるのに。。
2008年10月11日 | Linux | Posted by: kennyqi | 2971 PV
CentOS4
Apache 2.0.52

VirtualHostを設定して、
httpdを再起動すると下記のエラーが。。

DocumentRoot does not exist

VirtualHostでのDocumentRootは間違ってないし、
なんでだぁ???とかなり探しました。

ありますた。SELinux あんたが邪魔してたのね。。


たとえば、http.confを下記のように設定したとする

<ViatualHost *>
ServerName aaa.com
DocumentRoot /home/test/www
</VirtualHost>


/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
3人中、3人(100.00%)がよい記事だとと投票しています。
この記事はどうですか?
: 3
: 0

Comments
No comments yet

Add Comment