У меня проблема с настройкой виртуального хоста на Apache 2.4 с использованием CentOS 6.3.
На этот вопрос, кажется, уже несколько раз отвечали на этом форуме, но ни одно из решений у меня не работает.
По сути, я установил виртуальный хост с определенным корнем документа. Когда я пытаюсь получить доступ к сайту, я получаю ошибку разрешений. Но у меня нет проблем, если я использую другой рут.
В частности, если я установил корневой каталог как / volume1 / web / xxx, я получу 503 из-за проблемы с разрешением на index.html.
Но если я установлю его как / volume1 / web, index.html появится без проблем.
Детали:
В 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 / xxx, то я получаю ошибку 503, а в журнале ошибок apache есть такая строка:
[Чт, 19 июля, 17:17:52 2012] [ошибка] [client :: 1] (13) В доступе отказано: доступ к /index.html запрещен
Я также попытался добавить в каталог файл index.php. Затем я получил сообщения об отказе в разрешении как для файла php, так и для файла html.
Я также попытался настроить user: group на apache: apache для каталогов и файлов. Это не помогло.
Я сделал все, что мог, чтобы исправить разрешения, но безрезультатно.
Кто-нибудь имеет представление о том, что здесь происходит?
Спасибо.
Похоже, вы создали новый каталог вне стандартной иерархии файловой системы для хранения ваших веб-документов.
Когда вы это делаете, 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
и повторная попытка.
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;