Configuración de Apache

El servidor web Apache se basa en el originar servidor web NCSA, al que ha sustituido prácticamente en su totalidad

El servidor Web Apache se configura mediante un fichero de texto que contiene las directivas que le indican las instrucciones sobre como tiene que ser su comportamiento. Normalmente cada distribución de Apache trae un fichero de configuración en el que los cambios que tendremos que realizar son mínimos.

Se puede encotrar un información detallada en sobre las directivas en http://httpd.apache.org/docs-2.0/

La configuración se especifica en el fichero httpd.conf que está formado por directivas de configuración y línea de comentario que comienzan por un #. Los ficheros de configuración de Apache contienen una directiva por línea. Se puede usar "\" al final de una línea para indicar que una directiva continua en la próxima línea. No puede haber otros caracteres o espacio en blanco entre el carácter "\" y el fin de la línea. No se pueden incluir comentarios en una línea, después de una directiva de configuración. Los espacios y líneas en blanco antes de una directiva de configuración se ignoran, de manera que se puede dejar una sangría en las directivas para mayor claridad.

Directorios personales

Vemos un ejemplo de configuración del directorio personal para que esté restringido como sólo lectura:

<Directory /home/*/public_html>
    AllowOverride FileInfo AuthConfig Limit
    Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
    <Limit GET POST OPTIONS>
        Order allow,deny
        Allow from all
    </Limit>
    <LimitExcept GET POST OPTIONS>
        Order deny,allow
        Deny from all
    </LimitExcept>
</Directory>

Directorios restingidos

Podemos restringir el acceso a ciertos directorios mediante clave. Para esto tendremos que configurar el directorio adecuadamente. Lo vemos mediante un ejemplo. Queremos que para acceder al directorio /var/www/html/privado el navegador solicite una contraseña.

En primer lugar tendremos que indicarle a apache que busque en ese directorio un fichero .htaccess. Esto lo haremos indicando AllowOverride AuthConfig:

<Directory /var/www/html/privado>
 AllowOverride AuthConfig
<Directory 

En segundo lugar creamos un fichero llamado .htaccess en el directorio /var/www/html/privado con el siguiente contenido:

AuthName "Acceso restringido"
AuthUserFile /var/www/.htpasswd
AuthType Basic
require valid-user

El fichero .htpasswd es conveniente que esté fuera del árbol de directorios accesibles por los clientes del servidor web.

Por último creamos el fichero .htpasswd a la vez que damos de alta un usuario:

htpasswd -c /var/www/.htpasswd usuario

Podemos dar de alta más usuario ejecutando:

htpasswd  /var/www/.htpasswd usuario

en este caso sin la opción -c que se utiliza para crear el fichero.

Virtual Hosts

Como hemos dicho anteriormente, un servidor virtual es un directorio que el servidor web sirve con un nombre concreto de maquina. Este nombre de máquina debe resolverse mediante DNS. Por ejemplo podremos configurar nuestro servidor web para que a las peticiones hechas a http://www.uno.dom devuelva el contenido del directorio /var/www/uno/ y para las peticiones hechas a http://www.dos.dom responda con el contenido de /home/httpd/dos.

Para poder configurar host virtuales lo primero que tendremos que incorporar una directiva NameVirtualHost indicando la diección IP en la que prestamos el servicio o bien opniendo un * para que esté activa en cualquier interfaz del servidor:

NameVirtualHost 1.2.3.4

o

NameVirtualHost *

Un servidor virtual se configura con un conjunto de directivas que van comprendidas entre

<VirtualHost nombre o ip> y </VirtualHost>.

Podemos poner tantos VirtualHost como queramos

Ejemplo:

NameVirtualHost 80.26.35.23
<VirtualHost www.iesbezmiliana.org>
    ServerAdmin Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo.
    DocumentRoot "/var/www/html"
    ServerName  www.iesbezmiliana.org
    ErrorLog /var/log/httpd/principal.errorr_log
    CustomLog /var/log/httpd/principal.access_log combined
    <Directory /var/www/html>
        AllowOverride AuthConfig
            Order allow,deny
            Allow from all 
        DirectoryIndex index.php index.html index.php3
         Options Indexes FollowSymLinks
        Options ExecCGI
    </Directory>
</VirtualHost>
<VirtualHost www.bezmiliana.net>
    ServerAdmin Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo.
    DocumentRoot "/var/httpdocs/html"
    ServerName  www.bezmiliana.net
    ErrorLog /var/log/httpd/secundario.errorr_log
    CustomLog /var/log/httpd/secundario.access_log combined
    <Directory /var/httpdocs/html>
        AllowOverride AuthConfig
            Order deny,allow
            Allow from all 
        DirectoryIndex index.php index.html index.php3
         Options Indexes FollowSymLinks
    </Directory>
</VirtualHost>

Directivas globales

En principio sólo tendríamos que modificar las directivas ServerName y ServerRoot con nuestros valores:

ServerName www.centro.ies
ServerRoot /var/www/html

Directorio de documentos web

En primer lugar tenemos que decidir donde ubicar nuestro árbol web. La ubicación predeterminada es, por lo general, /var/www/html; no hay ninguna razón para modificarla, y es la que vamos a usar, pero podría ser cualquier otro directorio del sistema. Dentro de esta carpeta creaemos un fichero llamado index.html que será nuestro índice. Ahora debemos crear las carpetas para cada uno de los departamentos:

mkdir /var/www/html/direccion
mkdir /var/www/html/secretaria
mkdir /var/www/html/publico

El usuario que ejecuta el servidor web y va a acceder a los contenidos de estas carpetas para servirlos es apache; este usuario deberá tener al menos permisos de lectura para todos los ficheros y ejecución y lectura para los directorios. Por otro lado habrá al menos tres usuarios que deberán tener permiso de escritura para poder poner contenidos en su correspondiente directorio. Más adelante, cuando veamos la gestión de los usuarios determinaremos los permisos mínimos que deben tener estas carpetas.

Configuramos cada uno de estos tres directorios en apache para que tengan el comprtamiento que interesa.

    <Directory /var/www/html/direccion>
        AllowOverride AuthConfig
            Order allow,deny
            Allow from all 
        DirectoryIndex index.php index.html
         Options Indexes FollowSymLinks
        <FilesMatch "\.doc$">
                Order allow,deny
                Deny from all
        </Files>
    </Directory>

Con esta descripción estamos diciendo que el usuario tiene la posibilidad de crear directorios con acceso restringido, que el acceso es público, que tome com índice de directorio bien un fichero llamado index.php o index.html, que si no existiera ninguno de estos ficheros generara un índice automático de contenidos y que no verifique los enlaces simbólicos. Por último indicamos que ignore cualquier fichero cuyo nombre termine en ".doc" por si queremos tener ficheros privados que no se muestren a través del navegador.