gcoop-libre.apache

Apache 2.x

Rola Ansible, która instaluje Apache 2.x na systemach RHEL/CentOS, Debian/Ubuntu, SLES i Solaris.

Wymagania

Rola nie zarządza plikami certyfikatów i kluczy dla stron korzystających z SSL/TLS.

Jeśli potrzebujesz Apache z PHP, możesz dodać pakiety PHP do zmiennej apache_packages. Możesz także użyć innej roli, takiej jak geerlingguy.php lub geerlingguy.apache-php-fpm, jeśli preferujesz używać PHP jako FPM zamiast modułu Apache.

Zmienne Roli

Dostępne zmienne są wymienione poniżej, wraz z wartościami domyślnymi (patrz defaults/main.yml):

apache_enablerepo: ''

Repozytorium, które ma być używane podczas instalacji Apache (używane tylko w systemach RHEL/CentOS). Jeśli chcesz nowsze wersje Apache niż te dostępne w podstawowych repozytoriach systemu, użyj repozytorium takiego jak EPEL.

apache_listen_ip: '*'
apache_listen_port: 80
apache_listen_port_ssl: 443

Adres IP i porty, na których Apache powinien nasłuchiwać. Przydatne, jeśli masz inny serwis (np. proxy odwrotne), który nasłuchuje na porcie 80 lub 443 i potrzebujesz zmienić domyślne ustawienia.

apache_keepalive: true
apache_keepalive_requests: 500
apache_keepalive_timeout: 5

Te właściwości włączają trwałe połączenia HTTP, a ich czas oczekiwania oraz maksymalna liczba żądań mogą być dostosowane.

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

Konfiguracja modułu serwera MPM Prefork. Te właściwości mają zastosowanie do modułu MPM Prefork oraz modułu MPM Worker. Tylko w Apache 2.4 na Debianie można konfigurować tryby MPM z różnymi wartościami, ponieważ mają osobne pliki.

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

Konfiguracja modułu MPM Worker. To dostępne tylko w Apache 2.4 na Debianie 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

Konfiguracja modułu MPM Event. To dostępne tylko w Apache 2.4 na Debianie GNU/Linux.

apache_remove_default_aliases: True

Usuń domyślne aliasy dostarczane z domyślną konfiguracją Apache.

apache_base_dir: '/var/www'

Podstawowy katalog, w którym będą przechowywane strony internetowe. Ta wartość jest używana z kolejnymi trzema do wygenerowania katalogu dokumentów dla wirtualnych hostów, które nie mają wyraźnie określonego katalogu dokumentów.

apache_web_subdir: 'web'
apache_ssl_subdir: 'ssl'
apache_private_subdir: 'private'

Podkatalog dla plików HTTP, HTTPS oraz podkatalog dla plików htpasswd. Jeśli wirtualny host nie ma katalogu dokumentów, rola generuje trzy katalogi:

  • 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'

Jeśli ustawiono na true, zostanie utworzony globalny plik konfiguracyjny vhosts oraz jeden plik dla każdego wirtualnego hosta, zarządzany przez zmienne tej roli (patrz poniżej), a następnie umieszczony w folderze konfiguracyjnym Apache. Jeśli ustawisz na false, możesz umieścić własne pliki vhosts w folderze konfiguracyjnym Apache, pomijając te dodawane przez tę rolę.

apache_remove_default_vhost: false

Na Debianie/Ubuntu w konfiguracji Apache zawarty jest domyślny wirtualny host. Ustaw to na true, aby usunąć ten plik konfiguracyjny domyślnego wirtualnego hosta.

apache_global_vhost_settings: |
  DirectoryIndex index.php index.html
  # Dodaj inne globalne ustawienia w kolejnych liniach.

Możesz dodać lub nadpisać globalne ustawienia konfiguracyjne Apache w pliku vhosts dostarczonym przez rolę (zakładając, że apache_create_vhosts jest ustawione na true), używając tej zmiennej. Domyślnie ustawia jedynie konfigurację 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\"'

Dzięki tym właściwościom możesz dostosować format logu połączeń oraz format logu używanego do rejestrowania żądań skierowanych przez proxy.

apache_global_vhost_aliases:
  - name: /images
    dest: /var/www/images

Lista aliasów do dodania w vhost.conf. Będą dostępne dla wszystkich wirtualnych hostów. apache_create_vhosts powinno być włączone.

apache_global_vhost_custom_errors:
  - code: error-code
    action: error-action

Dostosowania dla stron błędów Apache. Możesz przeczytać o wartościach action w dokumentacji 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'

Dodaje zestaw właściwości dla każdego wirtualnego hosta. Jedynym wymaganym jest servername. Jeśli nie ma documentroot, zostanie wygenerowany zgodnie z opisem powyżej.

Wszystkie żądania do ServerAlias będą przekierowywane do ServerName z kodem 301, z wyjątkiem tych aliasów określonych w właściwości exclude_from_redirect.

Ścieżki w restricted_access powinny być względne do Document Root. Jeśli wirtualny host nie ma wyraźnie określonego Document Root, plik htpasswd będzie w katalogu apache_private_subdir.

Znak | oznacza blok mnogiej wartości w YAML, więc nowe linie są zachowywane w rezultacie pliku konfiguracyjnego.

apache_vhosts_ssl: []

Domyślnie nie ma skonfigurowanych wirtualnych hostów SSL, ale możesz je dodać używając tego samego wzoru co apache_vhosts, z kilkoma dodatkowymi dyrektywami:

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

Te pierwsze trzy właściwości ustawiają ścieżki certyfikatów. Następne trzy pozwalają na nadpisanie globalnej konfiguracji STS. Ostatnia przekierowuje wszystkie żądania do hosta HTTP.

apache_vhosts_ordered: False

Ta właściwość wymusza, aby Apache załadował wirtualne hosty w kolejności, w jakiej występują na liście apache_vhosts i apache_vhosts_ssl. W przeciwnym razie Apache przetwarza pliki konfiguracyjne alfabetycznie.

Inne dyrektywy SSL mogą być zarządzane za pomocą innych zmiennych związanych z SSL.

apache_ssl_protocol: 'Wszystkie -SSLv2 -SSLv3'
apache_ssl_cipher_suite: 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH'

Protokóły SSL i zestawy szyfrów, które są używane / dozwolone, gdy klienci łączą się bezpiecznie z Twoim serwerem. To są bezpieczne i rozsądne domyślne ustawienia, ale dla maksymalnego bezpieczeństwa, wydajności lub kompatybilności, możesz potrzebować dostosować te ustawienia. Możesz znaleźć dodatkowe informacje na stronie Cipherli.st: Strong Ciphers for Apache, nginx and Lighttpd.

apache_frame_options: SAMEORIGIN

Ta właściwość ustawia politykę bezpieczeństwa stron, gdy są ładowane w ramach Frame lub IFrame. Możesz sprawdzić dostępne opcje w tym artykule Wikipedii. Możesz również użyć False lub no, aby pominąć ustawienie nagłówka zupełnie. Ta globalna konfiguracja może być nadpisana dla każdego wirtualnego hosta.

apache_sts: true
apache_sts_max_age: '63072000'
apache_sts_subdomains: true

HTTP Strict Transport Security jest domyślnie włączone, z czasem Max Age wynoszącym 1 rok, a subdomeny są wliczane. Te globalne konfiguracje mogą być nadpisywane dla każdego wirtualnego hosta.

apache_mods_enabled:
  - rewrite
  - ssl
apache_mods_disabled: []

Te właściwości dotyczą TYLKO Debiana i Ubuntu. Jakie moduły Apache włączyć lub wyłączyć. Zobacz katalog mods-available wewnątrz katalogu konfiguracyjnego Apache (/etc/apache2/mods-available domyślnie) w celu zapoznania się ze wszystkimi dostępnymi modułami.

apache_packages:
  - [specyficzne dla platformy]

Lista pakietów do zainstalowania. Domyślnie jest to zestaw pakietów specyficznych dla platformy dla systemów RedHat lub Debian (patrz vars/RedHat.yml i vars/Debian.yml dla wartości domyślnych).

apache_state: started

Ustaw początkowy stan demona Apache, który ma być wymuszany podczas uruchamiania tej roli. Generalnie powinno to pozostać started, ale możesz ustawić to na stopped, jeśli musisz naprawić konfigurację Apache podczas uruchamiania playbooka lub w przypadku, gdy nie chcesz, aby Apache był uruchomiony w momencie, gdy ta rola jest uruchamiana.

apache_ignore_missing_ssl_certificate: true

Jeśli chcesz tworzyć wirtualne hosty SSL tylko wtedy, gdy certyfikat hosta wirtualnego jest obecny (np. korzystając z Let’s Encrypt), ustaw apache_ignore_missing_ssl_certificate na false. W takim przypadku możesz potrzebować uruchomić swój playbook więcej niż raz, aby skonfigurować wszystkie wirtualne hosty (jeśli inna część playbooka generuje certyfikaty SSL).

Zależności

Brak.

Przykładowy Playbook

- hosts: webservers
  vars_files:
    - vars/main.yml
  roles:
     - gcoop-libre.apache

W pliku vars/main.yml:

apache_listen_port: 8080
apache_vhosts:
  - servername: example.com

Licencja

GPLv2

Informacje o autorze

Ta rola została stworzona w 2016 roku przez gcoop Cooperativa de Software Libre.

O projekcie

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

Zainstaluj
ansible-galaxy install gcoop-libre.apache
Licencja
gpl-2.0
Pobrania
320