В настоящее время я изучаю виртуальные хосты Apache и испытываю некоторую путаницу относительно их настройки.
Я создал файл виртуального хоста в sites-available
папке и включил соответствующий сайт с помощью команды a2ensite example.com.conf
от имени root. Я заметил, что при этом создается символическая ссылка в sites-enabled
папке.
Чтобы более полно понять поведение, я поэкспериментировал, сохранив файл example.com.conf
напрямую в sites-enabled
, избегая косвенности через символическую ссылку. После перезапуска Apache я был удивлен, обнаружив, что виртуальный хост продолжает работать нормально.
Если я сохраню example.com.conf
файл только в sites-enabled
, не сохраняя в sites-available
папке и используя символическую ссылку, вызовет ли это какие-либо проблемы?
решение1
Эта структура папок — все для управляемости. Хотя было бы совершенно нормально добавить все конфигурации модулей и виртуальных хостов в один файл 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!
Официальная документация (man-страницы) становится бесполезной.
Вы не можете легко временно отключить сайт. Например, виртуальный хост для всех случаев позволяет легко создатьна техобслуживаниистраница, отображаемая, пока сайт отключен для обновлений.
Кто-то другой, администрирующий тот же сервер, мог использовать
ln -s
иrm
вместо этих официальных команд. При попытке временно отключить сайт, они могли случайно удалить его.Никто не знает, что вы не следовали обычной практике. Через несколько месяцев вы тоже забудете об этом. В этот момент вы зададите новый вопрос на Serverfault относительно того, почему следование документации или руководству больше не применимо к вашей настройке.