|
Метки: новое перенаправление отменено |
Строка 1: |
Строка 1: |
| {{h0|Система конфигурации {{pkg|apache2}}}}
| | #REDIRECT[[Настройка_Apache2#Система_конфигурации_apache2]] |
| | |
| Начиная с {{pkg|apache2-2.2.4-alt14}} для конфигурирования apache2 используется доработанная Debian`овская схема.
| |
| | |
| == Основные отличия от Debian ==
| |
| | |
| Ссылки с описанием Debian`овского оригинала я не нашёл.
| |
| | |
| # Конфигурационные файлы {{path|<nowiki>conf/{mods,sites}-{available,enabled}</nowiki>}} — передраны из Debian без существенных изменений. По их образу и подобию созданы {{path|<nowiki>conf/{ports,extra}-{available,enabled}</nowiki>}}. Содержимое: | |
| #* {{path|conf/mods-available/<имя модуля>.load}} — файлы обеспечивающие загрузку модулей и содержащие описание их зависимостей. Примерной формат:<div>
| |
| <source lang="apache"># Depends: <имя требуемого модуля>
| |
| LoadModule ...</source></div>
| |
| #* {{path|conf/mods-available/<имя модуля>.conf}} — конфигурация для модуля <имя модуля> (если она нужна).
| |
| #* {{path|conf/sites-available/*.conf}} — конфигурации для сайтов (виртуалхостов).
| |
| #* {{path|conf/ports-available/*.conf}} — конфигурирования слушаемых портов.
| |
| #* {{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|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|/usr/sbin/a2chkconfig}} и конфигов {{path|conf/{mods,sites,port,extra}-start.d/*.conf}} для неё.
| |
| #* {{path|/usr/sbin/a2chkconfig}} — покомпонентно обрабатывает {{path|conf/*-start.d/*.conf}} (файлы обрабатываются в порядке их имён, обработанные позже имеют приоритет) и вызывает соответствующие {{path|<nowiki>a2{en,dis}{mod,site}</nowiki>}} для компонент упомянутых в конфигах.
| |
| #* {{path|conf/{mods,sites,port,extra}-start.d/*.conf}} — файлы конфигурации для {{path|a2chkconfig}}. Формат:
| |
| <имя компонента>={yes,no}
| |
| ::Пример применения (включения модуля dir, см. http://lists.altlinux.org/pipermail/sisyphus/2007-March/095644.html):
| |
| | |
| == Варианты включения модуля ==
| |
| | |
| На примере модуля dir.
| |
| | |
| ==== Быстрый ====
| |
| | |
| <source lang="bash">$ sudo -H a2enmod dir</source>
| |
| | |
| Возможно отключение при выполнении /{{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" >> /etc/httpd2/conf/mods-start.d/900-local.conf'
| |
| $ 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>.
| |
| | |
| Для запрета этой возможности можно либо переименовать файл {{path|A.docs.conf}}, чтобы он не начинался с буквы A, либо вовсе запретить <code>addon.d</code> с помощью:
| |
| [root@host-15 ~]# a2disextra httpd-addon.d
| |
| | |
| -----
| |
| {{Category navigation|title=Apache2|category=Apache2}}
| |
| [[Категория:Web]]
| |
| [[Категория:Sisyphus]]
| |