Instalación y mantenimiento de servicios de Internet
Unidad 3
CONFIGURACIÓN DE UN SERVIDOR WEB: APACHE Andrés Rosique Hernández
[email protected]
Andrés Rosique Hernández
[email protected]
Instalación y mantenimiento de servicios de Internet
Licencia Esta obra está bajo una licencia Reconocimiento-No comercial-Compartir bajo la misma licencia 3.0 España de Creative Commons. Para ver una copia de esta licencia, visite http://creativecommons.org/licenses/by-nc-sa/3.0/deed.es
o envíe una carta a Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.
U03. Configuración de un servidor web: Apache
2
Andrés Rosique Hernández
[email protected]
Instalación y mantenimiento de servicios de Internet
Índice 1.Introducción 2.Tipo de contenido 3.Instalación 4.Iniciar el servidor 5.Configuración básica 6.Directivas generales 7.Hosts virtuales
Basados en IP Basados en nombre
8.Autenticación 9.Bibliografía U03. Configuración de un servidor web: Apache
3
Andrés Rosique Hernández
[email protected]
Instalación y mantenimiento de servicios de Internet
Introducción ●
●
El servidor Apache es un servidor web HTTP de software libre que funciona en diversos sistemas operativos (Unix/Linux, Windows, MacOS, etc.). El objetivo del proyecto es proporcionar un servidor HTTP seguro, eficiente, extensible y que cumpla con los estándares Apache es el servidor web más usado en Internet desde Abril de 1996. Las últimas estadísticas, de octubre de 2007 proporcionadas por Netcraft en su Web Server Survey, muestran que el 47,73% de los sitios web de Internet utilizan Apache.
U03. Configuración de un servidor web: Apache
4
Andrés Rosique Hernández
[email protected]
Instalación y mantenimiento de servicios de Internet
Introducción (2)
U03. Configuración de un servidor web: Apache
5
Andrés Rosique Hernández
[email protected]
Instalación y mantenimiento de servicios de Internet
Introducción (3) ●
Existen varias formas en las que Apache puede proveernos contenidos: –
–
Páginas estáticas. Es el modo básico y más primitivo, pero que en un gran número de casos es lo único que se necesita: transferir ficheros HTML, imágenes... Puede que con un servidor Linux de bajas prestaciones consigamos estupendos resultados, si es sólo esto lo que necesitamos. Contenido dinámico. La información cambia constantemente, y un medio para mantener nuestras páginas actualizadas, es generarlas dinámicamente desde una base de datos, ficheros u otras fuentes de datos.
U03. Configuración de un servidor web: Apache
6
Andrés Rosique Hernández
[email protected]
Instalación y mantenimiento de servicios de Internet
Tipo de contenido Soporte del protocolo HTTP 1.1. Además mantiene la compatibilidad con el HTPP 1.0. ● Scripts CGI y FastCGI. Los scripts CGI (Common Gateway Interface) son programas externos que se llaman desde el propio servidor cuando una página lo requiere. El CGI recibe información del servidor web y genera como salida una página web dinámica para el cliente. El script puede realizarse en cualquier lenguaje de programación siempre que siga las reglas del interfaz CGI. El problema es que es un proceso lento, al tenerse que lanzar un proceso externo al servidor web por cada petición. U03. Configuración de un servidor web: Apache 7 ●
Andrés Rosique Hernández
[email protected]
Instalación y mantenimiento de servicios de Internet
Tipo de contenido (2) ●
●
●
●
Host virtuales. Permite atender varios sitios Web en dominios distintos, desde la misma máquina. Autenticación HTTP. Permite restringir recursos a determinados usuarios o grupos (distintos de los del sistema). Intérpretes incluidos en Apache. Tienen la ventaja sobre los CGI de que están incluidos en el propio Apache y no hay que lanzar un nuevo proceso por cada petición. Los módulos más utilizados son PHP y mod_perl. Soporte de SSI (Server Side Includes). Una de las primeras alternativas para crear webs dinámicas.
U03. Configuración de un servidor web: Apache
8
Andrés Rosique Hernández
[email protected]
Instalación y mantenimiento de servicios de Internet
Tipo de contenido (3) ● ●
SSL (Secure Sockets Layer). Servlets y JSP en Java. Es una opción que se utiliza en los servidores de aplicaciones, por ejemplo Tomcat, JBoss, Oracle IAS o WebSphere de IBM. Su gran ventaja sería la portabilidad y escalabilidad. Desarrollamos en Java y podemos ejecutarlo en cualquier máquina virtual compatible. Un modelo muy utilizado en la actualidad es el de las arquitecturas en capas: – – –
Capa de presentación → cliente web. Capa lógica → un servidor de aplicaciones. Capa física → un servidor de bases de datos.
U03. Configuración de un servidor web: Apache
9
Andrés Rosique Hernández
Instalación y mantenimiento de servicios de Internet
Instalación Ubuntu ●
●
[email protected]
Para instalar Apache en Ubuntu tenemos dos opciones: desde un terminal o desde el Synaptic. Desde un terminal: sudo apt-get install apache2-mpm-prefork
●
Desde el Synaptic: – – –
●
Buscamos “apache2” (sin las comillas). Seleccionamos el paquete apache2-mpm-prefork. Pulsamos sobre Aplicar.
En cualquiera de los dos casos se instalarán más paquetes como por ejemplo el apache2.2-common.
U03. Configuración de un servidor web: Apache
10
Andrés Rosique Hernández
[email protected]
Instalación y mantenimiento de servicios de Internet
Iniciar el servidor ●
●
Una vez instalado el servidor disponemos de un script que nos permite controlar su estado, se trata de apache2ctl. Para iniciar el servidor web tenemos que ejecutar el siguiente comando: #apache2ctl start
●
Para comprobar que funciona, podemos teclear la siguiente dirección en el navegador: http://localhost
U03. Configuración de un servidor web: Apache
11
Andrés Rosique Hernández
[email protected]
Instalación y mantenimiento de servicios de Internet
Iniciar el servidor (2) ●
Al iniciar el servidor en Ubuntu, nos aparecerá el siguiente mensaje: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName
Si se añade una línea con ServerName localhost en el fichero apache2.conf, se elimina el mensaje.
U03. Configuración de un servidor web: Apache
12
Andrés Rosique Hernández
[email protected]
Instalación y mantenimiento de servicios de Internet
Iniciar el servidor (3) ●
Las opciones de apache2ctl son las siguientes: – –
– – – ●
start → para arrancar el servidor. Si ya está en marcha, nos avisará de ello. graceful → relee los ficheros de configuración sin cerrar las conexionas activas. Las conexiones nuevas se iniciarán con la nueva configuración. restart → reinicia el servidor, pero a diferencia del anterior, cierra las conexionas activas. stop → para el servidor y cierra las conexiones. Otros: fullstatus, status y configtest.
También se puede iniciar/parar el servidor con #/etc/init.d/apache2 start|stop
U03. Configuración de un servidor web: Apache
13
Andrés Rosique Hernández
[email protected]
Instalación y mantenimiento de servicios de Internet
Configuración básica ●
●
Los ficheros de configuración de Apache se encuentran en /etc/apache2. Los ficheros de configuración más importantes son: – – – –
/etc/apache2/apache2.conf → fichero de configuración principal. /etc/apache2/ports.conf → indica el puerto en el que escucha Apache. /etc/apache2/sites-available/ → directorio de los ficheros de configuración de los hosts virtuales. /etc/apache2/conf.d/charset → indica el conjunto de caracteres por defecto.
U03. Configuración de un servidor web: Apache
14
Andrés Rosique Hernández
[email protected]
Instalación y mantenimiento de servicios de Internet
Configuración básica (2) ●
Bloquear el redireccionamiento: –
–
Lo primero que haremos será bloquear el redireccionamiento que nos lleva de http://localhost/ a http://localhost/apache2-default/. Para ello, debemos asegurarnos que el archivo /etc/apache2/sites-available/default tenga comentada la linea que dice algo como: RedirectMatch ^/$ /apache2-default/ es decir, debemos reemplazarla por esta #RedirectMatch ^/$ /apache2-default/ Por defecto está comentada y no hay que tocarla
U03. Configuración de un servidor web: Apache
15
Andrés Rosique Hernández
[email protected]
Instalación y mantenimiento de servicios de Internet
Configuración básica (3) ●
Permitir los acentos en las páginas de nuestra web: –
Para permitir los acentos en nuestras páginas, debemos asegurarnos que la siguiente línea: AddDefaultCharset ISO88591 aparezca descomentada (sin #) en el archivo /etc/apache2/conf.d/charset.
U03. Configuración de un servidor web: Apache
16
Andrés Rosique Hernández
[email protected]
Instalación y mantenimiento de servicios de Internet
Directivas generales ●
ServerRoot ruta – – –
●
Indica el directorio raíz del que cuelgan los directorios de configuración/auditoría de Apache. Normalmente no hace falta modificarlo. Ejemplo: ServerRoot /etc/apache2
ServerName nombre – –
–
Informa del nombre (FQDN) asociado al sitio web. Cuando Apache sólo tiene asociada un sitio web por dirección IP, esta directiva tiene un carácter descriptivo. Ejemplo: ServerName www.iesalboran.com
U03. Configuración de un servidor web: Apache
17
Andrés Rosique Hernández
[email protected]
Instalación y mantenimiento de servicios de Internet
Directivas generales (2) ●
ErrorLog ruta – – –
●
Establece la ruta donde se auditan los errores detectados por el servicio httpd. Si la ruta es relativa, se establece en relación al directorio indicado por ServerRoot. Ejemplo: ErrorLog /var/log/apache2/error
LogLevel nivel – – –
Indica la cantidad de información que se guardará en los ficheros de log. Los niveles son debug, info, notice, warn, error, crit, alert y emerg. Ejemplo: LogLevel warn
U03. Configuración de un servidor web: Apache
18
Andrés Rosique Hernández
[email protected]
Instalación y mantenimiento de servicios de Internet
Directivas generales (3) ●
DocumentRoot ruta – – –
●
Indica donde están los archivos del sitio web (las páginas web). Es una de las directivas más importantes. Ejemplo: DocumentRoot /var/www/html
DirectoryIndex lista –
–
Define la lista de archivos que ha de buscar Apache para completar una URL cuando no se indica ningún archivo o recurso. Ejemplo: DirectoryIndex index.html index.htm inicio.html inicio.php
U03. Configuración de un servidor web: Apache
19
Andrés Rosique Hernández
[email protected]
Instalación y mantenimiento de servicios de Internet
Directivas generales (4) ●
Listen [IP:]puerto – – –
Especifica a través de qué direcciones y puerto TCP recibirá Apache las peticiones de sitios web. Ejemplo: Listen 172.26.8.6:80 Motivos para modificar esta directiva:
Un posible motivo para que Apache escuchara en otro puerto sería la prueba de la nueva versión de una página web. 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. U03. Configuración de un servidor web: Apache 20 ●
Andrés Rosique Hernández
[email protected]
Instalación y mantenimiento de servicios de Internet
Directivas generales (5) ●
... –
Indica a Apache el conjunto de directivas que afectarán exclusivamente al sitio web que se indica mediante: ● ●
–
un nombre → www.estepona.com una IP → 172.26.8.32
Ejemplo:
ServerName www.clase2esi.com DocumentRoot /var/www/html/clase2esi.com ServerAdmin [email protected] ErrorLog /var/log/apache2/clase2esi.com-log
U03. Configuración de un servidor web: Apache
21
Andrés Rosique Hernández
[email protected]
Directivas generales (6) Instalación y mantenimiento de servicios de Internet
●
... –
–
●
Permite que la asignación de valores a las directivas de configuración esté condicionado en función de los parámetros especificados en el arranque del servicio. Ejemplo:
Parámetros de configuración ... – –
Como IfDefine pero la condición la especifica los módulos que se han cargado. Ejemplo:
Parámetros de configuración U03. Configuración de un servidor web: Apache
22
Andrés Rosique Hernández
[email protected]
Instalación y mantenimiento de servicios de Internet
Hosts virtuales ●
●
Un mismo servidor web suele dar servicio a multitud de sitios web. Por ejemplo, un servidor web podría alojar los sitios web del ayuntamiento de Estepona y de cada uno de los institutos y colegios. – – –
●
www.estepona.com www.iesmardealboran.org www.iesmediterraneo.org
Se puede configurar Apache para servir diferentes sitios web de 2 formas: – –
Hosts virtuales basados en direcciones IP. Hosts virtuales basados en nombre (dominio).
U03. Configuración de un servidor web: Apache
23
Andrés Rosique Hernández
Instalación y mantenimiento de servicios de Internet
Hosts virtuales Basados en IP ●
●
Para que una instancia de Apache pueda administrar varios hosts virtuales basados en direcciones IP debemos disponer, lógicamente, de varias direcciones IP. ¿Cómo podemos tener varias direcciones IP? – –
●
[email protected]
Con interfaces de red y cada una con su dirección IP. Creando interfaces virtuales con el comando: ifconfig ethN:n nuevaIP netmask mascara
¿Cómo se crean los host virtuales basados en IP? – –
Creando y/o modificando los ficheros que se encuentran en /etc/apache2/sites-available. Habilitándolos con a2ensite ficheroSitioVirtual.
a2dissite U03. Configuración de un servidor web: Apache
ficheroSitioVirtual para deshabilitarlo
24
Andrés Rosique Hernández
Instalación y mantenimiento de servicios de Internet
Hosts virtuales Basados en IP (2)
[email protected]
Por ejemplo, para tener dos hosts virtuales sobre las IP 172.26.8.1 y 172.26.8.2 podríamos implementarlo así: 1. Se crean los archivos: /etc/apache2/sites-available/sitio1
ServerName www.sitio1.com DocumentRoot /var/www/sitio1.com /etc/apache2/sites-available/sitio2
ServerName www.sitio2.com DocumentRoot /var/www/sitio2.com
2. Se habilitan los nuevos sitios virtuales: a2ensite sitio1 a2ensite sitio2 U03. Configuración de un servidor web: Apache
25
Andrés Rosique Hernández
Instalación y mantenimiento de servicios de Internet
Hosts virtuales Basados en IP (3)
[email protected]
3. Se crea una (o las dos) interfaces de red virtuales: ifconfig eth0:1 172.26.8.1 netmask 255.255.128.0 ifconfig eth0:2 172.26.8.2 netmask 255.255.128.0
U03. Configuración de un servidor web: Apache
26
Andrés Rosique Hernández
Instalación y mantenimiento de servicios de Internet
Hosts virtuales Basados en nombre ●
●
●
●
[email protected]
Esta opción permite disponer de varios sitios web mediante una única dirección IP. La forma de distinguirlos es a través de los nombres de dominio, ya que la IP es la misma. Para definir hosts virtuales basados en nombre hay que usar la siguiente directiva: NameVirtualHost direcciónIP Esta directiva informa a Apache de cual de las direcciones IP que puede tener asignadas el servidor va a ser usada para dar servicios a varios sitios web mediante diferentes nombres de dominio.
U03. Configuración de un servidor web: Apache
27
Andrés Rosique Hernández
Instalación y mantenimiento de servicios de Internet
Hosts virtuales Basados en nombre (2)
[email protected]
Por ejemplo, para tener dos hosts virtuales sobre la IP 172.26.8.1 con los nombres www.web1.net y web2.net podríamos implementarlo así: 1. Se crean los archivos: /etc/apache2/sites-available/web1
ServerName www.web1.net DocumentRoot /var/www/web1.net /etc/apache2/sites-available/web2
ServerName www.web2.net DocumentRoot /var/www/web1.net
U03. Configuración de un servidor web: Apache
28
Andrés Rosique Hernández
Instalación y mantenimiento de servicios de Internet
Hosts virtuales Basados en nombre (3)
[email protected]
2. Se habilitan los nuevos sitios virtuales: a2ensite sitio1 a2ensite sitio2 3. Se añade o modifica el fichero /etc/apache2/sitesavailabe/default para que incluya la siguiente directiva: NameVirtualHost 172.26.8.1 En Ubuntu el fichero /etc/apache2/sites-availabe/default contiene la directiva NameVirtualHost * por defecto.
U03. Configuración de un servidor web: Apache
29
Andrés Rosique Hernández
[email protected]
Instalación y mantenimiento de servicios de Internet
Autenticación ●
●
Se puede conseguir que para acceder a determinados recursos un cliente tenga que autenticarse ante el servidor. El proceso de autenticación es simple. – –
●
El cliente envía su nombre y contraseña. A continuación, Apache comprueba su archivo de nombres y contraseñas cifradas para saber si el cliente tiene derecho a acceder o no.
Existen dos formas diferentes de autenticación: – –
Globalmente. Usando los ficheros especiales .htaccess.
U03. Configuración de un servidor web: Apache
30
Andrés Rosique Hernández
[email protected]
Instalación y mantenimiento de servicios de Internet
Autenticación (2) ●
Las directivas de autenticación del módulo mod_auth (módulo de autenticación de Apache) son:
AuthUserFile: asigna el nombre del archivo de texto que contendrá los nombres de usuario y las contraseñas usadas en la autenticación HTTP básica. – AuthGroupFile: asigna el nombre del archivo de texto que contendrá la lista de grupos de usuarios usadas en la autenticación básica. – AuthAuthoritative: toma los valores On y Off (por defecto está en On). Permite que se pase a un segundo método de autentificación si falla el primero y siempre que tengamos varios métodos. U03. Configuración de un servidor web: Apache 31 –
Andrés Rosique Hernández
[email protected]
Instalación y mantenimiento de servicios de Internet
Autenticación (3) Por ejemplo, para crear un directorio clase con acceso restringido al usuario alumno podríamos implementarlo así: 1. Se crea el directorio: sudo mkdir /var/www/clase y se pone en él una página web simple (index.html). 2. Se crea el directorio donde almacenar las contraseñas: Este directorio no sudo mkdir /var/www/passwd debe ser accesible desde 3. Se crea el archivo con el primer usuario: el navegador web. sudo htpasswd -c /var/www/passwd/.htpasswd alumno El argumento -c sólo se usa con el primer usuario para crear el archivo. Con el resto de usuarios no se debe utilizar. U03. Configuración de un servidor web: Apache
32
Andrés Rosique Hernández
[email protected]
Instalación y mantenimiento de servicios de Internet
Autenticación (4) 4. Se crea el fichero .htaccess en /var/www/clase: sudo nano /var/www/clase/.htaccess y se escribe el siguiente contenido: AuthType Basic AuthName “Pagina restringida de alumno” AuthUserFile /var/www/passwd/.htpasswd AuthGroupFile /dev/null require user alumno
5. Se modifica el archivo de configuración del sitio web:
... AllowOverride AuthConfig Order allow, deny Allow from all U03. Configuración de un servidor web: Apache
Controla la autentificación con los archivos .htaccess
33
Andrés Rosique Hernández
[email protected]
Instalación y mantenimiento de servicios de Internet
Autenticación (5) 6. Por último, se reinicia Apache: sudo apache2ctl restart
U03. Configuración de un servidor web: Apache
34
Andrés Rosique Hernández
[email protected]
Instalación y mantenimiento de servicios de Internet
Glosario ●
●
HTTP: HyperText Transfer Protocol (protocolo de transferencia de hipertexto). SSI: Server Side Includes. Una de las primeras alternativas para crear webs dinámicas.
U03. Configuración de un servidor web: Apache
35
Andrés Rosique Hernández
[email protected]
Instalación y mantenimiento de servicios de Internet
Bibliografía ●
Libros:
●
Martín Romero, A. y Martín Romero, J. Servicios de Internet. Instalación y mantenimiento. Mira Editores, 2006. Enlaces: – www.guia-ubuntu.org. – http://httpd.apache.org/docs/.
●
Otros:
–
–
Apuntes del curso Software libre y educación (curso avanzado): servicios de red, gestores de contenido y seguridad. Thales-CICA, 2004-2005.
U03. Configuración de un servidor web: Apache
36