После обновления с сервера Ubuntu 13.04 страницы www не будут отображаться.
Ошибка 403 Запрещено. У вас нет прав доступа к этому серверу.
Я изменил контроль доступа с apache2.2 на apache2.4, но это не сработало. Что еще я мог сделать?
После обновления с сервера Ubuntu 13.04 страницы www не будут отображаться.
Ошибка 403 Запрещено. У вас нет прав доступа к этому серверу.
Я изменил контроль доступа с apache2.2 на apache2.4, но это не сработало. Что еще я мог сделать?
Ответы:
Произошло то, что синтаксис файлов конфигурации в apache2.4 изменился.
Источник: это случилось со мной и после того, как я обновился до 13.10
Все файлы, которые были в /etc/apache2/conf.d
должны быть перемещены в /etc/apache2/conf-available
.
Теперь они работают так же sites
и mods
работают. Просто поместите ваши файлы conf в conf-available
папку и включите тот, который вам нужен a2enconf <config-file-name>
.
У меня был файл conf.d/httpd.conf
с директивой ServerName.
Чтобы это работало, мне пришлось переместить его в conf-available
каталог и включить его вручную.
sudo mv /etc/apache2/conf.d/httpd.conf /etc/apache2/conf-available/httpd.conf
sudo a2enconf httpd
Ранее файлы в /etc/apache2/sites-available
не имели расширения. Например /etc/apache2/sites-available/default
. Теперь требуется .conf
расширение.
Если у вас было /etc/apache2/sites-available/some-site
, в 13.04 вы можете просто включить его, используя sudo a2ensite some-site
. Теперь это даст вам ошибку, говоря
ОШИБКА: Сайт-сайт не существует!
Чтобы исправить это, добавьте .conf
ко всем вашим файлам конфигурации в sites-available
. Вы можете сделать то же самое в sites-enabled
, или вы можете удалить все файлы и повторно включить их каждый вручную.
Я рекомендую делать их вручную, так как вам, вероятно, нужно исправить каждый VHost (следующий шаг).
sudo find /etc/apache2/sites-available/ ! -iname '*.conf' -type f -exec mv '{}' '{}'.conf \;
если вы решили сделать их вручную:
sudo rm /etc/apache2/sites-enabled/*
sudo a2ensite your-site-name
Если у вас было следующее:
<Directory /path/to/your/site/>
order allow,deny
allow from all
</Directory>
Это должно стать:
<Directory /path/to/your/site/>
Require all granted
</Directory>
Для получения дополнительной информации, проверить на комментарии по DaveRandom на качестве ответа на переполнение стека.
Проще говоря, если вы обновились до apache2.4 и сохранили старую httpd.conf
версию apache2.2, директива allow должна работать нормально. Если вы обновили свою версию httpd.conf
(которую я бы предложил), вы получите 403 ошибки, пока вы не измените директивы Order
/ Allow
/ Deny
на их эквивалент Require
.
Если у вас есть параметры Справочника, обратите внимание, что все они должны начинаться с +
или -
или ни с одним из них вообще. Смешивание обоих не допускается:
Это разрешено:
<Directory /path/to/your/site/>
Options +Indexes +FollowSymLinks -MultiViews
</Directory>
Так вот (обратите внимание, что оба примера не делают одно и то же, предыдущий отключает эту MultiViews
опцию, а следующий нет):
<Directory /path/to/your/site/>
Options Indexes FollowSymLinks MultiViews
</Directory>
Это больше не разрешено:
<Directory /path/to/your/site/>
Options Indexes FollowSymLinks -MultiViews
</Directory>
Последняя опция конфигурации выдаст синтаксическую ошибку, говорящую:
Либо все Опции должны начинаться с + или -, либо никакие Опции не могут.
После того, как все сделано, вам нужно перезапустить сервер apache, чтобы изменения вступили в силу:
sudo apache2ctl restart
Вы можете найти подробное руководство по обновлению с 2.2 до 2.4 в официальной документации.
httpd.conf
был просто пример. Возможно, в conf.d
каталоге не будет никаких файлов конфигурации , в этом случае просто пропустите этот шаг. Что касается apache2.conf
, это не должно быть перемещено в conf-available
каталог. Это основной файл конфигурации apache, и его путь должен быть /etc/apache2/apache2.conf и не должен изменяться.
Я предполагаю, что веб-сайты работают на вашем сервере Ubuntu.
Проверьте ваш httpd.conf, чтобы убедиться, что настройки DocumentRoot указывают на правильное место.
Проверьте, что права доступа к папке, на которую ссылается DocumentRoot, могут быть прочитаны пользователем, от имени которого работает веб-сервер.
Убедитесь, что у вас есть соответствующий index.html / index.htm и т. Д., И что веб-сервер не пытается создать каталог.
Я столкнулся с похожими проблемами.
Я не мог заставить работать Apache 2.4, если не использовал «Allow from All», это раздражало, так как я хотел обеспечить чистый разрыв с версиями <2.4. После долгих проб и ошибок и большого поиска я обнаружил ссылку на access_compat и понял, что это было сделано только для совместимости. Хотя в документации Apache говорится, что оба могут быть использованы, рекомендуется не делать этого.
Я удалил этот модуль из загрузочного файла / etc / sysconfig / apache2, это немедленно решило мою проблему.
С уважением, Лиам
Я обслуживаю файлы из нестандартного каталога, поэтому, чтобы сделать обновление работоспособным, мне пришлось отредактировать /etc/apache2/apache2.conf и добавить: Опции Индексы FollowSymLinks AllowOverride Нет Требовать все предоставлено
После этого и рекомендуемых изменений выше ошибка 403 исчезла.
httpd.conf
файла илиconf.d
каталога. Но естьapache2.conf
файл. Я попытался переместить его вconf-available
каталог и получил следующую ошибку при перезапуске apache2: apache2: не удалось открыть файл конфигурации /etc/apache2/apache2.conf: такого файла или каталога нет. В чем может быть причина?