Apache2
Borrador
Apache, notas VGB 2008-01-19, 2010-05-16 11:32:05 Servidores web en GNU/linux: el principal y más conocido: apache, pero también: lighthttpd, cherokee, y otros.
Instalación
Paquetes: apache2. En tasksel, la tarea lamp-server incluye paquetes de Apache, junto con otros. "LAMP is an acronym for a solution stack of free, open source software, originally coined from the first letters of Linux (operating system), Apache HTTP Server, MySQL (database software) and Perl/PHP/Python" (Wikipedia).
Arrancar y detener apache:
/etc/init.d/apache2 stop /etc/init.d/apache2 start
Probar instalación con página por defecto de apache:
navegador hacia http://localhost o http://nautilus.nsk.com.uy
Página por defecto. No es necesario si se van a usar dominios virtuales.
Cambio en /etc/apache2/sites-available/default: Comentar la línea
#RedirectMatch ^/$ /index.html
porque viene con otra página por defecto. El cambio lleva a /var/www/index.html; raíz es /var/www. Crear una página /var/www/index.html para el sitio o para prueba.
Configuración
Dominios virtuales: crea dominios virtuales que se navegan con su propio URL pero están en esta misma máquina. Ejemplo:
- Dominios: www.nsk.com.uy, auda.org.uy.
- Servidor: nautilus.
- DNS accesible para poder resolver los nombres de los dominios virtuales como alias de esta máquina, donde están soportados esos dominios.
Los nombres auda.nsk.com.uy, www.nsk.com.uy, deben resolverse vía DNS; estos comandos deben contestar los IP o nombre de máquina correctos:
host auda.org.uy host www.nsk.com.uy
El DNS debe soportar las zonas auda.org.uy y nsk.com.uy. Requiere en los archivos de zona del DNS las líneas
; en la zona nsk.com.uy www IN CNAME nautilus
; en la zona auda.org.uy auda IN CNAME nautilus
Directorio de páginas de los dominios virtuales. Crear en /var/www un subdirectorio para cada dominio virtual:
mkdir /var/www/nsk /var/www/auda
Crear páginas de prueba HTML para cada dominio virtual:
- /var/www/nsk/index.html
- /var/www/auda/index.html
Los sitios disponibles están en /etc/apache2/sites-available. Los sitios habilitados son enlaces simbólicos en /etc/apache2/sites-enabled.
Crear el archivo /etc/apache2/sites-available/sitiosweb. El número IP es el de la máquina donde está el Apache.
#/etc/apache2/sites-available/sitiosweb ... NameVirtualHost 192.168.1.2 <VirtualHost 192.168.1.2> ServerAdmin webmaster@auda.org.uy DocumentRoot /var/www/auda ServerName www.auda.org.uy </VirtualHost> <VirtualHost 192.168.1.2> ServerAdmin webmaster@smdu.org.uy DocumentRoot /var/www/smdu ServerName www.cmdu.org.uy </VirtualHost> <VirtualHost 192.168.1.2> ServerAdmin webmaster@nsk.com.uy DocumentRoot /var/www/nsk ServerName www.nsk.com.uy </VirtualHost> ...
Deshabilitar el sitio por defecto 'default', Habilitar los nuevos sitios 'sitiosweb', recargar Apache:
a2dissite default a2ensite sitiosweb /etc/init.d/apache2 reload
Probar navegando a la página índice de cada dominio:
Objetivos
Instalación
aptitude install apache2
Primer prueba: desde un navegador visitar la página: http://servidor.apache/ donde "servidor.apache" es la IP del servidor, o un nombre de domínio que resuelve a ésta. (si el servidor tiene un navegador, puede sar: http://localhost/)
Debemos entonces ver aparecer una página de prueba: "It works!"
Organización de /etc/apache2 :
/etc/apache2/apache2.conf: archivo principal de configuración, /etc/apache2/ports.conf: declaración de uso de VirtualHosts y puertos de escucha /etc/apache2/conf.d/ carpeta de configuraciones específicas a módulos u otros paquetes que utilizan apache /etc/apache2/sites-available : definición de "sitios" VirtualHosts. aquí, inicialmente hay un sitio llamado "default", que responderá a cualquier solicitud. /etc/apache2/sites-enabled : "sitios" activados (enlaces simbólicos a la precedente carpeta)
Utilitarios de administración de sitios:
a2ensite (por "apache2 enable site"): activación de los sitios disponibles, a2dissite: desactivación de los sitios.
Podemos, por ejemplo, crear un nuevo sitio creando un archivo /etc/apache2/sites-available/mi_sitio, a partir del archivo /etc/apache2/sites-available/default
Si queremos que este sitio sólo responda a cierto dominio que resuelve en ese servidor (y no a la IP o a otro dominio), agregamos en la sección <VirtualServer *:80> una directiva: ServerName www.mi_servidor.org
Se pueden personalizar las directivas existentes y/o agregar muchas otras. Debemos finalmente activar el sitio: a2ensite mi_sitio Y re-cargar la configuración: /etc/init.d/apache2 reload
Otros utilitarios similares existen para los módulos.
a2enmod: habilitación de un módulo apache, a2dismod: deshabilitación de un módulo apache,
Apache ya viene compilado con diferentes módulos. Por ejemplo, para habilitar apache en https: a2enmod ssl
Esto requerirá, además, un certificado válido y la configuración de un sitio en https. Un certificado autofirmado se puede obtener instalando ssl-cert, y un sitio activando: a2ensite default-ssl
- Instalación de openssl y ssl-cert
$ apt-get install openssl ssl-cert
- Crear los certificados:
$ a2enmod ssl $ mkdir /etc/apache2/ssl $ /usr/sbin/make-ssl-cert /usr/share/ssl-cert/ssleay.cnf /etc/apache2/ssl/apache.pem
as2enmod, sin parámetro, muestra la lista de módulos disponibles.
Además de las dependencias, existen varios paquetes adicionales ligados a apache, a menudo a través de módulos: libapache2-mod-XXX, por ejemplo PHP: libapache2-mod-php5
Apache se utiliza a menudo en una configuración "LAMP": Linux Apache MySQL PHP. Es necesario instalar además:
libapache2-mod-php5 (que incluye php5 en dependencia) mysql-server php-mysql
Objetivos
- Redirigir por default a la página principal de mediawiki con el módulo "rewrite" de apache
- Crear "vhosts" para la base de datos, mediawiki y tikiwiki (modificando previamente el DNS)
Software
- apache2
Procedimiento
Redirigir por default a la página principal de mediawiki con el módulo "rewrite" de apache
Para lograr esto, editamos el archivo /etc/apache2/sites-enabled/000-default y agregar el siguiente módulo:
<IfModule mod_rewrite.c> RewriteEngine on RewriteRule ^/$ /mediawiki [R] </IfModule>
Crear "vhosts" para la base de datos, mediawiki y tikiwiki
- vhost para la base de datos y redirección por default a mediawiki:
Primero queremos que a la base de datos ingresemos sólo por https y si los usuarios entran por http se rediriga a https. Para esto crearemos dos sitios, uno base-de-datos (vhost en el puerto 80) y otro base-de-datos-ssl (vhost por default en el puerto 443), en el primero unicamente redirigiremos a https y en el último haremos la redirección a mediawiki. Copiemos los archivos /etc/apache2/sites-available/default y /etc/apache2/sites-available/default-ssl y cambiándole los nómbres por base-de-datos y base-de-datos-ssl respectivamente:
$ cp /etc/apache2/sites-available/default /etc/apache2/sites-available/base-de-datos $ cp /etc/apache2/sites-available/default-ssl /etc/apache2/sites-available/base-de-datos-ssl
Editemos /etc/apache2/sites-enabled/base-de-datos y agrequemos la siguiente linea para redirigir en forma permanente a https:
Redirect permanent / https://base-de-datos.taller.curerocha.edu.uy/
Y agregamos un NameServer y algunos ServerAlias
ServerName base-de-datos.taller.curerocha.edu.uy ServerAlias base-de-datos.taller.csic.edu.uy bdd.taller.curerocha.edu.uy
Con esto iremos directamente a base-de-datos-ssl (vhost en el puerto 443), ahora configuremos este sitio editando /etc/apache2/sites-enabled/base-de-datos-ssl y agregando lo siguiente:
# Ponemos el alias en https solamente Alias /base-de-datos /usr/share/phpmyadmin <IfModule mod_rewrite.c> RewriteEngine On RewriteRule ^/$ /base-de-datos/ [R] </IfModule>
- vhost para tikiawiki
En el vhost (y en el DNS) definimos ServerName y ServerAlias
ServerName tikiwiki.taller.curerocha.edu.uy ServerAlias tikiwiki.taller.csic.edu.uy
- vhost para mediawiki
Procedemos de la misma manera que con tikiwiki respecto a los ServerName y los ServerAlias. Además hagamos alguna redirección poniendo lo siguiente en el archivo /etc/apache2/sites-enable/mediawiki
ServerName wiki.taller.curerocha.edu.uy ServerAlias wiki.taller.csic.edu.uy mediawiki.taller.curerocha.edu.uy mediawiki.taller.csic.edu.uy DocumentRoot /var/www/ RewriteEngine on RewriteCond %{HTTP_HOST} !^wiki\.taller\.curerocha\.edu\.uy [NC] RewriteCond %{HTTP_HOST} !^$ RewriteRule ^/(.*) http://wiki.taller.curerocha.edu.uy/$1 [R] RewriteRule ^/$ /mediawiki [R]
Verificación
- Para verificar que por default rediriga a la wiki del CURE, haremos lo siguiente. En un navegador probaremos las siguiente direcciones y debe redirigir a la wiki.
http://taller.curerocha.edu.uy http://mediawiki.taller.curerocha.edu.uy http://wiki.taller.curerocha.edu.uy http://taller.csic.edu.uy http://mediawiki.taller.csic.edu.uy http://wiki.taller.csic.edu.uy http://164.73.234.104
- La otra verificación pertinente a este tema es comprobar que al acceder a phpmyadmin, redirige a una página en https. En un navegador probaremos las siguientes direcciones:
http://base-de-datos.taller.curerocha.edu.uy http://bdd.taller.curerocha.edu.uy http://base-de-datos.taller.csic.edu.uy http://bdd.taller.csic.edu.uy
- Ahora corroboremos que a las siguientes direcciones sólo se puede acceder por https. Pongamos lo siguiente en nuestro navegador
http://taller.csic.edu.uy/base-de-datos http://taller.csic.edu.uy/base-de-datos http://164.73.234.104/base-de-datos
y deberá aparecer el siguiente mensaje (o similar):
Not Found The requested URL /base-de-datos/ was not found on this server. Apache/2.2.14 (Ubuntu) Server at taller.curerocha.edu.uy Port 80
- Luego comprobemos que si le ponemos https efectivamente va a la página de phpmyadmin
http://taller.csic.edu.uy/base-de-datos http://taller.csic.edu.uy/base-de-datos http://164.73.234.104/base-de-datos
- Verificar que con el Alias /phpmyadmin no se puede ingresar y debe aparecer el siguiente mensaje:
Not Found The requested URL /phpmyadmin was not found on this server. Apache/2.2.14 (Ubuntu) Server at taller.csic.edu.uy Port 80
con las siguientes direcciones:
http://taller.csic.edu.uy/phpmyadmin http://taller.csic.edu.uy/phpmyadmin http://164.73.234.104/phpmyadmin
Notas adicionales
Autentificación, Autorización y Control de Acceso con Apache2
DNS-apache
Referencias
Servidor web apache http://httpd.apache.org/ (www.apache.org es el de la fundación, que también tiene otros proyectos, como Tomcat, por ejemplo) Ver en particular:
- La documentación: http://httpd.apache.org/docs/2.2/
- El manejo de hospedajes virtuales: http://httpd.apache.org/docs/2.2/vhosts/
- Las reglas de re-escritura de URLS: http://httpd.apache.org/docs/2.2/rewrite/