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

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

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

Связанный контент