В корне документа vhost отказано в доступе
У меня проблема с настройкой vhost на Apache 2.4, используя CentOS 6.3.
На этот вопрос, кажется, несколько раз отвечали на этом форуме, но ни одно из решений не работает для меня.
По сути, я настроил vhost с определенным корнем документа. Когда я пытаюсь получить доступ к сайту, я получаю ошибку разрешения. Но у меня нет проблем, если я использую другой рут.
Точнее говоря, если я установил для root значение /volume1/web / xxx, я получу 503 из-за проблемы с правами на index.html.
Но если я установлю его в /volume1/web, index.html появится без проблем.
Детали:
- Я установил разрешения для тома 1, веб и ххх 755.
- Я установил разрешения для файлов index.html на 777.
- Я копирую файл index.html как в /volume1/web, так и /volume1/web / xxx, чтобы они имели идентичные индексные файлы с одинаковыми разрешениями.
В httpd.conf я установил параметры VirtualHost, чтобы можно было легко переключать корень документа, изменяя 2 комментария
У меня есть следующие строки в файле Conf:
NameVirtualHost *:80
<VirtualHost *:80>
ServerName localhost
#DocumentRoot /volume1/web
DocumentRoot /volume1/web/xxx
#<Directory /volume1/web>
<Directory /volume1/web/xxx>
Options Indexes FollowSymLinks Includes ExecCGI
AllowOverride All
Order Allow,Deny
Allow from all
</Directory>
ErrorLog logs/localhost-error_log
CustomLog logs/localhost-access_log common
</VirtualHost>
Эти строки содержат все предложения, которые работали для других людей с той же проблемой.
Что я получу при вводе localhost в браузере, зависит от корня документа.
- Если корнем является /volume1/web, появится страница index.html.
если корнем является /volume1/web / xxx, то я получаю ошибку 503, и журнал ошибок apache имеет следующую строку:
[Чт. 19 июля, 17:17:52 2012] [ошибка] [клиент::1] (13) Отказано в доступе: доступ к /index.html запрещен
Я также попытался добавить файл index.php в каталог. Затем я получил сообщения об отказе в разрешении как для php-файла, так и для html-файла.
Я также попытался установить для user: group значение apache: apache для каталогов и файлов. Это не помогло.
Я сделал все, что мог придумать, чтобы исправить разрешения, но безрезультатно.
У кого-нибудь есть представление о том, что здесь происходит?
Благодарю.
3 ответа
Похоже, вы создали новый каталог вне стандартной иерархии файловой системы для хранения ваших веб-документов.
Когда вы делаете это, SELinux не знает о вашей пользовательской структуре каталогов и не знает, что Apache (httpd) должен иметь к ней доступ. Вы увидите сообщения в /var/log/audit/audit.log
показывая отказы в этом случае.
Чтобы действительно решить проблему, вы должны сообщить SELinux, что Apache может получить доступ к каталогу. Сделайте это с помощью команды semanage fcontext:
semanage fcontext -a -t httpd_sys_content_t "/volume1/web(/.*)?"
Сопоставление с образцом выполняется с помощью регулярных выражений, поэтому это будет соответствовать /volume1/web
и все под ним. Тот факт, что он использует регулярные выражения, также означает, что вам нужно заключить его в кавычки, как показано выше.
Затем перемаркируйте файлы:
restorecon -r -v /volume1/web
SELinux теперь разрешит Apache доступ к файлам в /volume1/web
,
Я покажу виноватому в SELinux. Проверьте, запустив setenforce 0
и повторная попытка.
- Desabilitar SELINUX e Reiniciar
SELINUX = отключено
SELINUXTYPE= таргетированный
#
grep ^ SELINUX / и т.д. / sysconfig / selinux
{ T=/tmp/OLD.selinux.$RANDOM$RANDOM$$ ;
cp -f /etc/sysconfig/selinux $T ;
sed -e 's@^SELINUX=.*@SELINUX=disabled@' \
-e 's@^SELINUXTYPE=.*@SELINUXTYPE=targeted@' \
< $T > /etc/sysconfig/selinux ;
} ;
xreboot;