apache
Apache 2.x
Роль Ansible, которая устанавливает Apache 2.x на RHEL/CentOS, Debian/Ubuntu, SLES и Solaris.
Требования
Роль не управляет сертификатами и ключевыми файлами для сайтов, использующих SSL/TLS.
Если вам нужен Apache с PHP, вы можете добавить пакеты PHP в переменную apache_packages
. Либо вы можете использовать другую роль, например, роль geerlingguy.php
или geerlingguy.apache-php-fpm
, если предпочитаете использовать PHP как FPM вместо модуля Apache.
Переменные роли
Доступные переменные указаны ниже вместе с значениями по умолчанию (см. defaults/main.yml
):
apache_enablerepo: ''
Репозиторий, который будет использоваться при установке Apache (используется только на системах RHEL/CentOS). Если вы хотите более поздние версии Apache, чем доступны в основных репозиториях ОС, используйте репозиторий, такой как EPEL.
apache_listen_ip: '*'
apache_listen_port: 80
apache_listen_port_ssl: 443
IP-адрес и порты, на которых должен слушать Apache. Полезно, если у вас есть другой сервис (например, обратный прокси), слушающий на порту 80 или 443, и вам нужно изменить значения по умолчанию.
apache_keepalive: true
apache_keepalive_requests: 500
apache_keepalive_timeout: 5
Эта настройка включает постоянные соединения HTTP, а тайм-аут и максимальное количество запросов могут быть настроены.
apache_prefork_server_limit: 256
apache_prefork_start_servers: 5
apache_prefork_min_spare_servers: 5
apache_prefork_max_spare_servers: 10
apache_prefork_max_clients: 256
apache_prefork_max_requests_per_child: 0
Конфигурация MPM модуля сервера. Эти свойства применяются к модулю MPM Prefork и MPM Worker. Только в Apache 2.4 на Debian вы можете настраивать режимы MPM с разными значениями, так как у него отдельные файлы.
apache_worker_server_limit: 16
apache_worker_start_servers: 3
apache_worker_min_spare_threads: 75
apache_worker_max_spare_threads: 250
apache_worker_max_clients: 400
apache_worker_max_requests_per_child: 0
apache_worker_thread_limit: 64
apache_worker_threads_per_child: 25
Конфигурация модуля MPM Worker. Доступна только для Apache 2.4 на Debian GNU/Linux.
apache_event_server_limit: 16
apache_event_start_servers: 3
apache_event_min_spare_threads: 75
apache_event_max_spare_threads: 250
apache_event_max_clients: 400
apache_event_max_requests_per_child: 0
apache_event_thread_limit: 64
apache_event_threads_per_child: 25
Конфигурация модуля MPM Event. Доступна только для Apache 2.4 на Debian GNU/Linux.
apache_remove_default_aliases: True
Удалить стандартные псевдонимы, которые идут с конфигурацией по умолчанию Apache.
apache_base_dir: '/var/www'
Базовая директория, где будут размещаться веб-сайты. Это значение используется вместе с тремя следующими для генерации Document Root для виртуальных хостов, у которых нет явного Document Root.
apache_web_subdir: 'web'
apache_ssl_subdir: 'ssl'
apache_private_subdir: 'private'
Поддиректория для HTTP веб-файлов, поддиректория для HTTPS веб-файлов и поддиректория для файлов htpasswd. Если у виртуального хоста нет Document Root, роль создаст три директории:
apache_base_dir/SITENAME/apache_web_subdir
apache_base_dir/SITENAME/apache_ssl_subdir
apache_base_dir/SITENAME/apache_private_subdir
apache_create_vhosts: true apache_vhosts_filename: 'vhosts.conf'
Если установлено значение true, будет создан глобальный конфигурационный файл vhosts и один файл для каждого виртуального хоста, управляемый переменными этой роли (см. ниже), и помещен в папку конфигурации Apache. Если установлено значение false, вы можете поместить свои собственные файлы vhosts в папку конфигурации Apache и пропустить удобные (но более простые) файлы, добавленные этой ролью.
apache_remove_default_vhost: false
На Debian/Ubuntu в конфигурации Apache включен стандартный виртуальный хост. Установите это значение в true
, чтобы удалить стандартный файл конфигурации виртуального хоста.
apache_global_vhost_settings: |
DirectoryIndex index.php index.html
# Добавьте другие глобальные настройки на последующих строках.
Вы можете добавить или переопределить глобальные настройки конфигурации Apache в файле vhosts, предоставленном ролью (предполагая, что apache_create_vhosts
установлен в true). По умолчанию он только устанавливает конфигурацию DirectoryIndex.
apache_global_vhost_access_log_format_combined: '%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"'
apache_global_vhost_access_log_format_proxy: '%{X-Forwarded-For}i %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"'
С помощью этих свойств вы можете настроить формат комбинированного лога и формат лога, используемый для записей запросов через прокси.
apache_global_vhost_aliases:
- name: /images
dest: /var/www/images
Список псевдонимов, которые нужно добавить в vhost.conf. Они будут доступны всем виртуальным хостам. apache_create_vhosts
должен быть включен.
apache_global_vhost_custom_errors:
- code: error-code
action: error-action
Настройки для пользовательских страниц ошибок Apache. Вы можете ознакомиться с возможными значениями action
в документации Apache.
apache_vhosts:
- servername: 'local.dev'
serveralias:
- 'alias1.local'
- 'alias2.local'
serveradmin: webmaster@localhost
documentroot: '/var/www/html'
enabled: true
separate_logs: true
separate_logs_proxy_format: true
custom_errors:
- code: error-code
action: error-action
frame_options: SAMEORIGIN
deflate: true
deflate_dont_vary: User-Agent
fileetag: true
aliases:
- name: alias-url
dest: alias-path
setenvif:
- attribute: 'X-Forwarded-For'
pattern: '(.*)'
var: 'ENV_VAR'
value: 'true'
redirect_to_https: false
allowoverride: 'All'
rewritebase: '/'
custom_rewrites:
- pattern: regex
substitution: text
flags: '[R=301,L]'
conditions:
- test_string: '%{HTTP_HOST}'
pattern: '^old\.site\.com$'
flags: '[NC]'
redirect_to_servername: True
exclude_from_redirect:
- 'valid.alias.com'
redirect_to_file: '/index.php'
include_htaccess: False
documentroot_extra_parameters: 'Custom Document Root configuration'
restricted_access:
- path: '/secret'
regex: false
all: false
ips:
- '127.0.0.1'
- '192.168.0.1'
hosts:
- 'www.site.com'
env_variables:
- 'ENV_VAR'
htpasswd: '/.htpasswd'
extra_parameters: 'Custom VHost configuration'
Добавьте набор свойств для каждого виртуального хоста. Единственное обязательное свойство — servername
. Если нет documentroot, он будет сгенерирован, как описано ранее.
Все запросы к ServerAlias будут перенаправлены на ServerName с кодом 301, кроме тех псевдонимов, которые указаны в свойстве exclude_from_redirect
.
Пути внутри restricted_access
должны быть относительными к Document Root. Если у виртуального хоста нет явного Document Root, файл htpasswd будет находиться в директории apache_private_subdir.
Знак |
обозначает многострочный скалярный блок в YAML, поэтому новые строки сохраняются в выходном конфигурационном файле.
apache_vhosts_ssl: []
По умолчанию нет настроенных SSL виртуальных хостов, но вы можете добавить их используя тот же шаблон, что и для apache_vhosts
, с несколькими дополнительными директивами:
apache_vhosts_ssl:
- servername: 'local.dev',
certificate_file: '/path/to/certificate.crt'
certificate_key_file: '/path/to/certificate.key'
certificate_chain_file: '/path/to/certificate_chain.crt'
sts: true
sts_max_age: '63072000'
sts_subdomains: true
redirect_to_http: false
Эти первые три свойства устанавливают путь к сертификатам. Следующие три позволяют переопределить глобальную конфигурацию STS. Последнее перенаправляет все запросы на HTTP хост.
apache_vhosts_ordered: False
Эта настройка заставляет Apache загружать виртуальные хосты в порядке, в котором они указаны в списках apache_vhosts
и apache_vhosts_ssl
. В противном случае Apache обрабатывает конфигурационные файлы в алфавитном порядке.
Другие директивы SSL могут управляться с помощью других переменных роли, связанных с SSL.
apache_ssl_protocol: 'All -SSLv2 -SSLv3'
apache_ssl_cipher_suite: 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH'
SSL-протоколы и шифры, которые используются/разрешены, когда клиенты устанавливают защищенные соединения с вашим сервером. Это надежные и безопасные значения по умолчанию, но для максимальной безопасности, производительности и/или совместимости может потребоваться их настройка. Вы можете найти некоторую информацию в Cipherli.st: Strong Ciphers for Apache, nginx and Lighttpd.
apache_frame_options: SAMEORIGIN
Эта настройка определяет политику безопасности сайтов, когда они загружаются в Frame или IFrame. Допустимые параметры можно проверить в статье в Википедии. Вы также можете использовать False
или no
, чтобы полностью пропустить установку заголовка. Эта глобальная конфигурация может быть переопределена для каждого виртуального хоста.
apache_sts: true
apache_sts_max_age: '63072000'
apache_sts_subdomains: true
HTTP Strict Transport Security включен по умолчанию, с максимальным возрастом в 1 год и включает поддомены. Эта глобальная конфигурация может быть переопределена для каждого виртуального хоста.
apache_mods_enabled:
- rewrite
- ssl
apache_mods_disabled: []
Эти свойства предназначены ТОЛЬКО для Debian и Ubuntu. Какие модули Apache включать или отключать. См. каталог mods-available
внутри каталога конфигурации Apache (/etc/apache2/mods-available
по умолчанию) для всех доступных модулей.
apache_packages:
- [специфичные для платформы]
Список пакетов для установки. По умолчанию это набор пакетов, специфичных для платформы, для систем на базе RedHat или Debian (см. vars/RedHat.yml
и vars/Debian.yml
для значений по умолчанию).
apache_state: started
Установить начальное состояние демон Apache, которое должно быть закреплено при выполнении этой роли. Обычно это следует оставлять как started
, но вы можете установить на stopped
, если хотите исправить конфигурацию Apache в течение выполнения плейбука или если вам не нужно, чтобы Apache запускался в момент выполнения этой роли.
apache_ignore_missing_ssl_certificate: true
Если вы хотите создавать SSL-виртуальные хосты только тогда, когда сертификат хоста присутствует (например, при использовании Let's Encrypt), установите apache_ignore_missing_ssl_certificate
в false
. При этом вам, возможно, понадобится запускать плейбук несколько раз, чтобы все виртуальные хосты были настроены (если другая часть плейбука генерирует SSL-сертификаты).
Зависимости
Нет.
Пример плейбука
- hosts: webservers
vars_files:
- vars/main.yml
roles:
- gcoop-libre.apache
Внутри vars/main.yml
:
apache_listen_port: 8080
apache_vhosts:
- servername: example.com
Лицензия
GPLv2
Информация об авторе
Эта роль была создана в 2016 году gcoop Cooperativa de Software Libre.
ansible-galaxy install gcoop-libre/ansible-role-apache