geerlingguy.apache
Rola Ansible: Apache 2.x
Rola Ansible, która instaluje Apache 2.x na RHEL/CentOS, Debian/Ubuntu, SLES oraz Solaris.
Wymagania
Jeśli używasz SSL/TLS, musisz dostarczyć własne pliki certyfikatów i kluczy. Możesz wygenerować samopodpisany certyfikat za pomocą komendy openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout example.key -out example.crt
.
Jeśli planujesz używać Apache z PHP, polecam użycie roli geerlingguy.php
do instalacji PHP. Możesz korzystać z mod_php (dodając odpowiedni pakiet, np. libapache2-mod-php5
dla Ubuntu, do php_packages
) lub użyć geerlingguy.apache-php-fpm
, aby połączyć Apache z PHP przez FPM. Zobacz dokumentację tej roli, aby uzyskać więcej informacji.
Zmienne roli
Dostępne zmienne są wymienione poniżej wraz z wartościami domyślnymi (patrz defaults/main.yml
):
apache_enablerepo: ""
Repozytorium do użycia podczas instalacji Apache (używane tylko na systemach RHEL/CentOS). Jeśli chcesz nowsze wersje Apache, niż te dostępne w domyślnych repozytoriach systemu, korzystaj z repozytoriów takich jak EPEL (które można zainstalować za pomocą roli geerlingguy.repo-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, gdy masz inny serwis (jak np. reverse proxy) nasłuchujący na porcie 80 lub 443 i musisz zmienić domyślne ustawienia.
apache_create_vhosts: true
apache_vhosts_filename: "vhosts.conf"
apache_vhosts_template: "vhosts.conf.j2"
Jeśli ustawione na true, plik vhosts, zarządzany przez zmienne tej roli (patrz poniżej), zostanie utworzony i umieszczony w folderze konfiguracyjnym Apache. Jeśli ustawione na false, możesz umieścić własny plik vhosts w folderze konfiguracyjnym Apache i pominąć ten bardziej podstawowy, który dodaje ta rola. Możesz także nadpisać szablon używany i ustawić ścieżkę do własnego szablonu, jeśli chcesz dostosować układ swoich VirtualHosts.
apache_remove_default_vhost: false
W Debian/Ubuntu w konfiguracji Apache jest zawarty domyślny wirtualny host. Ustaw to na true
, aby usunąć ten domyślny plik konfiguracyjny wirtualnego hosta.
apache_global_vhost_settings: |
DirectoryIndex index.php index.html
# Dodaj inne globalne ustawienia na 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) za pomocą tej zmiennej. Domyślnie ustawia tylko konfigurację DirectoryIndex.
apache_vhosts:
# Dodatkowe opcjonalne właściwości: 'serveradmin, serveralias, extra_parameters'.
- servername: "local.dev"
documentroot: "/var/www/html"
Dodaj zestaw właściwości dla każdego wirtualnego hosta, w tym servername
(wymagane), documentroot
(wymagane), allow_override
(opcjonalne: domyślnie wartość apache_allow_override
), options
(opcjonalne: domyślnie wartość apache_options
), serveradmin
(opcjonalne), serveralias
(opcjonalne) i extra_parameters
(opcjonalne: możesz dodać dowolne dodatkowe linie konfiguracyjne).
Oto przykład użycia extra_parameters
, aby dodać RewriteRule do przekierowania wszystkich żądań do witryny www.
:
- servername: "www.local.dev"
serveralias: "local.dev"
documentroot: "/var/www/html"
extra_parameters: |
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
|
oznacza blok skalarów wielolinijkowych w YAML, więc nowe linie są zachowywane w wynikowym pliku konfiguracyjnym.
apache_vhosts_ssl: []
Domyślnie nie skonfigurowano vhostów SSL, ale możesz je dodać, używając tego samego wzoru co apache_vhosts
, z kilkoma dodatkowymi dyrektywami, jak w poniższym przykładzie:
apache_vhosts_ssl:
- servername: "local.dev"
documentroot: "/var/www/html"
certificate_file: "/home/vagrant/example.crt"
certificate_key_file: "/home/vagrant/example.key"
certificate_chain_file: "/path/to/certificate_chain.crt"
extra_parameters: |
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
Inne dyrektywy SSL mogą być zarządzane za pomocą innych zmiennych związanych z SSL w roli.
apache_ssl_no_log: true
Czy wydrukować dane wyjściowe związane z zadaniami SSL na konsoli podczas uruchamiania playbooka.
apache_ssl_protocol: "All -SSLv2 -SSLv3"
apache_ssl_cipher_suite: "AES256+EECDH:AES256+EDH"
Protokół SSL i zestawy szyfrów, które są używane/zezwolone, gdy klienci nawiązują bezpieczne połączenia z Twoim serwerem. To są bezpieczne i rozsądne wartości domyślne, ale dla maksymalnego bezpieczeństwa, wydajności i/lub zgodności, może być konieczne dostosowanie tych ustawień.
apache_allow_override: "All"
apache_options: "-Indexes +FollowSymLinks"
Wartości domyślne dla dyrektyw AllowOverride
i Options
dla katalogu documentroot
każdego vhosta. Vhost może nadpisać te wartości, określając allow_override
lub options
.
apache_mods_enabled:
- rewrite
- ssl
apache_mods_disabled: []
Jakie moduły Apache mają być włączone lub wyłączone (zostaną one połączone w odpowiednie miejsce). Zobacz katalog mods-available
wewnątrz katalogu konfiguracyjnego Apache (/etc/apache2/mods-available
w Debian/Ubuntu) dla wszystkich dostępnych modułów.
apache_packages:
- [specyficzne dla platformy]
Lista pakietów do zainstalowania. Domyślnie to zbiór pakietów specyficznych dla platformy dla systemów RedHat lub Debian (zobacz vars/RedHat.yml
i vars/Debian.yml
dla domyślnych wartości).
apache_state: started
Ustaw początkowy stan procesu Apache, który ma być egzekwowany podczas uruchamiania tej roli. Zazwyczaj powinno to pozostać started
, ale możesz ustawić to na stopped
, jeśli musisz naprawić konfigurację Apache podczas uruchamiania playbooka lub jeśli nie chcesz, aby Apache był uruchomiony w momencie uruchamiania tej roli.
apache_enabled: yes
Ustaw status usługi Apache przy starcie systemu. Zazwyczaj powinno to pozostać yes
, ale możesz ustawić to na no
, jeśli musisz uruchomić Ansible, pozostawiając usługę wyłączoną.
apache_packages_state: present
Jeśli aktywowałeś dodatkowe repozytoria, takie jak ondrej/apache2, geerlingguy.repo-epel lub geerlingguy.repo-remi, możesz chcieć łatwego sposobu na aktualizację wersji. Możesz ustawić to na latest
(w połączeniu z apache_enablerepo
na RHEL) i bezpośrednio zaktualizować do innej wersji Apache z innego repozytorium (zamiast odinstalowywać i ponownie instalować Apache).
apache_ignore_missing_ssl_certificate: true
Jeśli chcesz tworzyć vhosty SSL tylko wtedy, gdy certyfikat vhosta jest obecny (np. gdy używasz Let's Encrypt), ustaw apache_ignore_missing_ssl_certificate
na false
. W takim przypadku będziesz musiał uruchomić swój playbook więcej niż raz, aby wszystkie vhosty zostały skonfigurowane (jeśli inna część playbooka generuje certyfikaty SSL).
Podstawowa autoryzacja oparta na .htaccess
Jeśli potrzebujesz wsparcia dla Basic Auth, możesz to dodać albo przez własny szablon, albo dodając extra_parameters
do konfiguracji VirtualHost, jak poniżej:
extra_parameters: |
<Directory "/var/www/password-protected-directory">
Require valid-user
AuthType Basic
AuthName "Proszę się uwierzytelnić"
AuthUserFile /var/www/password-protected-directory/.htpasswd
</Directory>
Aby zabezpieczyć hasłem wszystko w dyrektywie VirtualHost, użyj bloku Location
zamiast Directory
:
<Location "/">
Require valid-user
....
</Location>
Będziesz potrzebować wygenerować/wgrać własny plik .htpasswd
w swoim playbooku. Mogą być dostępne inne role, które wspierają tę funkcjonalność w bardziej zintegrowany sposób.
Zależności
Brak.
Przykładowy Playbook
- hosts: webservers
vars_files:
- vars/main.yml
roles:
- { role: geerlingguy.apache }
W pliku vars/main.yml
:
apache_listen_port: 8080
apache_vhosts:
- {servername: "example.com", documentroot: "/var/www/vhosts/example_com"}
Licencja
MIT / BSD
Informacje o autorze
Ta rola została stworzona w 2014 roku przez Jeffa Geerlinga, autora Ansible for DevOps.
ansible-galaxy install geerlingguy.apache