Apache2/Configs: различия между версиями

Материал из ALT Linux Wiki
Нет описания правки
 
(не показано 17 промежуточных версий 7 участников)
Строка 5: Строка 5:
== Основные отличия от Debian ==
== Основные отличия от Debian ==


Ссылки с описанием Debian`овского орегинала я не нашёл.
Ссылки с описанием Debian`овского оригинала я не нашёл.


# Конфигурационные файлы {{path|<nowiki>conf/{mods,sites}-{available,enabled}</nowiki>}} — передраны из Debian без существенных изменений. По их образу и подобию созданы {{path|<nowiki>conf/{ports,extra}-{available,enabled}</nowiki>}}. Содержимое:
# Конфигурационные файлы {{path|<nowiki>conf/{mods,sites}-{available,enabled}</nowiki>}} — передраны из Debian без существенных изменений. По их образу и подобию созданы {{path|<nowiki>conf/{ports,extra}-{available,enabled}</nowiki>}}. Содержимое:
Строка 14: Строка 14:
#* {{path|conf/sites-available/*.conf}} — конфигурации для сайтов (виртуалхостов).
#* {{path|conf/sites-available/*.conf}} — конфигурации для сайтов (виртуалхостов).
#* {{path|conf/ports-available/*.conf}} — конфигурирования слушаемых портов.
#* {{path|conf/ports-available/*.conf}} — конфигурирования слушаемых портов.
#* {{path|conf/extra-available/*.conf}} — конфигурирования компонент общих для всех сайтов. За прототип взято содержимое {{path|conf/extra}} в апстримного {{pkg|apache-2.2.4}} (не всё: часть переехала в другие каталоги).
#* {{path|conf/extra-available/*.conf}} — конфигурирования компонент общих для всех сайтов. За прототип взято содержимое {{path|conf/extra}} из апстримного {{pkg|apache-2.2.4}} (не всё: часть переехала в другие каталоги).
#* {{path|<nowiki>conf/{mods,sites,ports,extra}-enabled/*.{conf,load}</nowiki>}} — симлинки на соответствующие {{path|<nowiki>conf/{mods,sites,ports,extra}-available/*.{conf,load}</nowiki>}}, используемые в {{path|httpd2.conf}}.
#* {{path|<nowiki>conf/{mods,sites,ports,extra}-enabled/*.{conf,load}</nowiki>}} — симлинки на соответствующие {{path|<nowiki>conf/{mods,sites,ports,extra}-available/*.{conf,load}</nowiki>}}, используемые в {{path|httpd2.conf}}.
#* {{path|conf/include/*.conf}} — конфигурационные файлы включаемые в другие через:<source lang="apache">Include conf/include/...</source>
# Утилиты {{path|<nowiki>/usr/sbin/a2{en,dis}{mod,site}</nowiki>}}, управляющие созданием/удалением симинков {{path|conf/*-enabled/*}} на соответствующие {{path|conf/*-available/*}} взяты из Debian без существенных изменений. {{path|<nowiki>/usr/sbin/a2{en,dis}{port,extra}</nowiki>}} — добавлены, и имеют аналогичные функционал и назначение.
# Утилиты {{path|<nowiki>/usr/sbin/a2{en,dis}{mod,site}</nowiki>}}, управляющие созданием/удалением симинков {{path|conf/*-enabled/*}} на соответствующие {{path|conf/*-available/*}} взяты из Debian без существенных изменений. {{path|<nowiki>/usr/sbin/a2{en,dis}{port,extra}</nowiki>}} — добавлены, и имеют аналогичные функционал и назначение.
# Добавлена система автоматизированного управления включением/выключением компонент. Состоит из утилиты {{path|/usr/sbin/a2chkconfig}} и конфигов {{path|conf/{mods,sites,port,extra}-start.d/*.conf}} для неё.
# Добавлена система автоматизированного управления включением/выключением компонент. Состоит из утилиты {{path|/usr/sbin/a2chkconfig}} и конфигов {{path|conf/{mods,sites,port,extra}-start.d/*.conf}} для неё.
Строка 32: Строка 33:


Возможно отключение при выполнении /{{path|usr/sbin/a2chkconfig}}, если требование отключить его будет присутствовать в каком либо из {{path|/etc/httpd2/conf/mods-start.d/*.conf}} ({{path|a2chkconfig}} может вызываться при установке/обновлении/удалении связанных с {{pkg|apache2}} пакетов).
Возможно отключение при выполнении /{{path|usr/sbin/a2chkconfig}}, если требование отключить его будет присутствовать в каком либо из {{path|/etc/httpd2/conf/mods-start.d/*.conf}} ({{path|a2chkconfig}} может вызываться при установке/обновлении/удалении связанных с {{pkg|apache2}} пакетов).
: '''Важно!''' ''По умолчанию в дистрибутивах ALT Linux утилита sudo не настроена.''


====Надёжный====
====Надёжный====


<source lang="bash">$ sudo -H sh -с 'еcho "dir=yes" >> 900-local.conf'
<source lang="bash">$ sudo -H sh -с 'еcho "dir=yes" >> /etc/httpd2/conf/mods-start.d/900-local.conf'
$ sudo -H a2chkconfig</source>
$ sudo -H a2chkconfig</source>


: '''Важно!''' ''По умолчанию в дистрибутивах ALT Linux утилита sudo не настроена.''
== Пример: включение HTTPS и виртуальных хостов в ALT Linux Centaurus 6.0 ==
'''Задача''': на машине с одним IP-адресом развернуть виртуальный хостинг сайтов в нескольких доменах; обеспечить поддержку работы по HTTPS.
'''Замечание 1'''. При использовании SSL можно выдать только один сертификат на все виртуальные хосты, так что предупреждения о несоответствии ключа доменному имени избежать почти нельзя (исключение: все доменные имена из одного и того же домена, а сертификат выписан на wildcard вида <code>*.общее.доменное.имя</code>).
'''Замечание 2'''. Файл {{path|/etc/httpd2/conf/sites-available/ports_all.conf}} после установки 6.0 отличается от файла в пакете по умолчанию: вместо
NameVirtualHost *
там прибито
NameVirtualHost *:80
NameVirtualHost *:443
И это очень хорошо. Если вы установили пакет из Сизифа и вам нужны виртуальные хосты с SSL, проще всего привести {{path|ports_all.conf}} в такое же состояние, иначе задать виртуальные хосты на ''разных'' портах (в данном случае, на 80 и 443) будет невозможно.
Вместо редактирования этого файла можно было создать свой, «включить» его, «выключить» {{path|ports_all.conf}}, да вдобавок позаботиться о том, чтобы ''ports_all'' не включался по умолчанию в каталоге настроек по умолчанию (в случае Centaurus имеется файл {{path|/etc/httpd2/conf/sites-start.d/000-default.conf}}, в котором надо удалить строчку <code>ports_all=yes</code>. Если не сделать последнего, <code>ports_all</code> будет включаться при каждом запуске <code>a2chkconfig</code> (в т. ч. при обновлении apache).
==== Включение Apache2 ====
Через альтератор или вручную с помощью
[root@host-15 ~]# chkconfig httpd2 on
[root@host-15 ~]# service httpd2 start
Вторая строка нужна для того, чтобы отработали (если они есть или появятся в будущем) одноразовые сценарии.
Необходимо также убедиться, что пакет <code>apache2-mod_ssl</code> установлен (или установить его):
[root@host-15 ~]# rpm -qa apache2-mod_ssl
  apache2-mod_ssl-2.2.17-alt2
==== Шаблон сайта ====
Несмотря на «Замечание 1», настройки SSL придётся задавать каждому виртуальному хосту. Более того, собственные настройки виртуального хоста для HTTP и для HTTPS практически совпадают. Следовательно, разумно будет завести ''три'' файла: базовый конфигурационный, содержащий include-ы настроек для HTTP и для HTTPS. Все три файла разместим в {{path|/etc/httpd2/conf/sites-available}}.
Базовый файл для сайта ''srv'' ({{path|srv.conf}}):
[root@host-15 sites-available]# cat srv.conf
  <VirtualHost *:80>
  Include conf/sites-available/srv.include
  </VirtualHost>
  <VirtualHost *:443>
  Include conf/sites-available/srv.include
  Include conf/sites-available/ssl.include
  </VirtualHost>
Содержательные настройка сайта ''srv'' ({{path|srv.include}}):
[root@host-15 sites-available]# cat srv.include
  ServerName                      www.srv.ru
  ServerAlias                    srv.ru srv
  ServerAdmin                    www-adm@srv.ru
  DocumentRoot                    /var/www/vhosts/srv/htdocs
  ScriptAlias                    /cgi-bin/ /var/www/vhosts/srv/feedback/cgis/
  ErrorLog                        /var/www/vhosts/srv/log/error_log_a2
  TransferLog                    /var/www/vhosts/srv/log/access_log_a2
Общие настройки SSL ({{path|ssl.include}}):
[root@host-15 sites-available]# cat ssl.include
  <IfModule ssl_module>
    SSLEngine on
    SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
    SSLCertificateFile "/etc/httpd2/conf/ssl.crt/server.crt"
    SSLCertificateKeyFile "/etc/httpd2/conf/ssl.key/server.key"
  </IfModule>
Если для HTTP и HTTPS-версий сайтов ещё что-нибудь различается (например, ведутся раздельные журналы), эти настройки надо выносить из {{path|srv.include}} и явно указывать в {{path|srv.conf}},
==== Добавление виртуального хоста ====
Принято располагать контент виртуальных хостов в каталоге {{path|/var/www/vhosts/<имя-хоста>}}. Поэтому для начала надо создать подкаталоги, упомянутые в настройках:
[root@host-15 ~]# mkdir -p /var/www/vhosts/srv/htdocs
[root@host-15 ~]# mkdir -p /var/www/vhosts/srv/log
Затем «разрешить» этот хост:
[root@host-15 ~]# a2ensite srv
  Site srv installed;
        run service httpd2 condreload to fully enable.
В результате в каталоге {{path|/etc/httpd2/conf/sites-enabled}} образуются следующие символьные ссылки:
[root@host-15 ~]# ls -l /etc/httpd2/conf/sites-enabled/
  итого 0
  lrwxrwxrwx 1 root root 31 Мар  3 12:19 000-default.conf -> ../sites-available/default.conf
  lrwxrwxrwx 1 root root 37 Мар  3 12:30 000-default_https.conf -> ../sites-available/default_https.conf
  lrwxrwxrwx 1 root root 33 Мар  3 12:19 ports_all.conf -> ../sites-available/ports_all.conf
  lrwxrwxrwx 1 root root 27 Мар  3 15:36 srv.conf -> ../sites-available/srv.conf
Первые два файла ({{path|000-default.conf}} и {{path|000-default_https.conf}}) — ссылки на ''сайты по умолчанию'' (для HTTP и HTTPS соответственно) а {{path|ports_all.conf}} включает виртуальный хостинг на двух портах. Сайты по умолчанию показываются при обращении к серверу по имени, не совпадающему ни с одним виртуальным хостом (например, по Ip-адресу). Если выключить {{path|000-default.conf}} и {{path|000-default_https.conf}}, сайтом по умолчанию станет ''какой-то'' виртуальный хост.
Apache рекомендует после этого запустить <code>service httpd2 condreload</code>, однако в нашем случае сгодится и <code>restart</code>:
[root@host-15 ~]# service httpd2 restart
  Stopping httpd2 service: [ DONE ]
  Checking configuration sanity for httpd2:  Syntax OK [ DONE ]
  Starting httpd2 service: [ DONE ]
С этой поры по адресу {{path|http://srv}} должно быть видно содержимое {{path|/var/www/vhosts/srv/htdocs}}.
==== Добавление ещё одного виртуального хоста ====
Если все виртуальные хосты типовые, добавление нового сводится к подмене имени и созданию каталогов (изменения происходят в каталоге {{path|/etc/httpd2/conf/sites-available}}:
[root@host-15 sites-available]# sed 's@srv@srvbis@g' < srv.conf > srvbis.conf
[root@host-15 sites-available]# sed 's@srv@srvbis@g' < srv.include > srvbis.include
[root@host-15 sites-available]# mkdir -p /var/www/vhosts/srvbis/htdocs
[root@host-15 sites-available]# mkdir -p /var/www/vhosts/srvbis/log
[root@host-15 sites-available]# a2ensite srvbis
  Site srvbis installed;
        run service httpd2 condreload to fully enable.
[root@host-15 sites-available]# service httpd2 condreload
  Reloading httpd2 service: [ DONE ]
== Пример 2: включение CGI printenv ==
Чтобы разрешить CGI, необходимо включить соответствующий модуль:
[root@host-15 ~]# a2enmod cgi
  Module cgi installed;
        run service httpd2 condreload to fully enable.
[root@host-15 ~]# service httpd2 condreload
  Reloading httpd2 service: [ DONE ]
Разумеется, пакеты <code>apache2-cgi-bin-printenv</code> и <code>apache2-cgi-bin</code> должны быть установлены:
[root@host-15 ~]# rpm -qa apache2-cgi\* 
  apache2-cgi-bin-test-cgi-2.2.17-alt2
  apache2-cgi-bin-2.2.17-alt2
  apache2-cgi-bin-printenv-2.2.17-alt2
Однако <code>http://localhost/cgi-bin/printenv</code> покажет ошибку. Дело в том, что файл {{path|/var/www/cgi-bin/printenv}} после установки Centaurus — символьная ссылка на неисполняемый файл в {{path|/usr/share/apache2/cgi-bin}}:
[root@host-15 ~]# ls -l /var/www/cgi-bin /usr/share/apache2/cgi-bin/
  /usr/share/apache2/cgi-bin/:
  итого 8
  -rw-r--r-- 1 root root 288 Дек 27 01:43 printenv
  -rw-r--r-- 1 root root 779 Окт 14 20:33 test-cgi
  /var/www/cgi-bin:
  итого 0
  lrwxrwxrwx 1 root root 35 Мар  5 14:43 printenv -> /usr/share/apache2/cgi-bin/printenv
  lrwxrwxrwx 1 root root 35 Мар  3 12:19 test-cgi -> /usr/share/apache2/cgi-bin/test-cgi
Для управления тестовыми CGI-сценариями имеются соответствующие control-сценарии. В Centaurus достаточно выполнить
[root@host-15 ~]# control cgi-bin_printenv symlink_webmaster_exec
После этого файл станет исполняемым и сценарий заработает:
[root@host-15 ~]# ls -l /var/www/cgi-bin /usr/share/apache2/cgi-bin/
  /usr/share/apache2/cgi-bin/:
  итого 8
  -rwxr-xr-x 1 root root 288 Дек 27 01:43 printenv
  -rw-r--r-- 1 root root 779 Окт 14 20:33 test-cgi
  /var/www/cgi-bin:
  итого 0
  lrwxrwxrwx 1 root webmaster 35 Мар  5 14:47 printenv -> /usr/share/apache2/cgi-bin/printenv
  lrwxrwxrwx 1 root root      35 Мар  3 12:19 test-cgi -> /usr/share/apache2/cgi-bin/test-cgi
== Пример 3: документация к Centaurus ==
Документация к Centaurus 6.0 доступна по 80 порту на сервере. Включается этот доступ с помошью дополнительного блока настроек (т. н. «extra») под названием <code>addon.d</code>:
[root@host-15 ~]# ls /etc/httpd2/conf/extra-enabled/ 
  httpd-addon.d.conf    httpd-icons.conf      httpd-mpm.conf
  httpd-autoindex.conf  httpd-languages.conf  httpd-multilang-errordoc.conf
  httpd-default.conf    httpd-mime.conf      phpMyAdmin.conf
[root@host-15 ~]# cat /etc/httpd2/conf/extra-enabled/httpd-addon.d.conf
  #
  # Summary: Load config files from the config directory "conf/addon.d"
  # Provides: Extra
  #
  ###
  # Load config files from the config directory "conf/addon.d".
  #
  Include conf/addon.d/A.*.conf
[root@host-15 ~]# cat /etc/httpd2/conf/addon.d/A.docs.conf             
  Alias "/documentation" "/usr/share/doc/documentation"
  <Directory "/usr/share/doc/documentation">
  Allow From all
  </Directory>
Дополнение <code>addon.d</code> просто заставляет apache включать все настроечные файлы из каталога {{path|/etc/httpd2/conf/addon.d}}, а в файле {{path|/etc/httpd2/conf/addon.d/A.docs.conf}} содержится объявление дополнительного пути <code>/documentation</code>.


{{Category navigation|title=Web|category=Web}}
Для запрета этой возможности можно либо переименовать файл {{path|A.docs.conf}}, чтобы он не начинался с буквы A, либо вовсе запретить <code>addon.d</code> с помощью:
[root@host-15 ~]# a2disextra httpd-addon.d


-----
{{Category navigation|title=Apache2|category=Apache2}}
[[Категория:Web]]
[[Категория:Sisyphus]]
[[Категория:Sisyphus]]

Текущая версия от 17:48, 18 июля 2015

Система конфигурации apache2

Начиная с apache2-2.2.4-alt14 для конфигурирования apache2 используется доработанная Debian`овская схема.

Основные отличия от Debian

Ссылки с описанием Debian`овского оригинала я не нашёл.

  1. Конфигурационные файлы conf/{mods,sites}-{available,enabled} — передраны из Debian без существенных изменений. По их образу и подобию созданы conf/{ports,extra}-{available,enabled}. Содержимое:
    • conf/mods-available/<имя модуля>.load — файлы обеспечивающие загрузку модулей и содержащие описание их зависимостей. Примерной формат:
# Depends: <имя требуемого модуля>
LoadModule ...
    • conf/mods-available/<имя модуля>.conf — конфигурация для модуля <имя модуля> (если она нужна).
    • conf/sites-available/*.conf — конфигурации для сайтов (виртуалхостов).
    • conf/ports-available/*.conf — конфигурирования слушаемых портов.
    • conf/extra-available/*.conf — конфигурирования компонент общих для всех сайтов. За прототип взято содержимое conf/extra из апстримного apache-2.2.4 (не всё: часть переехала в другие каталоги).
    • conf/{mods,sites,ports,extra}-enabled/*.{conf,load} — симлинки на соответствующие conf/{mods,sites,ports,extra}-available/*.{conf,load}, используемые в httpd2.conf.
    • conf/include/*.conf — конфигурационные файлы включаемые в другие через:
      Include conf/include/...
      
  1. Утилиты /usr/sbin/a2{en,dis}{mod,site}, управляющие созданием/удалением симинков conf/*-enabled/* на соответствующие conf/*-available/* взяты из Debian без существенных изменений. /usr/sbin/a2{en,dis}{port,extra} — добавлены, и имеют аналогичные функционал и назначение.
  2. Добавлена система автоматизированного управления включением/выключением компонент. Состоит из утилиты /usr/sbin/a2chkconfig и конфигов conf/{mods,sites,port,extra}-start.d/*.conf для неё.
    • /usr/sbin/a2chkconfig — покомпонентно обрабатывает conf/*-start.d/*.conf (файлы обрабатываются в порядке их имён, обработанные позже имеют приоритет) и вызывает соответствующие a2{en,dis}{mod,site} для компонент упомянутых в конфигах.
    • conf/{mods,sites,port,extra}-start.d/*.conf — файлы конфигурации для a2chkconfig. Формат:
<имя компонента>={yes,no}
Пример применения (включения модуля dir, см. http://lists.altlinux.org/pipermail/sisyphus/2007-March/095644.html):

Варианты включения модуля

На примере модуля dir.

Быстрый

$ sudo -H a2enmod dir

Возможно отключение при выполнении /usr/sbin/a2chkconfig, если требование отключить его будет присутствовать в каком либо из /etc/httpd2/conf/mods-start.d/*.conf (a2chkconfig может вызываться при установке/обновлении/удалении связанных с apache2 пакетов).

Важно! По умолчанию в дистрибутивах ALT Linux утилита sudo не настроена.

Надёжный

$ sudo -H sh -с 'еcho "dir=yes" >> /etc/httpd2/conf/mods-start.d/900-local.conf'
$ sudo -H a2chkconfig
Важно! По умолчанию в дистрибутивах ALT Linux утилита sudo не настроена.

Пример: включение HTTPS и виртуальных хостов в ALT Linux Centaurus 6.0

Задача: на машине с одним IP-адресом развернуть виртуальный хостинг сайтов в нескольких доменах; обеспечить поддержку работы по HTTPS.

Замечание 1. При использовании SSL можно выдать только один сертификат на все виртуальные хосты, так что предупреждения о несоответствии ключа доменному имени избежать почти нельзя (исключение: все доменные имена из одного и того же домена, а сертификат выписан на wildcard вида *.общее.доменное.имя).

Замечание 2. Файл /etc/httpd2/conf/sites-available/ports_all.conf после установки 6.0 отличается от файла в пакете по умолчанию: вместо

NameVirtualHost *

там прибито

NameVirtualHost *:80
NameVirtualHost *:443

И это очень хорошо. Если вы установили пакет из Сизифа и вам нужны виртуальные хосты с SSL, проще всего привести ports_all.conf в такое же состояние, иначе задать виртуальные хосты на разных портах (в данном случае, на 80 и 443) будет невозможно.

Вместо редактирования этого файла можно было создать свой, «включить» его, «выключить» ports_all.conf, да вдобавок позаботиться о том, чтобы ports_all не включался по умолчанию в каталоге настроек по умолчанию (в случае Centaurus имеется файл /etc/httpd2/conf/sites-start.d/000-default.conf, в котором надо удалить строчку ports_all=yes. Если не сделать последнего, ports_all будет включаться при каждом запуске a2chkconfig (в т. ч. при обновлении apache).

Включение Apache2

Через альтератор или вручную с помощью

[root@host-15 ~]# chkconfig httpd2 on
[root@host-15 ~]# service httpd2 start

Вторая строка нужна для того, чтобы отработали (если они есть или появятся в будущем) одноразовые сценарии.

Необходимо также убедиться, что пакет apache2-mod_ssl установлен (или установить его):

[root@host-15 ~]# rpm -qa apache2-mod_ssl
 apache2-mod_ssl-2.2.17-alt2

Шаблон сайта

Несмотря на «Замечание 1», настройки SSL придётся задавать каждому виртуальному хосту. Более того, собственные настройки виртуального хоста для HTTP и для HTTPS практически совпадают. Следовательно, разумно будет завести три файла: базовый конфигурационный, содержащий include-ы настроек для HTTP и для HTTPS. Все три файла разместим в /etc/httpd2/conf/sites-available.

Базовый файл для сайта srv (srv.conf):

[root@host-15 sites-available]# cat srv.conf
 <VirtualHost *:80>
 Include conf/sites-available/srv.include
 </VirtualHost>
 <VirtualHost *:443>
 Include conf/sites-available/srv.include
 Include conf/sites-available/ssl.include
 </VirtualHost>

Содержательные настройка сайта srv (srv.include):

[root@host-15 sites-available]# cat srv.include
 ServerName                      www.srv.ru
 ServerAlias                     srv.ru srv 
 ServerAdmin                     www-adm@srv.ru
 DocumentRoot                    /var/www/vhosts/srv/htdocs
 ScriptAlias                     /cgi-bin/ /var/www/vhosts/srv/feedback/cgis/
 ErrorLog                        /var/www/vhosts/srv/log/error_log_a2
 TransferLog                     /var/www/vhosts/srv/log/access_log_a2

Общие настройки SSL (ssl.include):

[root@host-15 sites-available]# cat ssl.include
 <IfModule ssl_module>
   SSLEngine on
   SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
   SSLCertificateFile "/etc/httpd2/conf/ssl.crt/server.crt"
   SSLCertificateKeyFile "/etc/httpd2/conf/ssl.key/server.key"
 </IfModule>

Если для HTTP и HTTPS-версий сайтов ещё что-нибудь различается (например, ведутся раздельные журналы), эти настройки надо выносить из srv.include и явно указывать в srv.conf,

Добавление виртуального хоста

Принято располагать контент виртуальных хостов в каталоге /var/www/vhosts/<имя-хоста>. Поэтому для начала надо создать подкаталоги, упомянутые в настройках:

[root@host-15 ~]# mkdir -p /var/www/vhosts/srv/htdocs
[root@host-15 ~]# mkdir -p /var/www/vhosts/srv/log

Затем «разрешить» этот хост:

[root@host-15 ~]# a2ensite srv
 Site srv installed;
       run service httpd2 condreload to fully enable.

В результате в каталоге /etc/httpd2/conf/sites-enabled образуются следующие символьные ссылки:

[root@host-15 ~]# ls -l /etc/httpd2/conf/sites-enabled/
 итого 0
 lrwxrwxrwx 1 root root 31 Мар  3 12:19 000-default.conf -> ../sites-available/default.conf
 lrwxrwxrwx 1 root root 37 Мар  3 12:30 000-default_https.conf -> ../sites-available/default_https.conf
 lrwxrwxrwx 1 root root 33 Мар  3 12:19 ports_all.conf -> ../sites-available/ports_all.conf
 lrwxrwxrwx 1 root root 27 Мар  3 15:36 srv.conf -> ../sites-available/srv.conf

Первые два файла (000-default.conf и 000-default_https.conf) — ссылки на сайты по умолчанию (для HTTP и HTTPS соответственно) а ports_all.conf включает виртуальный хостинг на двух портах. Сайты по умолчанию показываются при обращении к серверу по имени, не совпадающему ни с одним виртуальным хостом (например, по Ip-адресу). Если выключить 000-default.conf и 000-default_https.conf, сайтом по умолчанию станет какой-то виртуальный хост.

Apache рекомендует после этого запустить service httpd2 condreload, однако в нашем случае сгодится и restart:

[root@host-15 ~]# service httpd2 restart
 Stopping httpd2 service: [ DONE ]
 Checking configuration sanity for httpd2:  Syntax OK [ DONE ]
 Starting httpd2 service: [ DONE ]

С этой поры по адресу http://srv должно быть видно содержимое /var/www/vhosts/srv/htdocs.

Добавление ещё одного виртуального хоста

Если все виртуальные хосты типовые, добавление нового сводится к подмене имени и созданию каталогов (изменения происходят в каталоге /etc/httpd2/conf/sites-available:

[root@host-15 sites-available]# sed 's@srv@srvbis@g' < srv.conf > srvbis.conf
[root@host-15 sites-available]# sed 's@srv@srvbis@g' < srv.include > srvbis.include
[root@host-15 sites-available]# mkdir -p /var/www/vhosts/srvbis/htdocs
[root@host-15 sites-available]# mkdir -p /var/www/vhosts/srvbis/log
[root@host-15 sites-available]# a2ensite srvbis
 Site srvbis installed;
       run service httpd2 condreload to fully enable.
[root@host-15 sites-available]# service httpd2 condreload
 Reloading httpd2 service: [ DONE ]

Пример 2: включение CGI printenv

Чтобы разрешить CGI, необходимо включить соответствующий модуль:

[root@host-15 ~]# a2enmod cgi
 Module cgi installed;
       run service httpd2 condreload to fully enable.
[root@host-15 ~]# service httpd2 condreload
 Reloading httpd2 service: [ DONE ]

Разумеется, пакеты apache2-cgi-bin-printenv и apache2-cgi-bin должны быть установлены:

[root@host-15 ~]# rpm -qa apache2-cgi\*  
 apache2-cgi-bin-test-cgi-2.2.17-alt2
 apache2-cgi-bin-2.2.17-alt2
 apache2-cgi-bin-printenv-2.2.17-alt2

Однако http://localhost/cgi-bin/printenv покажет ошибку. Дело в том, что файл /var/www/cgi-bin/printenv после установки Centaurus — символьная ссылка на неисполняемый файл в /usr/share/apache2/cgi-bin:

[root@host-15 ~]# ls -l /var/www/cgi-bin /usr/share/apache2/cgi-bin/
 /usr/share/apache2/cgi-bin/:
 итого 8
 -rw-r--r-- 1 root root 288 Дек 27 01:43 printenv
 -rw-r--r-- 1 root root 779 Окт 14 20:33 test-cgi
 /var/www/cgi-bin:
 итого 0
 lrwxrwxrwx 1 root root 35 Мар  5 14:43 printenv -> /usr/share/apache2/cgi-bin/printenv
 lrwxrwxrwx 1 root root 35 Мар  3 12:19 test-cgi -> /usr/share/apache2/cgi-bin/test-cgi

Для управления тестовыми CGI-сценариями имеются соответствующие control-сценарии. В Centaurus достаточно выполнить

[root@host-15 ~]# control cgi-bin_printenv symlink_webmaster_exec

После этого файл станет исполняемым и сценарий заработает:

[root@host-15 ~]# ls -l /var/www/cgi-bin /usr/share/apache2/cgi-bin/
 /usr/share/apache2/cgi-bin/:
 итого 8
 -rwxr-xr-x 1 root root 288 Дек 27 01:43 printenv
 -rw-r--r-- 1 root root 779 Окт 14 20:33 test-cgi
 /var/www/cgi-bin:
 итого 0
 lrwxrwxrwx 1 root webmaster 35 Мар  5 14:47 printenv -> /usr/share/apache2/cgi-bin/printenv
 lrwxrwxrwx 1 root root      35 Мар  3 12:19 test-cgi -> /usr/share/apache2/cgi-bin/test-cgi

Пример 3: документация к Centaurus

Документация к Centaurus 6.0 доступна по 80 порту на сервере. Включается этот доступ с помошью дополнительного блока настроек (т. н. «extra») под названием addon.d:

[root@host-15 ~]# ls /etc/httpd2/conf/extra-enabled/  
 httpd-addon.d.conf    httpd-icons.conf      httpd-mpm.conf
 httpd-autoindex.conf  httpd-languages.conf  httpd-multilang-errordoc.conf
 httpd-default.conf    httpd-mime.conf       phpMyAdmin.conf

[root@host-15 ~]# cat /etc/httpd2/conf/extra-enabled/httpd-addon.d.conf 
 #
 # Summary: Load config files from the config directory "conf/addon.d"
 # Provides: Extra
 #
 ### 
 # Load config files from the config directory "conf/addon.d". 
 # 
 Include conf/addon.d/A.*.conf 
[root@host-15 ~]# cat /etc/httpd2/conf/addon.d/A.docs.conf              
 Alias "/documentation" "/usr/share/doc/documentation"
 <Directory "/usr/share/doc/documentation">
 Allow From all
 </Directory>

Дополнение addon.d просто заставляет apache включать все настроечные файлы из каталога /etc/httpd2/conf/addon.d, а в файле /etc/httpd2/conf/addon.d/A.docs.conf содержится объявление дополнительного пути /documentation.

Для запрета этой возможности можно либо переименовать файл A.docs.conf, чтобы он не начинался с буквы A, либо вовсе запретить addon.d с помощью:

[root@host-15 ~]# a2disextra httpd-addon.d