apache говорит, что мой каталог DocumentRoot не существует - PullRequest
13 голосов
/ 16 октября 2010

Я использую Phusion Passenger для развертывания приложения rails с использованием apache2 в CentOS 5.5. По какой-то причине я продолжаю получать это сообщение при запуске apache:

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

Каталог наверняка существует. Вот несколько важных файлов из моей конфигурации:

/ и т.д. / HTTPD / CONF / httpd.conf
...
Пользователь развертывает
Групповое развертывание
...

/ и т.д. / HTTPD / conf.d / my_app.conf <br> < VirtualHost *:80><br> ServerName my_app.com<br> DocumentRoot /home/deploy/my_app/public<br> < Directory /home/deploy/my_app/public><br> Allow from all<br> Options -MultiViews<br> < /Directory><br> < /VirtualHost>

Каталоги / home / deploy, / home / deploy / my_app и / home / deploy / my_app / public - все принадлежат пользователю развертывания.

Ответы [ 4 ]

17 голосов
/ 21 января 2011

Я тоже столкнулся с этой проблемой. Вы используете SELinux? Проверьте / etc / sysconfig / selinux или попробуйте echo "0" >/selinux/enforce от имени пользователя root, чтобы увидеть, помогает ли его отключение.

Если это так, вы можете либо изменить политику selinux, чтобы разрешить доступ к этим файлам, либо вообще отключить selinux.

2 голосов
/ 11 ноября 2013

Вместо того, чтобы выключать SELinux, вы сможете довольно легко решить проблему с контекстом.

Вы можете проверить текущие контексты вашего каталога public с помощью следующей команды.

ls -Z /home/deploy/my_app/

Если на вашем сервере работает другой путь (например, / home / deploy / foo / bar /), проверьте его с помощью той же команды и сравните с предыдущими результатами.

ls -Z /home/deploy/foo/

Исправление: Затем вы можете просто скопировать контекст из рабочего каталога, как это ...

chcon /home/deploy/my_app/public/ --reference=/home/deploy/foo/bar/
0 голосов
/ 12 марта 2014

У меня была такая же проблема, и я нашел ее:

https://www.centos.org/forums/viewtopic.php?t=1742#p9988

Использование инструмента semanage не так сложно, и, насколько я могу судить, это как SELinuxдолжен быть использован.Я считаю, что это безопаснее, чем отключить его полностью.

пример из предоставленной ссылки:

[root@elite user]# semanage fcontext -a -t public_content_rw_t '/home/user(/.*)?'
[root@elite user]# restorecon -R /home/user
0 голосов
/ 18 мая 2012

Пожалуйста, проверьте, имеет ли файл /etc/sysconfig/selinux право на выполнение.Если нет, предоставьте привилегию на выполнение привилегий, перезапустите веб-сервер и попробуйте снова перейти на страницу

...