Instalación

$apt-get install apache2

Estructura

El fichero de configuración es: /etc/apache2/apache2.conf
La configuración propia del usuario se recomienda que se introduzca en: /etc/apache2/httpd.conf

Cuando se modifican estos ficheros, para comprobar que todo está bien, se puede lanzar el siguiente comando:
apache2ctl configtest
Tiene dos carpetas:
  1. sites-available: que contiene la configuración de todos los sitios o VirtualHost definidos en apache2.
  2. sites-enabled: que contiene enlaces a las configuraciones definidas en el directorio anterior, indicando cuáles de ellas están activas.

Crear un Virtual Host


1) Hacemos una copia del VirtualHost por defecto:
cd /etc/apache2/sites-available
cp default pruebas
2) Editamos pruebas para cambiar el ServerName y el DocumentRoot, las variables que definen el nombre al que responderá este sitio y la ruta en disco a los ficheros de ese sitio, respectivamente. También estaría bien cambiar la directiva "Directory" para que en lugar de hablar de /var/www hable de la nueva ruta:
ServerName pruebas.dominio.org
DocumentRoot /var/www/pruebas/

<Directory /var/www/pruebas/>

...

</Directory>
3) Habilitamos el site, utilizando los comandos para habilitar y deshabilitar sites del apache2:
a2ensite pruebas
4) Recargamos la configuración del apache2:
/etc/init.d/apache2 force-reload
Los comandos para habilitar y deshabilitar sites y módulos en el apache2 tienen nombres bastante lógicos:
  • a2ensite: apache2 enable site, habilita sites.
  • a2dissite: apache2 disable site, deshabilita sites.
  • a2enmod: apache2 enable module, habilita módulos.
  • a2dismod: apache2 disable module, deshabilita módulos.


Usar .htaccess para poner contraseñas


Protección de recursos mediante contraseña:

Tres pasos:
1) Crear un archivo con claves y usuarios:

htpasswd -c /etc/passwd.apache username
con la opción -c estamos indicando la ruta del archivo de claves ( que es recomendable que esté fuera del árbol web público para que nadie se lo pueda bajar). Además estamos poniendo el username o nombre de usuario que queremos crear en dicho archivo, que puede ser uno que esté en el sistema o no, es independiente. Nos pedirá la contraseña para dicho usuario.
Con el fin de establecer la seguridad necesaria, cambie los atributos de lectura y escritura solo para el usuario apache:

chmod 600 /etc/passwd.apache
chown apache:apache /etc/passwd.apache


Si más tarde querríamos añadir más usuarios a dicho archivo para que puedan acceder al recurso web:
 htpasswd /etc/passwd.apache username

2) Crear otro archivo descriptivo del recurso a proteger:

Posteriormente, en el directorio web que queramos proteger, deberemos crear un archivo oculto llamado .htaccess con el siguiente contenido:
AuthName “Privado”
AuthType Basic
AuthUserFile /etc/passwd.apache
Require valid-user
3) Hacer que el Apache proteja dicho recurso:

Por último, deberemos indicar a Apache que para dicho directorio busque el archivo .htaccess que en la configuración por defecto, habíamos puesto en la directiva AllowOverride None para que no lo hiciera. Entonces, si el directorio a proteger es /var/www/privado/ deberemos añadir en /etc/apache/httpd.conf algo como:
<Directory /var/www/privado/>
AllowOverride AuthConfig
</Directory>
y recargar la configuración del servidor.


AllowOverride

La directiva AllowOverride sirve para redefinir directivas declaradas anteriormente. Puede tener varios valores:
  • AuthConfig: permite el uso de todas las directivas de autorización.
  • FileInfo: permite el uso de directivas de manejo de tipos de archivos.
  • Indexes: permite el uso de directivas que controlen la creación de índices de directorios.
  • Limit: permite el uso de directivas relacionadas con el límite en accesos.
  • Options: permite el uso de directivas relacionadas con las propiedades de un determinado directorio.
Si estamos en un servidor compartido, puede ser peligroso ponerlo a All.

Alias dentro de un mismo VirtualHost



<VirtualHost *>
ServerAdmin admin@midireccion.es
ServerName www.midireccion.es
DocumentRoot /var/www/pagina
DirectoryIndex index.php
Alias /blog "/var/www/blog"
Alias /wiki "/var/www/wiki"
</VirtualHost>