KennyQi PHP Blog

Linux、PHP、Perl、Ajax、MySQLでのWeb開発やWordPressの設定メモと息抜きブログ

  • 10月112008

    Apache VirtualHostでDocumentRoot does not exist でもあるのに。。

    Published on 2008/10/11 00:04 1,914
    カテゴリ: Linux; タグ: ,

    CentOS4
    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

    このページはどうでしたか?
    よくないよい (No Ratings Yet)
    No Comments
  • 初めて当ブログに訪れた方や何度か当ブログにお越し頂いている皆様。
    もしブログの内容を気に入って頂けましたらRSSリーダーの登録よろしくお願いします。

コメント


ブログランキング

にほんブログ村 IT技術ブログへ 人気ブログランキングへ

最新記事

カテゴリー

人気記事