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.

О проекте

Apache 2.x for RHEL/CentOS, Debian/Ubuntu, SLES and Solaris

Установить
ansible-galaxy install gcoop-libre/ansible-role-apache
Лицензия
gpl-2.0
Загрузки
305