Контейнеры виртуальных хостов Apache в отдельных файлах

виртуальные хосты Apache/

Контейнеры виртуальных хостов Apache в отдельных файлах

1. Введение

С увеличением количества виртуальных хостов, наступает момент, когда проще найти и внести изменение в виртуальный контейнер узла, если настройки его находятся в отдельном файле конфигурации. В этом разделе описан подход отличающийся от основного минималистичного подхода конфигурации.

В данном случае создается новый каталог для файлов контейнеров виртуальных хостов: /etc/httpd/vhost.d. Такой подход облегчает внесение изменений в конфигурацию виртуального хоста и устраняет возможные проблемы файлов с конфликтующими именами.

2. ./conf.d/

Наиболее распространенным методом является создание файла виртуального хоста в директории conf.d/. Это имеет то преимущество, что каталог уже создан и в файле httpd.conf есть строка вида:

Include conf.d/*.conf

Данная инструкция включает все файлы с расширением ".conf" в директории conf.d/. То есть, какие-либо файлы в этой директории, которые имеют расширение ".conf" будут обрабатываться как файлы конфигурации Apache. Файлы обрабатываются в алфавитном порядке.

3. Опционально ./vhost.d/

Другой метод - создать новую пустую директорию персонально для файлов виртуальных контейнеров, например - vhost.d.

3.1 Примечания

Как и любые другие нестандартные изменения в нашей системе должны быть задокументированы для дальнейшего использования.

3.2 Создадим каталог

Создание каталога с SELinux атрибутами, такими как и у /etc/httpd/conf.d/:

mkdir --context=system_u:object_r:httpd_config_t /etc/httpd/vhost.d

3.3 Обновление свойств SELinux

Проверка свойств SELinux так же проста:

ls -lZ /etc/httpd

 

должно вернутся что-то подобное ...

drwxr-xr-x  root root system_u:object_r:httpd_config_t conf
drwxr-xr-x root root system_u:object_r:httpd_config_t conf.d
lrwxrwxrwx root root system_u:object_r:httpd_log_t logs -> ../../var/log/httpd
lrwxrwxrwx root root system_u:object_r:httpd_modules_t modules -> ../../usr/lib/httpd/modules
lrwxrwxrwx root root system_u:object_r:httpd_config_t run -> ../../var/run
drwxr-xr-x root root system_u:object_r:httpd_config_t vhost.d

 

мы можем изменить пользователя сами, если не сделали каталог раньше с атрибутами SELinux.

chcon --user=system_u:object_r:httpd_config_t /etc/httpd/vhost.d

3.4 Обновление конфигурации Apache

Предполагая, что файл конфигурации Apache стоит стандартный по умолчанию, просто добавим необходимую строку в конец файла. Так же напомним, что файлы оканчивающиеся на расширение '.conf' в директории vhost.d/ активируют виртуальные контейнеры хостов, поэтому, переименовав для примера файл user_site.conf в user_site.conf_stop, вы предотвратите его подключение.

echo "Include vhost.d/*.conf" >>/etc/httpd/conf/httpd.conf

4. Файлы виртуальных хостов

Файлы виртуальных хостов могут быть размещены в директории непосредственно или путем ссылок. Если используются ссылки, не забудьте обновить SELinux свойства конкретного файла.

4.1 Пример

Файл должен содержать элементы конфигурации специфичные для данного хоста. Пример ...

<VirtualHost *:80>
ServerName example.org
ServerAlias *.example.org
ServerAdmin webmaster@example.org
ErrorLog /var/log/httpd/example.err
CustomLog /var/log/httpd/example.log combined
DocumentRoot /var/www/example.org
<Directory "/var/www/example.org">
Order allow,deny
Allow from all
</Directory>
</VirtualHost>

Дополнительно: файл конфигурации с префиксом

Наименование файлов с префиксом, например, vhost-, может стать более понятным и заметным для групп активных и неактивных виртуальных хостов.

Включение директивы

Вместо того, чтобы использовать файлы имеющие окончания на ".conf", мы будем использовать файлы, которые начинаются с приставки "vhost-":

echo "Include vhost.d/vhost-*" >>/etc/httpd/conf/httpd.conf

Отключение виртуального хоста

Отключение производится добавлением подчеркивания "_" в начало названия файла:

mv -v /etc/httpd/vhost.d/{,_}vhost-example.org

Включение виртуального хоста

Включение производится удалением знака подчеркивания в начале файла:

mv -v /etc/httpd/vhost.d/{_,}vhost-example.org

5. Рестарт Apache

Чтобы изменения вступили в силу, перезагрузите Apache

service httpd graceful

Автор: Александр