2010-10-16 100 views
12

我正在使用Phusion Passenger在CentOS 5.5上使用apache2部署rails應用程序。apache說我的DocumentRoot目錄不存在

> service start httpd
Starting httpd: Warning: DocumentRoot [/home/deploy/my_app/public] does not exist
[ OK ]

目錄肯定是存在的:由於某些原因,當我啓動Apache的我不斷收到此消息。下面是我的配置一些重要的文件:

/etc/httpd/conf/httpd.conf中
...
用戶部署
集團部署
...

的/ etc/httpd的/ conf.d/my_app.conf
< VirtualHost *:80>
    ServerName my_app.com
    DocumentRoot /home/deploy/my_app/public
    < Directory /home/deploy/my_app/public>
        Allow from all
        Options -MultiViews
    < /Directory>
< /VirtualHost>

目錄/ home/deploy,/ home/deploy/my_app和/ home/deploy/my_app/public都屬於deploy用戶。

+0

什麼是對目錄的權限?我不是專家,但是首先想到的是,即使你已經在httpd.conf中命名了正確的用戶,它不一定是*那個用來檢查目錄是否存在的用戶... – vonconrad 2010-10-16 11:57:41

+0

我設置了一切都是rwxrwxrwx或rwxrw-rw-。根擁有/ home並部署擁有/ home/deploy/my_app/public路徑中的所有內容。謝謝,不過。 – muirbot 2010-10-17 23:59:30

回答

16

我也遇到了這個問題。你在運行SELinux嗎?檢查/ etc/sysconfig/selinux,或者以root身份嘗試echo "0" >/selinux/enforce以查看禁用它是否有幫助。

如果是這樣,您可以修改您的selinux策略以允許訪問這些文件,或者完全禁用selinux。

+2

我遇到了與@ muirbot相同的問題,並且此解決方案沒有幫助。 – Randell 2011-06-06 03:05:04

+0

相同。使用臨時的'setenforce 0'工程,但永久的解決方案沒有。有任何想法嗎? – 2012-09-25 23:33:57

+0

感謝您的解決方案。不確定這是永久性的解決方案 – RAJ 2015-01-30 11:06:32

0

請檢查/etc/sysconfig/selinux文件是否執行privilage。如果不是,則授予執行權限,重新啓動Web服務器,然後再次嘗試訪問頁面

2

而不是關閉SELinux,您應該能夠相當容易地解決上下文問題。

您可以使用以下命令檢查public目錄的當前上下文。

ls -Z /home/deploy/my_app/ 

如果您的服務器在工作(例如:/家庭/部署/富/酒吧/)上的不同路徑,檢查它使用相同的命令,並與先前的結果進行比較。

ls -Z /home/deploy/foo/ 

解決方法:然後,您可以僅從這樣的工作目錄複製背景...

chcon /home/deploy/my_app/public/ --reference=/home/deploy/foo/bar/