30.6. Configuración

Una vez instalado Apache, sólo es necesario configurarlo si se tienen requisitos o necesidades especiales. La configuración de Apache puede llevarse a cabo mediante SuSEconfig y YaST o bien editando directamente el archivo /etc/apache2/httpd.conf.

30.6.1. Configuración con SuSEconfig

Las opciones que puede definir en /etc/sysconfig/apache2) son integradas en los archivos de configuración de Apache por medio de SuSEconfig. Las posibilidades de configuración incluidas bastan en la mayoría de los casos. En el archivo se encuentran comentarios explicativos sobre cada variable.

30.6.1.1. Archivos de configuración propios

En lugar de realizar los cambios directamente en el archivo de configuración /etc/apache2/httpd.conf, es posible definir un archivo de configuración propio mediante las variables APACHE_CONF_INCLUDE_FILES (por ejemplo httpd.conf.local, que será cargado posteriormente en el archivo de configuración principal. De este modo, los cambios efectuados en la configuración se mantienen aunque el archivo /etc/apache2/httpd.conf se sobreescriba al realizar una nueva instalación.

30.6.1.2. Módulos

Los módulos que han sido instalados con YaST se activan introduciendo el nombre del módulo en la lista de la variable APACHE_MODULES. Esta variable se encuentra en el archivo /etc/sysconfig/apache2.

30.6.1.3. Flags

APACHE_SERVER_FLAGS permite introducir banderas que activan y desactivan secciones determinadas del archivo de configuración. Por ejemplo, si una sección del archivo de configuración se encuentra dentro de

<IfDefine someflag>
.
.
.
</IfDefine>

sólo está activada si la bandera correspondiente está definida en ACTIVE_SERVER_FLAGS: ACTIVE_SERVER_FLAGS = someflag. De esta forma es posible activar y desactivar amplias secciones del archivo de configuración con fines de prueba.

30.6.2. Configuración manual

La edición del archivo de configuración /etc/apache2/httpd.conf permite realizar cambios que no son posibles mediante /etc/sysconfig/apache2. A continuación se indican algunos de los parámetros que puede definirse. Se explican aproximadamente en el mismo orden en el que aparecen en el archivo.

30.6.2.1. DocumentRoot

DocumentRoot es una opción básica de configuración. Se trata del directorio en el cual Apache aguarda las páginas web que han de ser proporcionadas por el servidor. Este directorio es /srv/www/htdocs para las máquinas virtuales predeterminadas y normalmente no debe ser modificado.

30.6.2.2. Timeout

Indica el periodo que el servidor espera antes de emitir la señal de tiempo agotado para una solicitud.

30.6.2.3. MaxClients

El número máximo de clientes para los que Apache puede trabajar simultáneamente. El valor predeterminado es 150, si bien este número podría resultar algo bajo para una página muy visitada.

30.6.2.4. LoadModule

Las instrucciones LoadModule indican qué módulos se cargan. El orden de carga está definido a través de los mismos módulos. Asimismo, estas instrucciones especifican los archivos incluidos en el módulo.

30.6.2.5. Port

Define el puerto en el que Apache aguarda las solicitudes. Este es normalmente el puerto 80, que es el puerto estándar para HTTP. Por lo general no se recomienda modificar esta opción. Por ejemplo, un posible motivo para que Apache esperase en otro puerto sería la prueba de la nueva versión de una página web. De esta forma, la versión activa de dicha página continuaría estando disponible en el puerto 80.

Otra razón sería el publicar páginas web con información confidencial disponible solamente en una red interna o intranet. Para ello se define, por ejemplo, el puerto 8080 y los accesos externos a este puerto se bloquean mediante el cortafuegos. De esta forma, el servidor está protegido de cara al exterior.

30.6.2.6. Directory

Mediante esta directiva se definen los permisos (por ejemplo de acceso) para un directorio. También existe una directiva de este tipo para DocumentRoot. El nombre de directorio indicado en esa directiva ha de concordar con el nombre indicado en DocumentRoot.

30.6.2.7. DirectoryIndex

Aquí pueden definirse los archivos que ha de buscar Apache para completar una URL cuando no se indica ningún archivo o recurso. El valor predeterminado es index.html. Por ejemplo, si el cliente solicita la URL http://www.example.com/foo/bar y en DocumentRoot se encuentra un directorio foo/bar que contiene un archivo llamado index.html, Apache proporciona esta página al cliente.

30.6.2.8. AllowOverride

Cualquier directorio del cual Apache obtenga documentos puede incluir un archivo que modifique para ese directorio los permisos de acceso y otras opciones definidas globalmente. Estas opciones de configuración se aplican recursivamente al directorio actual y a todos sus subdirectorios hasta que sean a su vez modificadas en un subdirectorio por otro de estos archivos. La configuración tiene validez global cuando se define en un archivo de DocumentRoot. Estos archivos se llaman normalmente .htaccess, pero este nombre puede ser modificado (véase la Sección 30.6.2.10, “AccessFileName”).

En AllowOverride se determina si la configuración definida en los archivos locales puede sobreescribir las opciones globales de configuración. Los valores admitidos para esta variable son None y All así como cualquier combinación posible de Options, FileInfo, AuthConfig y Limit. El significado de estos valores se describe con detalle en la documentación de Apache. El valor predeterminado (y más seguro) es None.

30.6.2.9. Order

Esta opción define el orden en el que se aplican las opciones de configuración para los permisos de acceso Allow y Deny. El valor predeterminado es:

Order allow,deny

Es decir, en primer lugar se aplican los permisos de acceso autorizados y a continuación los permisos de acceso denegados. Los enfoques posibles son:

allow all

para permitir todos los accesos y definir excepciones

deny all

para denegar todos los accesos y definir excepciones

Un ejemplo del segundo enfoque:

Order deny,allow
Deny from all
Allow from example.com
Allow from 10.1.0.0/255.255.0.0

30.6.2.10. AccessFileName

Aquí es posible introducir los nombres de archivos que pueden sobreescribir las opciones globales de configuración en los directorios proporcionados por Apache (ver la Sección 30.6.2.8, “AllowOverride”). El valor predeterminado es .htaccess.

30.6.2.11. ErrorLog

Esta opción contiene el nombre del archivo en el que Apache emite los mensajes de error. El valor predeterminado es /var/log/httpd/errorlog. Los mensajes de error para las máquinas virtuales (véase la Sección 30.9, “Máquinas virtuales”) se emiten también en este archivo si no se ha especificado ningún archivo de registro propio en la sección correspondiente a la máquina virtual del archivo de configuración.

30.6.2.12. LogLevel

Dependiendo de su prioridad, los mensajes de error se agrupan en distintos niveles. Esta opción indica a partir de qué nivel de prioridad se emiten los mensajes de error. Sólo se emiten los mensajes con el nivel de prioridad introducido o superior. El valor predeterminado es warn.

30.6.2.13. Alias

Un alias define un atajo para un directorio que permite acceder directamente a dicho directorio. Por ejemplo, con el alias /manual/ es posible acceder al directorio /srv/www/htdocs/manual aunque en DocumentRoot se haya definido otro directorio como /srv/www/htdocs. (Mientras el documento raíz tenga este valor, no hay ninguna diferencia.) En el caso de este alias, con http://localhost/manual se puede acceder directamente al directorio correspondiente. Para el directorio destino definido en una directiva Alias puede ser necesario crear una directiva Directory (véase la Sección 30.6.2.6, “Directory”) en la que se definan los permisos para el directorio.

30.6.2.14. ScriptAlias

Esta instrucción se asemeja a Alias, pero indica además que los archivos del directorio destino han de ser tratados como scripts CGI.

30.6.2.15. Server-Side Includes

Para activar estas opciones, las SSIs deben buscarse en todos los archivos ejecutables. Para ello se utiliza la instrucción

<IfModule mod_include.c>
XBitHack on </IfModule>

Con el fin de poder buscar Server Side Includes en un archivo, el archivo en cuestión ha de hacerse ejecutable con chmod +x nombre_archivo. De manera alternativa, también es posible indicar explícitamente el tipo de archivo que ha de ser examinado en busca de SSIs. Esto se realiza con

AddType text/html .shtml
AddHandler server-parsed .shtml

No es una buena idea el introducir simplemente .html ya que Apache examina entonces todas las páginas en busca de Server Side Includes (incluyendo aquellas que con seguridad no contienen ninguna) con la consiguiente disminución de rendimiento. Estas instrucciones ya están incluidas en el archivo de configuración de SUSE LINUX, por lo que normalmente no será necesario llevar a cabo ninguna configuración.

30.6.2.16. UserDir

Mediante el módulo mod_userdir y la directiva UserDir es posible definir un directorio dentro del directorio local de usuario en el que el usuario pueda publicar sus archivos a través de Apache. Esto se define en SuSEconfig mediante la variable HTTPD_SEC_PUBLIC_HTML. Para poder publicar archivos, la variable debe tener el valor yes. Esto conduce a la siguiente entrada en el archivo /etc/apache2/mod_userdir.conf (el cual es cargado por /etc/apache2/httpd.conf).

<IfModule mod_userdir.c>
UserDir public_html
</IfModule>

SUSE LINUX Manual de administración 9.3