Saltar la navegación

Ficheros de configuración

La configuración de Apache se realiza en un único fichero, concretamente en /etc/apache2/apache2.conf, pero haciendo uso en su interior de directivas como Include e IncludeOptional, la configuración se distribuye en múltiples ficheros para una mejor organización. Todos los ficheros y directorios relacionados con la configuración de Apache se encuentran en la carpeta /etc/apache2.

# ls /etc/apache2
apache2.conf     conf-enabled  magic          mods-enabled  sites-available
conf-available    envvars       mods-available  ports.conf    sites-enabled

Las dos directivas anteriores lo que hacen es incluir el contenido del fichero que llevan como argumento en el punto donde se encuentra dicha directiva. La sintaxis es:

Include ruta/fichero

La ruta puede ser absoluta o relativa, y en este último caso, será relativa al valor que tenga la directiva ServerRoot, que normalmente es el directorio de configuración de Apache, y en Debian es /etc/apache2.

Include ports.conf

Un aspecto importante del funcionamiento de Apache relativo a la configuración, es que se disponen de una serie de directorios cuyos nombres acaban en "*-available" (mods-available, conf-available y sites-available), y sirven para dejar ahí todas las posibilidades disponibles de configuración de Apache, y hay otros directorios, cuyos nombres acaban en "*-enabled" (mods-enabled, conf-enabled y sites-enabled), que contendrán las configuraciones que verdaderamente tiene Apache activas de entre todas las disponibles. Así, estos directorios van por parejas, en uno están todas las posibilidades (available) y en el otro, su pareja, solo las que queremos que se carguen (enabled). La forma de activar una configuración concreta disponible consistirá en hacer un enlace simbólico de un fichero del directorio "*-available" dentro de su pareja "*-enabled".

# ls -l /etc/apache2/conf-available/security.conf 
-rw-r--r-- 1 root root 2190 sep 30 2019 /etc/apache2/conf-available/security.conf
# ls -l /etc/apache2/conf-enabled/security.conf

lrwxrwxrwx 1 root root 31 oct 2 21:19 /etc/apache2/conf-enabled/security.conf -> ../conf-available/security.conf

Estos enlaces simbólicos pueden hacerse directamente con el comando ln -s, pero existen los comandos a2ensite, a2dissite, a2enconf, a2disconf, a2enmod, a2dismod, que nos ayudan a hacerlo, siendo los comandos en (enabled) los que crean el enlace simbólico y los dis (disabled) los que lo eliminan. Veamos un ejemplo con un módulo (a2enmod y a2dismod), aunque sería lo mismo para sitios (a2ensite y a2dissite) y para configuraciones (a2enconf y a2disconf).

El módulo status está activado, y procedemos a desactivarlo:

# ls -l /etc/apache2/mods-enabled/status*
lrwxrwxrwx 1 root root 29 feb 17 12:42 /etc/apache2/mods-enabled/status.conf -> ../mods-available/status.conf
lrwxrwxrwx 1 root root 29 feb 17 12:42 /etc/apache2/mods-enabled/status.load -> ../mods-available/status.load
# a2dismod status
Module status disabled.
To activate the new configuration, you need to run:
systemctl restart apache2
# systemctl restart apache2
# ls -l /etc/apache2/mods-enabled/status*
ls: no se puede acceder a '/etc/apache2/mods-enabled/status*': No existe el fichero o el directorio

Como vemos, se nos recuerda que hay que reiniciar (restart, reload) el servicio para que los cambios de la configuración surtan efecto.

Hacemos ahora lo contrario, activamos el módulo status:

# a2enmod status
Enabling module status.
To activate the new configuration, you need to run:
systemctl restart apache2
# systemctl restart apache2
# ls -l /etc/apache2/mods-enabled/status*
lrwxrwxrwx 1 root root 29 feb 17 12:51 /etc/apache2/mods-enabled/status.conf -> ../mods-available/status.conf
lrwxrwxrwx 1 root root 29 feb 17 12:51 /etc/apache2/mods-enabled/status.load -> ../mods-available/status.load

Y luego, todo esto se completa en apache2.conf, cargándose solo las configuraciones activas (enabled) y no las disposibles (avalaible), como puede verse:

# cat /etc/apache2/apache2.conf
...
IncludeOptional mods-enabled/*.load
IncludeOptional mods-enabled/*.conf
...
IncludeOptional conf-enabled/*.conf ... IncludeOptional sites-enabled/*.conf
...

El fichero /etc/apache2/envars es importante para la configuración de Apache, pues en él se definen una serie de variables de entorno necesarias.

# cat /etc/apache2/envvars 
...
export APACHE_RUN_USER=www-data export APACHE_RUN_GROUP=www-data # temporary state file location. This might be changed to /run in Wheezy+1 export APACHE_PID_FILE=/var/run/apache2/apache2$SUFFIX.pid export APACHE_RUN_DIR=/var/run/apache2$SUFFIX export APACHE_LOCK_DIR=/var/lock/apache2$SUFFIX # Only /var/log/apache2 is handled by /etc/logrotate.d/apache2. export APACHE_LOG_DIR=/var/log/apache2$SUFFIX ...

La configuración de Apache, igual que muchos otros servicios, utiliza el carácter # para indicar un comentario hasta el final de la línea, pero tiene que ir solo en una línea, no puede ponerse al final de ninguna instrucción.

Por último, los cambios de configuración solo tendrán efecto cuando se reinicie el servicio.

# systemctl restart apache2
# systemctl reload apache2