Apache, más precisamente Apache HTTP Server, es un servidor Web multiplataforma seguro, eficiente y extensible de código abierto. Provee la funcionalidad suficiente para cubrir todos los requisitos especificados por los estándares del protocolo HTTP actual.
Este artículo explica cómo instalar el servidor Apache en Debian o Devuan desde el gestor de paquetes APT, junto con su configuración y comandos básicos.
Instalación de Apache
Para comenzar, actualizar el sistema:
# apt-get update && apt-get upgrade
Luego instalar Apache ejecutando:
# apt-get install apache2
Una vez finalizado, es posible comprobar que el servidor se encuentra corriendo y escuchando peticiones en el puerto 80 (HTTP):
root@devuan:~# netstat -tulpn | grep apache2 tcp6 0 0 :::80 :::* LISTEN 1483/apache2
También es posible acceder a una dirección IP correspondiente al servidor desde un navegador Web (o utilizando curl
o wget
desde línea de comandos) para ver la clásica página "It works!".
Por defecto, Apache utiliza el módulo de multi-procesamiento MPM (Multi-Processing Module) event, el cual implementa un servidor híbrido conformado por subprocesos multihilados. Aunque muchas instalaciones utilizan el módulo MPM prefork, que utiliza un pool de procesos hijos (pre-forked), en vez de hilos, para procesar las solicitudes. También está disponible el módulo worker, el cual implementa un híbrido de múltiples subprocesos multihilados.
El módulo MPM elegido define qué estrategia de implementación utilizará Apache para procesar múltiples requerimientos en simultáneo. Cada una tiene diferentes requisitos a nivel sistema operativo y apunta a diferentes objetivos. Es recomendable revisar cada una y elegir adecuadamente de acuerdo a las metas de escalabilidad y eficiencia. En caso de duda utilizar el módulo por defecto (no realizar cambios en al configuración).
Si se desea cambiar a prefork, ejecutar:
# a2enmod mpm_prefork
Si se desea cambiar a event, ejecutar:
# a2enmod mpm_event
Si se desea cambiar a worker, ejecutar:
# a2enmod mpm_worker
Luego, reiniciar Apache.
Configuración de Apache
En los sistemas basados en Debian/Devuan y derivados, toda la configuración de Apache se encuentra dentro del directorio /etc/apache2
.
La configuración global del servidor se encuentra en el archivo apache2.conf
. Generalmente, en los sistemas Debian/Devuan no debe tocarse este archivo, ya que desde aquí se incluyen todos los archivos que poseen las configuraciones personalizadas.
El archivo envvars
posee la configuración de variables de entorno utilizadas por Apache, por ejemplo usuario y grupo con el que corre el servidor; directorios para guardar PIDs, locks, logs, etc.; y configuración de idioma (Locale). En la mayoría de los casos, este archivo tampoco debe modificarse.
El archivo ports.conf
define las direcciones IP y puertos en los cuales Apache acepta peticiones. Este archivo es muy importante y debe modificarse adecuadamente, por ejemplo para permitir múltiples certificados SSL en una misma dirección IP.
Luego existen dos pares de directorios muy interesantes, que ordenan de manera brillante las configuraciones personalizadas del servidor Apache:
mods-available/
- Directorio que contiene las configuraciones de todos los módulos disponibles.mods-enabled/
- Módulos habilitados.sites-available/
- Directorio que contiene las configuraciones de todos los sitios disponibles.sites-enabled/
- Sitios habilitados.
Las configuraciones para todos los módulos y todos sitios se encuentran en los directorios *-available/
. Debian determina qué módulos y sitios están habilitados creando links simbólicos en sendos directorios *-enabled/
. De esta forma, los directorios mods-available/
y sites-available/
contienen las configuraciones de módulos y sitios respectivamente, mientras que mods-enabled/
y mods-enabled/
enlazan a las configuraciones (localizadas en mods-available/
y sites-available/
respectivamente) de los módulos/sitios habilitados.
Para no tener que gestionar enlaces simbólicos manualmente, el paquete apache2
provee los siguientes utilitarios:
a2enmod
para habilitar módulos.a2dismod
para deshabilitar módulos.a2ensite
para habilitar sitios.a2dissite
para deshabilitar sitios.
Ejemplos:
root@devuan:# a2ensite default-ssl Enabling site default-ssl. To activate the new configuration, you need to run: service apache2 reload
root@devuan:~# a2enmod rewrite Enabling module rewrite. To activate the new configuration, you need to run: service apache2 restart
Cuando se habilita/deshabilita un módulo es necesario luego reiniciar el servidor, mientras que cuando se habilita/deshabilita un sitio sólo es necesario recargar la configuración de Apache.
Si se desea listar los módulos de Apache cargados se debe recurrir al utilitario apache2ctl
. Los módulos de Apache se instalan en el directorio /usr/lib/apache2/modules/
. El utilitario apache2ctl
posee además funcionalidades para visualizar el estado del servidor, a través de los subcomandos status
y fullstatus
.
Apache incluye la configuración de un sitio Web por defecto llamado "default". Su configuración se encuentra en el archivo 000-default.conf
:
<VirtualHost *:80> ServerAdmin webmaster@localhost DocumentRoot /var/www <Directory /> Options FollowSymLinks AllowOverride None </Directory> <Directory /var/www/> Options Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny allow from all </Directory> ErrorLog ${APACHE_LOG_DIR}/error.log # Possible values include: debug, info, notice, warn, error, crit, # alert, emerg. LogLevel warn CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost>
En esta configuración simple se define un sitio genérico que resuelve en todas las direcciones IP en las que atienda el servidor Web, en el puerto 80. La raíz del sitio Web se encuentra en el directorio /var/www/
, y los logs de accesos y errores se almacenan en los archivos /var/log/apache2/access.log
y /var/log/apache2/error.log
respectivamente.
Por seguridad, es recomendable deshabilitar el sitio Web por defecto y definir uno específico para cada sitio que se hospedará en el servidor.
Por lo general un servidor Web hospedará uno o varios dominios de Internet, por ejemplo "www.linuxito.com".
Para mantener el esquema ordenado y prolijo propuesto por Debian, se recomienda que cada sitio a hospedar en el servidor se configure en su propio archivo, dentro del directorio /etc/apache2/sites-available/
. Por ejemplo, si se desea hospedar el sitio Web correspondiente al dominio "www.linuxito.com", se puede crear un archivo llamado www.linuxito.com.conf
:
# nano /etc/apache2/sites-available/www.linuxito.com.conf
Con el siguiente contenido:
<VirtualHost *:80> ServerAdmin webmaster@localhost ServerName www.linuxito.com DocumentRoot /var/www/www.linuxito.com <Directory /> Options FollowSymLinks AllowOverride None </Directory> <Directory /var/www/www.linuxito.com> Options Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny allow from all </Directory> ErrorLog ${APACHE_LOG_DIR}/www.linuxito.com-error.log # Possible values include: debug, info, notice, warn, error, crit, # alert, emerg. LogLevel warn CustomLog ${APACHE_LOG_DIR}/www.linuxito.com-access.log combined </VirtualHost>
La raíz del sitio se alojará en el directorio www.linuxito.com/
, por ende es necesario crearlo:
# mkdir /var/www/www.linuxito.com
Los logs de acceso y errores se separan del sitio por defecto, para poder identificar a qué sitio corresponde cada acceso.
Una vez creado el sitio, solo basta habilitarlo y recargar la configuración de Apache:
# a2ensite www.linuxito.com # service apache2 reload
El utilitario a2ensite
permite omitir la extensión .conf
al indicar la configuración de un sitio.
El siguiente paso seguramente sea configurar y habilitar SSL/TLS para proveer HTTPS.
¿Vas a necesitar dar soporte a aplicaciones PHP con bases de datos MySQL/MariaDB en tu servidor Apache? Próximamente explicaré cómo...
Referencias
Fuente: linuxito