Apache y su configuración

En este post deseo plasmar lo que bajo mi punto de vista pueden ser unas plantillas básicas para la configuración del servidor web Apache. Hay que tener en cuenta que no voy a hablar sobre la configuración más óptima para Apache pero sí una forma de tener ficheros de configuración fáciles de mantener.

Como ya sabemos, la configuración de Apache está basada en varios ficheros, con lo cual podemos añadir configuración a cada componente del servidor de forma infividual. Esto permite tener la configuración en ficheros de texto corto para no volverse loco buscando lo que queremos cambiar. Nosotros vamos a intentar seguir este ejemplo, es decir, tener la configuración de los servicios ofrecidos por Apache en ficheros varios separados.

Bien, lo primero decir que para este ejemplo nuestro servidor Apache va a contener servicios de SVN, aplicaciones webs (tipo bugtracking, timetracking, ...) y páginas personales. El servidor web está instalado en un sistema UNIX, en el cual vamos a establecer el directorio raiz del servidor web en /var/www y sus ficheros de configuración se en el directorio /etc/apache.

Para tenerlo todo bien separado, vamos a definir varios sites (servidores virtuales) para el servidor web: uno para svn (svn.webserver.org), otro para las páginas personales (personal.webserver.org) y otro site para las aplicaciones web (app.webserver.org). Este ejemplo de división en sites puede que no sea el más adecuado para el ejemplo pero va a permitir definir perfectamente las plantillas de los diferentes ficheros de configuración.

La parte principal de la configuración de Apache está en el fichero /etc/apache/apache.conf, donde se suele colocar directivas de configuración internas del servidor. Para el ejemplo no vamos a necesitar tocar este fichero. Por otro lado, en la carpeta /etc/apache/sites-available es donde se introducen los ficheros de configuración de todos los sites definidos en el servidor web. Por lo tanto, vamos a colocar en este directorio un fichero de configuración por cada site o servidor virtual.

La plantilla para las páginas personales queda:

NameVirtualHost personal.webserver.org
<VirtualServer personal.webserver.org>
<Directory /var/www/personal1>
DocumentRoot /var/www

Options FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
</VirtualServer>

Cada bloque delimitado por las directivas es una página personal, por lo que necesitamos añadir una por cada página a añadir en el servidor web. Cuando en el navegador escribas http://personal.webserver.org/personal1, el servidor web usará este fichero de configuración para enviarte la web a tu navegador. Para acceder al servicio de SVN, en el navegador hay que escribir http://svn.webserver.org/project1, por lo tanto, su fichero de configuración podría ser algo como:

NameVirtualHost svn.webserver.org
<VirtualServer svn.webserver.org>
<Location /project1>
DAV svn

SVNPath /var/lib/svn/project1

AuthType Basic
AuthName "SVN repository"
AuthUserFile /etc/apache2/svn.passwd
Require valid-user

Order deny,allow
deny from all
allow from 10.1.2
</Location>
</VirtualServer>

Como se puede ver, se ha añadido un bloque para la autenticación que en este caso se realiza mediante un fichero .passwd pero se pueden usar otros tipos de autenticación para accede al servicio de SVN. También se ha restringido el acceso al servicio solo para la red 10.1.2. Por cada repositorio SVN que queramos en el servidor web deberemos colocar en este fichero un nuevo bloque .

Por último vamos a ver cuál podría ser un fichero de configuración para las aplicaciones web. Básicamente, es igual que el fichero definido para las webs personales, solo que es posible que los ficheros de las aplicaciones web estén ubicados en un directorio diferente de /var/www, como puede ser /usr/share.

0 comentarios: