
Я пытаюсь настроить сервер Apache2, но не могу заставить его загрузить мои виртуальные хосты. Или, если быть точнее, он работает нормально, пока я пишу их в 000-default.conf
, но всякий раз, когда я пытаюсь использовать отдельный файл, он, похоже, полностью его игнорирует.
Почему это не работает? И как заставить это работать?
решение1
Обычно, если требуется настроить отдельные конфигурации виртуального хоста, их следует поместить в этот каталог:
/etc/apache2/sites-available/
Таким образом, если у вас есть виртуальный хост с именем, то www.example.com
имя файла конфигурации может быть www.example.com.conf
следующим:
/etc/apache2/sites-available/www.example.com.conf
Затем вы открываете этот файл в текстовом редакторе, например, в этом; я использую его nano
в качестве примера, но вы можете использовать любой другой текстовый редактор по своему усмотрению:
sudo nano /etc/apache2/sites-available/www.example.com.conf
А затем поместите контент, подобный этому, в www.example.com.conf
:
<VirtualHost *:80>
ServerAdmin [email protected]
ServerName example.com
ServerAlias www.example.com
DocumentRoot /var/www/example.com/
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Закройте и сохраните этот файл, а затем используйте a2ensite
его следующим образом, чтобы система установила символическую ссылку с sites-available
на sites-enabled
следующее:
sudo a2ensite www.example.com.conf
Или, если хотите, вы можете вручную ln -s
установить символическую ссылку следующим образом:
ln -s /etc/apache2/sites-available/www.example.com.conf /etc/apache2/sites-enabled/www.example.com.conf
Когда это будет сделано, просто перезагрузите Apache следующим образом:
sudo service apache2 reload
А если по какой-то причине reload
не сработает, просто выполните принудительный перезапуск, например так:
sudo service apache2 restart
Преимущество использования reload
before restart
в том, что если в файле конфигурации есть опечатка, Apache сообщит об ошибке, но не загрузит файлы конфигурации. Это означает, что ваш веб-сервер Apache будет по-прежнему работать на основе последнего стабильного файла конфигурации, который он загрузил.
Риск заключается в том, что если вы принудительно выполните a restart
и в файле конфигурации будет опечатка, Apache будет мертв, поскольку restart
принудительно запустит полную службу, stop
за которой последует start
. И если это start
захлебнется, сервер будет мертв, пока опечатка/проблема в конфигурации не будет устранена.
решение2
Проверьте свой httpd.conf
файл, он должен содержать строку типа Include conf/*.conf
. Проверьте, является ли это подстановочным знаком или фиксированным файлом (типа 000-default.conf
).
Также проверьте, что ваши новые файлы conf соответствуют шаблону подстановочных знаков и хранятся в той же папке, что и 000-default.conf
.
Наконец, существуют дистрибутивы Apache, в которых имеются доступные и активные файлы conf, поэтому в некоторых случаях для работы требуется программная ссылка.