Назад | Перейти на главную страницу

Что произойдет, если я включу файл конфигурации vhost непосредственно в папку «sites-enabled»?

В настоящее время я изучаю виртуальные хосты 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 относительно того, почему следование документации или руководству больше не применимо для вашей установки.