В настоящее время я изучаю виртуальные хосты Apache и немного не понимаю их конфигурацию.
Я создал файл виртуального хоста в sites-available
папку и включил соответствующий сайт с помощью команды a2ensite example.com.conf
как корень. При этом я заметил, что это создает символическую ссылку в sites-enabled
папка.
Чтобы лучше понять поведение, я поэкспериментировал, сохранив example.com.conf
файл прямо в sites-enabled
, избегая косвенного обращения через символическую ссылку. После перезапуска Apache я был удивлен, обнаружив, что виртуальный хост продолжает нормально работать.
Если я сохраню example.com.conf
файл только в sites-enabled
, без хранения в sites-available
папка и использование символической ссылки, вызовет ли это какие-либо проблемы?
Эта структура папок обеспечивает управляемость. Хотя было бы неплохо добавить всю конфигурацию модуля и виртуального хоста в один httpd.conf
, это сделало бы его долгим и сложным для изменения. Поэтому, например, в Debian, включение подстановочных знаков использовалось для разделения конфигурации на несколько файлов:
# Include generic snippets of statements
IncludeOptional conf-enabled/*.conf
# Include the virtual host configurations:
IncludeOptional sites-enabled/*.conf
Это делает все, что соответствует пути sites-enabled/*.conf
для добавления в конфигурацию, а для Apache HTTPd не имеет значения, является ли это текстовым файлом или символической ссылкой на него. С этой точки зрения даже не имеет значения, есть ли в файле <VirtualHost>
блоки в нем или просто какая-то другая конфигурация Apache. Также вполне возможно иметь файл example.com.conf
с конфигурацией для example.net
и т.п.
Проблемы, с которыми вы столкнетесь при нестандартной настройке, связаны с недостаточной управляемостью:
Вы не сможете включать или отключать виртуальные хосты с помощью a2ensite
/ a2dissite
.
# a2dissite example.com
ERROR: Site example.com does not exist!
Официальная документация (страницы руководства) становится бесполезной.
Вы не можете легко временно отключить сайт. Например. универсальный виртуальный хост позволяет легко создать на техобслуживании страницу, которая будет отображаться, пока сайт отключен для получения обновлений.
Кто-то другой, администрирующий тот же сервер, мог использовать ln -s
и rm
вместо этих официальных команд. При попытке временно отключить сайт они могут случайно удалить его.
Никто другой не знает, что вы не следовали обычным правилам. Через несколько месяцев вы это тоже забудете. В этот момент вы зададите новый вопрос о Serverfault относительно того, почему следование документации или руководству больше не применимо для вашей установки.