Подтвердить что ты не робот

Apache говорит, что мой каталог DocumentRoot не существует

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

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

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

/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 принадлежат всем пользователям развертывания.

4b9b3361

Ответ 1

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

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

Ответ 2

Вместо отключения 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/

Ответ 3

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

Ответ 4

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

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

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

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

[[email protected] user]# semanage fcontext -a -t public_content_rw_t '/home/user(/.*)?'
[[email protected] user]# restorecon -R /home/user