gcoop-libre.apache
Apache 2.x
Un rol de Ansible que instala Apache 2.x en RHEL/CentOS, Debian/Ubuntu, SLES y Solaris.
Requisitos
El rol no gestiona los archivos de certificado y clave para los sitios que usan SSL/TLS.
Si necesitas Apache con PHP, puedes añadir los paquetes de PHP a la variable apache_packages
. O puedes usar otro rol, como el rol geerlingguy.php
o geerlingguy.apache-php-fpm
si prefieres usar PHP como FPM en lugar de un módulo de Apache.
Variables del Rol
Las variables disponibles se enumeran a continuación, junto con los valores predeterminados (ver defaults/main.yml
):
apache_enablerepo: ''
El repositorio a utilizar al instalar Apache (solo utilizado en sistemas RHEL/CentOS). Si deseas versiones más recientes de Apache que las disponibles en los repositorios principales del SO, utiliza un repositorio como EPEL.
apache_listen_ip: '*'
apache_listen_port: 80
apache_listen_port_ssl: 443
La dirección IP y puertos en los que Apache debe estar escuchando. Útil si tienes otro servicio (como un proxy inverso) escuchando en el puerto 80 o 443 y necesitas cambiar las predeterminadas.
apache_keepalive: true
apache_keepalive_requests: 500
apache_keepalive_timeout: 5
Estas propiedades habilitan conexiones HTTP persistentes y su tiempo de espera y solicitudes máximas pueden ser personalizadas.
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
La configuración del módulo MPM del servidor. Estas propiedades se aplicarán al módulo MPM Prefork y al módulo MPM Worker. Solo en Apache 2.4 en Debian puedes configurar los modos MPM con diferentes valores, porque tiene archivos separados.
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
La configuración del módulo MPM Worker. Esto solo está disponible para Apache 2.4 en 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
La configuración del módulo MPM Event. Esto solo está disponible para Apache 2.4 en Debian GNU/Linux.
apache_remove_default_aliases: True
Eliminar los alias predeterminados que vienen con la configuración predeterminada de Apache.
apache_base_dir: '/var/www'
El directorio base donde se alojarán los sitios web. Este valor se utiliza con los siguientes tres para generar el Document Root para los Hosts Virtuales que no tienen un Document Root explícito.
apache_web_subdir: 'web'
apache_ssl_subdir: 'ssl'
apache_private_subdir: 'private'
El subdirectorio para los archivos web HTTP, el de archivos web HTTPS y el subdirectorio para los archivos htpasswd. Si un Host Virtual no tiene Document Root, el rol generará tres directorios:
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'
Si se establece en true, se creará un archivo de configuración global de vhosts y un archivo por cada Host Virtual, gestionado por las variables de este rol (ver abajo), que se colocará en la carpeta de configuración de Apache. Si se establece en false, puedes colocar tus propios archivos vhosts en la carpeta de configuración de Apache y omitir los convenientes (pero más básicos) que añade este rol.
apache_remove_default_vhost: false
En Debian/Ubuntu, se incluye un host virtual predeterminado en la configuración de Apache. Establece esto en true
para eliminar ese archivo de configuración de host virtual predeterminado.
apache_global_vhost_settings: |
DirectoryIndex index.php index.html
# Agrega otras configuraciones globales en las líneas siguientes.
Puedes añadir o sobrescribir configuraciones globales de Apache en el archivo de vhosts proporcionado por el rol (suponiendo que apache_create_vhosts
sea true) usando esta variable. De forma predeterminada, solo establece la configuración de 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\"'
Con estas propiedades puedes personalizar el formato de registro combinado y el formato de registro utilizado para registrar las solicitudes realizadas a través de un proxy.
apache_global_vhost_aliases:
- name: /images
dest: /var/www/images
Lista de alias para añadir en vhost.conf. Estarán disponibles para todos los Hosts Virtuales. apache_create_vhosts
debería estar habilitado.
apache_global_vhost_custom_errors:
- code: error-code
action: error-action
Personalizaciones para las páginas de error de Apache. Puedes leer sobre los valores de action
en la documentación de 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: 'Configuración personalizada de Document Root'
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: 'Configuración personalizada de VHost'
Añade un conjunto de propiedades por host virtual. El único requisito es servername
. Si no hay documentroot, se generará como se describió antes.
Todas las solicitudes a un ServerAlias se redirigirán al ServerName con un código 301, excepto aquellos alias especificados en la propiedad exclude_from_redirect
.
Las rutas dentro de restricted_access
deben ser relativas al Document Root. Si el Host Virtual no tiene un Document Root explícito, el archivo htpasswd estará en el directorio apache_private_subdir.
El |
denota un bloque escalar multilínea en YAML, por lo que se conservan los saltos de línea en el archivo de configuración resultante.
apache_vhosts_ssl: []
No se configuran hosts virtuales SSL de forma predeterminada, pero puedes añadirlos utilizando el mismo patrón que apache_vhosts
, con algunas directivas adicionales:
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
Estas tres primeras propiedades establecen la ruta de los certificados. Las siguientes tres permiten la sobrescritura de la configuración global de STS. La última redirige todas las solicitudes al host HTTP.
apache_vhosts_ordered: False
Esta propiedad obliga a Apache a cargar los Hosts Virtuales en el orden en que aparecen en las listas apache_vhosts
y apache_vhosts_ssl
. De lo contrario, Apache procesa los archivos de configuración alfabéticamente.
Existen otras directivas relacionadas con SSL que se pueden gestionar con otras variables de rol relacionadas con SSL.
apache_ssl_protocol: 'All -SSLv2 -SSLv3'
apache_ssl_cipher_suite: 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH'
Los protocolos SSL y los conjuntos de cifrado que se usan/permiten cuando los clientes establecen conexiones seguras con tu servidor. Estos son valores predeterminados seguros, pero para máxima seguridad, rendimiento y/o compatibilidad, es posible que necesites ajustar estas configuraciones. Puedes encontrar algo de información en Cipherli.st: Cifrados Fuertes para Apache, nginx y Lighttpd.
apache_frame_options: SAMEORIGIN
Esta propiedad establece la política de seguridad de los sitios cuando se cargan dentro de un Frame o IFrame. Puedes consultar las opciones válidas en este artículo de Wikipedia. También puedes usar False
o no
aquí para omitir el ajuste del encabezado por completo. Esta configuración global puede ser sobrescrita por host virtual.
apache_sts: true
apache_sts_max_age: '63072000'
apache_sts_subdomains: true
La seguridad estricta de transporte HTTP está habilitada de forma predeterminada, con una Edad Máxima de 1 año y los subdominios están incluidos. Estas configuraciones globales pueden ser sobrescritas por cada host virtual.
apache_mods_enabled:
- rewrite
- ssl
apache_mods_disabled: []
Estas propiedades son SOLO para Debian y Ubuntu. Qué módulos de Apache habilitar o deshabilitar. Consulta el directorio mods-available
dentro del directorio de configuración de Apache (/etc/apache2/mods-available
por defecto) para ver todos los módulos disponibles.
apache_packages:
- [específico de la plataforma]
La lista de paquetes que se instalarán. Esto predetermina un conjunto de paquetes específicos de la plataforma para sistemas RedHat o basados en Debian (ver vars/RedHat.yml
y vars/Debian.yml
para los valores predeterminados).
apache_state: started
Establece el estado inicial del daemon de Apache a aplicar cuando se ejecute este rol. Generalmente debe permanecer en started
, pero puedes establecerlo en stopped
si necesitas corregir la configuración de Apache durante la ejecución de un playbook o si no deseas que Apache se inicie en el momento en que se ejecuta este rol.
apache_ignore_missing_ssl_certificate: true
Si solo deseas crear hosts virtuales SSL cuando el certificado del host virtual esté presente (por ejemplo, al usar Let's Encrypt), establece apache_ignore_missing_ssl_certificate
en false
. Al hacer esto, es posible que debas ejecutar tu playbook más de una vez para que todos los hosts virtuales estén configurados (si otra parte del playbook genera los certificados SSL).
Dependencias
Ninguna.
Ejemplo de Playbook
- hosts: webservers
vars_files:
- vars/main.yml
roles:
- gcoop-libre.apache
Dentro de vars/main.yml
:
apache_listen_port: 8080
apache_vhosts:
- servername: example.com
Licencia
GPLv2
Información del Autor
Este rol fue creado en 2016 por gcoop Cooperativa de Software Libre.
Apache 2.x for RHEL/CentOS, Debian/Ubuntu, SLES and Solaris
ansible-galaxy install gcoop-libre.apache