Presentacion 19 - Apache en Linux

52
APACHE Conceptos, instalación y configuración Instructor Luis Felipe Londoño Muñoz Centro de Servicios y gestión empresarial Teleinformática

Transcript of Presentacion 19 - Apache en Linux

Page 1: Presentacion 19 - Apache en Linux

APACHEConceptos, instalación y

configuraciónInstructor

Luis Felipe Londoño MuñozCentro de Servicios y gestión empresarial

Teleinformática

Page 2: Presentacion 19 - Apache en Linux

Servidor Web Apache• El servidor HTTP Apache es un servidor web

HTTP de código abierto para plataformas Unix (BSD, GNU/Linux, etc.), Microsoft Windows, Macintosh y otras, que implementa el protocolo HTTP/1.1 y la noción de sitio virtual.

• Es el servidor HTTP más usado (56% de los servidores Web usan Apache, para Agosto de 2010)

Page 3: Presentacion 19 - Apache en Linux

Servidor Web Apache• Ventajas– Modular– Código abierto– Multi-plataforma– Extensible– Popular (fácil conseguir ayuda/soporte)

Page 4: Presentacion 19 - Apache en Linux

Instalación del servidor LAMP (Linux Apache MYSQL PHP)

• En distribuciones basadas en Debian# apt-get install mysql-client mysql-server# apt-get install apache2 phpmyadmin

• Archivos de configuración del apacheNOTA: Es recomendable no modificar el archivo de configuración global /etc/apache2/apache2.conf

– Se recomienda crear archivos de configuración para cada host virtual dentro del directorio /etc/apache2/sites-avalaible

– Por defecto hay un Host Virtual definido en el archivo /etc/apache2/sites-avalaible/default

Page 5: Presentacion 19 - Apache en Linux

Instalación del servidor LAMP (Linux Apache MYSQL PHP)

• Archivos de configuración del apache– Posteriormente se mostrará cómo realizar la

configuración de Host Virtuales

www.dominio.comforos.dominio.comwww.dominio2.com

Cliente Web Servidor Web que aloja varios sitios virtuales (Virtual Hosts), usando una única dirección IP

200.30.2.1

Page 6: Presentacion 19 - Apache en Linux

Contexto de las directivas del apache

NOTA: Las directivas son opciones de configuración para la ejecución del apache

• Contexto de configuración del servidor– Contexto: Alcance– Las directivas pueden aparecer en cualquier archivo de

configuración fuera de cualquier contenedor.– Una directiva en este contexto afectara a todos los demás– Tienen un alcance global– Archivos comunes: httpd.conf, apache2.conf, etc.– Mostrar archivo apache2.conf

Page 7: Presentacion 19 - Apache en Linux

Contexto de las directivas del apache

• Contexto del contenedor– Los contenedores se usan para limitar el alcance

de una directiva.– Una pareja de etiquetas agrupan las directivas– <VirtualHost …>…</VirtualHost> se utiliza para

aplicar una o mas directivas al sitio web virtual (Host Virtual)

– <Directory …>…</Directory> Se utiliza para aplicar directrices a un directorio determinado. Las directivas se aplicarán a todos los subdirectorios.

Page 8: Presentacion 19 - Apache en Linux

Contexto de las directivas del apache

• Contexto del contenedor– <Location …>…</Location> se utiliza para aplicar

una o mas directivas a un URL determinado

NOTA: Existen más contenedores, pero éstos son los más utilizados.

• Mostrar archivo /etc/apache2/sites-available/default

Page 9: Presentacion 19 - Apache en Linux

Contexto de las directivas del apache

• EJEMPLO 1

<VirtualHost 206.171.50.50>ServerName www.londonetwork.comDocumentRoot /var/www/londonetworkDirectoryIndex welcome.html<Location /secured>

DirectoryIndex login.html</Location></VirtualHost>

Estas tres directivas se encuentran dentro del contexto de servidor virtual

Esta directiva está en contexto Location. Significa que se mostrará el archivo login.html a todo cliente que trate de acceder a www.londonetwork.com/secured

Page 10: Presentacion 19 - Apache en Linux

Contexto de las directivas del apache

• Reglas para el uso de contenedores– Un contenedor <VirtualHost> no se puede anidar

con otro del mismo tipo.– Los contenedores <Location> y <Directory> no se

pueden mezclar ni utilizar uno dentro del otro.

Page 11: Presentacion 19 - Apache en Linux

Principales directivas del apache

• AccessFileName– Especifica el nombre del archivo de control por

directorio.– Los parámetros predeterminados .htaccess hace

que Apache busque el archivo .htaccess cada vez que el cliente del sistema emite una petición de acceso.

– El archivo .htaccess contiene directivas aplicadas para cada directorio.

Page 12: Presentacion 19 - Apache en Linux

Principales directivas del apache• DocumentRoot– Es el directorio raíz para los archivos del sitio Web. – Cada host virtual definido dentro de los contenedores

<VirtualHost> debe tener esta directiva para indicar la ruta dónde se encuetran los archivos del sitio.

– Por ejemplo, si se definió DocumentRoot /var/www para el sitio www.londonetwork.net, entonces cualquier solicitud a www.londonetwork.net/index.html hace que el servidor busque /var/www/index.html

Page 13: Presentacion 19 - Apache en Linux

/var/www/

Principales directivas del apache• DocumentRoot

– Por defecto en el contexto de servidor se usa el directorio /var/www como DocumentRoot del servidor.

sitio1

sitio2

sitio3

Cada uno de estos directorios puede usarse como DocumentRoot para cada sitio virtual www.sitio1.comwww.sitio2.com www.sitio3.com

Page 14: Presentacion 19 - Apache en Linux

Principales directivas del apache

• include– Usada si desea incluir otros archivos de

configuración a parte de los propios del servidor.• Listen– Usada para especificar el puerto a través del cual

escuchará apache las peticiones de los clientes Web. Por ejemplo:

Listen 80 //Puerto HTTP por defectoListen 8080 //HTTP alternativoListen 443 //HTTPS

Page 15: Presentacion 19 - Apache en Linux

Principales directivas del apache

• User– Esta directiva se usa para configurar el ID del

usuario del sistema que se utilizará para ejecutar los procesos del apache.

– Por ejemplo en Debian se crea el usuario www-data y con este usuario se ejecuta el daemon del apache.

• Group– Esta directiva se usa para configurar el ID del grupo

del sistema que se utilizará para ejecutar los procesos del apache.

Page 16: Presentacion 19 - Apache en Linux

Principales directivas del apache• Options– Esta directiva controla las propiedades del servidor

disponibles para un directorio en particular. Los valores posibles son los siguientes:• None: Sin opciones• All: Todas• ExecCGI: Se permite la ejecución de CGI• Indexes: Si se solicita la URL de un directorio y éste

carece de un DirectoryIndex, entonces el servidor muestra una lista con el contenido de dicha carpeta.

• FollowSymLinks: El servidor seguirá los enlaces simbólicos que apunten a los directorios del sistema.

• Includes: Se pueden utilizar los comandos SSI

Page 17: Presentacion 19 - Apache en Linux

Principales directivas del apache• ServerAdmin– Esta directiva especifica la dirección de correo

electronico que el servidor incluye para los mensajes de error (Puede ser la del Webmaster)

• ServerName– Esta directiva es la encargada de definir el nombre del

servidor.– Asegúrese de ingresar un nombre de dominio

completamente cualificado (FQDN). Por ejemplo www.londonetwork.net

– Tenga en cuenta que para cada host virtual debe especificar un ServerName.

Page 18: Presentacion 19 - Apache en Linux

Principales directivas del apache• ServerRoot– Esta directiva se usa para definir el directorio en el que se

encuentran los archivos de configuración del servidor.– No confundir con la directiva DocumentRoot. – Por defecto en Ubuntu 10.04, ServerRoot es /etc/apache2.

En fedora es /etc/httpd/• ServerAlias– Cuando tenga que referirse a un servidor que tiene varios

nombres puede utilizar ServerAlias para definir un sobrenombre para el mismo ServerName.

– Ejemplo:ServerName www.londonetwork.netServerAlias londonetwork.net

Page 19: Presentacion 19 - Apache en Linux

Principales directivas del apache• ErrorLog– Esta directiva especifica el nombre del archivo de registro

donde se guardan los mensajes de error que genera el servidor.

• DirectoryIndex– Esta directiva especifica la(s) páginas principales para un

sitio. Por ejemplo:DirectoryIndex index.php index.html(Apache buscará en el directorio del sitio la página index.php y la mostrará. En caso de no encontrarla buscará la página index.html. Si no encuentra tratará de indexar el contenido del directorio)

Page 20: Presentacion 19 - Apache en Linux

Principales directivas del apache• AllowOverride– Esta directiva le indica al servidor qué directivas de las

declaradas en el archivo .htaccess, pueden sustituir a las que se encontró en los primeros archivos de configuración.

– Cuando el argumento sea None, el servidor no leerá ell archivo .htaccess (Se acelera el tiempo de respuesta del servidor)

– Opciones:• AuthConfig• FileInfo• Indexes• Limit• Options

Page 21: Presentacion 19 - Apache en Linux

Principales directivas del apache• Order– Controla el sistema de evaluación que utiliza

apache con las directivas allow y deny (Usadas para permitir o denegar hosts)

– Ejemplo<Directory /var/www>

Order deny,allowdeny from myboss.londonetwok.netallow from all

</Directory>

NOTA: En este ejemplo se deniega el acceso al host myboss.londonetwork.net, mientras que se le permite al resto de los hosts

Page 22: Presentacion 19 - Apache en Linux

Hosting Virtual• Qué es un Virtual Host (Host Virtual)– El término Hosting Virtual se refiere a hacer

funcionar más de un sitio web (tales como www.company1.com y www.company2.com) en una sola máquina.

• Ventajas de un sitio virtual– Son más fáciles de manejar– Un único conjunto de archivos de configuración– Una actualización de hardware o software beneficia a

todos los sitios Web virtuales.

Page 23: Presentacion 19 - Apache en Linux

• Observaciones– Tener servidor dedicado por cada sitio Web puede

aumentar el rendimiento del sitio, porque cada servidor sólo atenderá llamadas pertenecientes a ese sitio.

– El servidor dedicado solo aprovecha al máximo el rendimiento cuando el sitio tiene alta densidad de tráfico.

– La mayoría de los sitios Web son virtuales (Usan un servidor compartido)

Hosting Virtual

Page 24: Presentacion 19 - Apache en Linux

• ¿Qué opciones tengo en caso de querer alojar varios sitios en un único servidor Web?1. www. dominioISP.com/cliente12. http://<dominio del cliente>:<puerto no estándar>

Por ejemplo www.dominio.com:80803. Usar un servidor dedicado para el dominio de cada

cliente (Costoso)4. Usar Virtual Hosting (mentener varios sitios Web

alojados en un único servidor Web)

Hosting Virtual

Page 25: Presentacion 19 - Apache en Linux

Hosting virtual basado en IP• Cada sitio Web tiene una IP diferente

Page 26: Presentacion 19 - Apache en Linux

Hosting virtual basado en IP• Es necesario configurar los routers para que asocien

adecuadamente todas las direcciones IP que quiera usar con los servidores Web (Virtuales y principal)

• Podrá elegir entre crear alias IP para cada interfaz Ethernet o disponer de distintas interfaces para cada dirección IP (tarjetas Ethernet adicionales)

Page 27: Presentacion 19 - Apache en Linux

• A continuación se muestra la configuración del servidor Web virtual basado en IP:

Listen 80

<VirtualHost 172.20.30.40>DocumentRoot /www/example1ServerName www.example1.com</VirtualHost>

<VirtualHost 172.20.30.50>DocumentRoot /www/example2ServerName www.example2.org</VirtualHost>

El servidor tiene dos direcciones IP (172.20.30.40 y 172.20.30.50) las cuales resuelven los nombres www.example1.com y www.example2.org respectivamente.

Hosting virtual basado en IP

Page 28: Presentacion 19 - Apache en Linux

Hosting virtual basado nombres• Si usa hosting virtual basado en nombres, el servidor

atiende al nombre de host que especifica el cliente en las cabeceras de HTTP.

• Usando esta técnica, una sola dirección IP puede ser compartida por muchos sitios web diferentes.

• El hosting virtual basado en nombres es más sencillo, porque solo necesita configurar su servidor de DNS para que localice la dirección IP correcta y entonces configurar Apache para que reconozca los diferentes nombres de host.

• Use hosting virtual basado en nombres a menos de que haya una razón especial para usar hosting virtual basado en IP.

Page 29: Presentacion 19 - Apache en Linux

Hosting virtual basado nombres• Ejemplo 1:

NameVirtualHost *:80<VirtualHost *:80>ServerName www.domain.tldServerAlias domain.tld *.domain.tldDocumentRoot /www/domain</VirtualHost>

<VirtualHost *:80>ServerName www.otherdomain.tldDocumentRoot /www/otherdomain</VirtualHost>

Ejecución de varios sitios web basados en nombres en una única dirección IP.El asterisco indica que * usará todas las direcciones que tenga el servidor

Page 30: Presentacion 19 - Apache en Linux

Hosting virtual basado nombres• Ejemplo 2:

Listen 80

# This is the other addressNameVirtualHost 172.20.30.50

<VirtualHost 172.20.30.50>DocumentRoot /www/example1ServerName www.example1.com…</VirtualHost>

<VirtualHost 172.20.30.50>DocumentRoot /www/example2ServerName www.example2.org...</VirtualHost>

En este caso suponemos que el servidor tiene más de una dirección IP y usaremos la dirección 172.20.30.50 compartida por los sitios • www.example1.com• www.example2.org

Page 31: Presentacion 19 - Apache en Linux

Hosting virtual basado nombres

• Ejemplo 3:

NameVirtualHost 192.168.1.1NameVirtualHost 172.20.30.40

<VirtualHost 192.168.1.1 172.20.30.40>DocumentRoot /var/www/server1ServerName server.example.comServerAlias example.com</VirtualHost>

Serving the same content on different IP addresses

Page 32: Presentacion 19 - Apache en Linux

Hosting virtual basado nombres• Ejemplo 4:

Listen 80Listen 8080

NameVirtualHost 172.20.30.40:80NameVirtualHost 172.20.30.40:8080

<VirtualHost 172.20.30.40:80>ServerName www.example1.comDocumentRoot /www/domain-80</VirtualHost>

<VirtualHost 172.20.30.40:8080>ServerName www.example1.comDocumentRoot /www/domain-8080</VirtualHost>

<VirtualHost 172.20.30.40:80>ServerName www.example2.orgDocumentRoot /www/otherdomain-80</VirtualHost>

<VirtualHost 172.20.30.40:8080>ServerName www.example2.orgDocumentRoot /www/otherdomain-8080</VirtualHost>

Corriendo diferentes sitios en diferentes puertos

Page 33: Presentacion 19 - Apache en Linux

Hosting virtual basado nombres• Ejemplo 5:

Listen 80

NameVirtualHost 172.20.30.40

<VirtualHost 172.20.30.40>DocumentRoot /www/example1ServerName www.example1.com</VirtualHost>

<VirtualHost 172.20.30.40>DocumentRoot /www/example2ServerName www.example2.org</VirtualHost>

# IP-based<VirtualHost 172.20.30.50>DocumentRoot /www/example4ServerName www.example4.edu</VirtualHost>

<VirtualHost 172.20.30.60>DocumentRoot /www/example5ServerName www.example5.gov</VirtualHost>

Hosting virtual basado en nombres y basado en IP (Combinados)

Page 34: Presentacion 19 - Apache en Linux

Ejemplo de Configuración• Escenario:– 1 sólo servidor físico– 1 dirección IP: 192.168.2.2 (Solo una interfaz eth0)

• Requerimientos– Instalar 2 servicios (DNS y WEB)– Dominio: sudominio.com– Servidor Web Apache– Alojar dos sitios virtuales basado en nombres y usando

la única dirección IP:• www.sudominio.com• www1.sudominio.com

Page 35: Presentacion 19 - Apache en Linux

1. Instalar el servidor DNS (Bind9)#apt-get install bind9

2. Instalar el servidor LAMP (Linux – Apache – MYSQL - PHP)# apt-get install mysql-client mysql-server# apt-get install apache2 phpmyadmin

NOTA: Intente probar el apache en el navegador ingresando el siguiente URL: http://localhost

Ejemplo de Configuración

Page 36: Presentacion 19 - Apache en Linux

3. Configurar las opciones IP del servidor y reiniciar el servicio de red

# nano /etc/network/interfaces

# /etc/init.d/networking restart

Ejemplo de ConfiguraciónServidor DNS

Page 37: Presentacion 19 - Apache en Linux

4. Configurar el cliente DNS mediante el archivo /etc/resolv.conf

# nano /etc/resolv.conf

Ejemplo de ConfiguraciónServidor DNS

Page 38: Presentacion 19 - Apache en Linux

5. Editar el archivo /etc/bind/named.conf.local y definir las zonas directa e inversa para su dominio al final del archivo:

# nano /etc/bind/named.conf.local

Añada las siguientes líneas:

zone “sudominio.com”{type master;file “/etc/bind/db.directa”;

};

zone “168.192.in-addr.arpa”{type master;file “/etc/bind/db.inversa”;

};

Ejemplo de ConfiguraciónServidor DNS

Ambas Zonas son maestras o principales.

El archivo de zona directa se llama db.directa (Hay que crearlo).

El archivo de zona inversa se llama db.inversa (Hay que crearlo).

Page 39: Presentacion 19 - Apache en Linux

6. Crear los archivos de zona db.directa y db.inversa. Hay dos opciones, crear los archivos desde cero o tomar un archivo de zona existente como referencia. Este última sera la opción elegida.

# cd /etc/bind/# cp db.local db.directa# cp db.127 db.inversa

7. Editar los archivos db.directa y db.inversa como se muestra a continuación:

Ejemplo de ConfiguraciónServidor DNS

Page 40: Presentacion 19 - Apache en Linux

Ejemplo de ConfiguraciónServidor DNS

Page 41: Presentacion 19 - Apache en Linux

Ejemplo de ConfiguraciónServidor DNS

Page 42: Presentacion 19 - Apache en Linux

8. Reiniciar el servicio DNS

# service bind9 restart

9. probar la resolución de nombres mediante el comando nslookup

Ejemplo de ConfiguraciónServidor DNS

Page 43: Presentacion 19 - Apache en Linux

10.Configuración de Hosting Virtual en apacheCopiar el archivo por defecto para configuración de virtual host en apache# cd /etc/apache2/sites-available# cp default www# cp default www1

11.Editar ambos archivos, como se muestra a continuación

Ejemplo de configuraciónHosting Virtual en Apache

Se definirán dos sitios virtuales, alojados en el mismo servidor Web y ambos usarán la misma dirección IP (Hosting virtual basado en nombres)

Page 44: Presentacion 19 - Apache en Linux

Ejemplo de configuraciónHosting Virtual en Apache

Page 45: Presentacion 19 - Apache en Linux

Ejemplo de configuraciónHosting Virtual en Apache

A diferencia del archivo de configuración www en este archivo no se permite la indexación del directorio /var/www/www1.sudominio.com y tampoco se permite seguir los enlaces simbólicos. Tanto el sitio virtual www como el sitio www permiten el acceso a cualquier host (allow from all)

Page 46: Presentacion 19 - Apache en Linux

11. Crear los directorios www.sudominio.com y www1.sudominio.com (No tienen que ser estos nombres, usted tiene libertad de elegirlos pero no olvide que deben coincidir con los asignados a la directiva DocumentRoot de cada Virtual Host)

# cd /var/www# mkdir www.sudominio.com www1.sudominio.com

12. Para realizar pruebas será necesario crear los sitios dentro de cada uno de los directorios. En nuestro caso copiaremos dos platillas y las pegaremos en cada directorio.

Ejemplo de configuraciónHosting Virtual en Apache

Page 47: Presentacion 19 - Apache en Linux

13. Los sitios virtuales que realmente están activos se encuentran enlazados en el directorio /etc/apache/sites-enabled. Para que los sitios sean activados y se cree un enlace simbólico desde /etc/apache/sites-avalaible hasta /etc/apache/sites-enabled se usa el siguiente comando:

# a2ensite www# a2ensite www1

14. para que los cambios surtan efectos será necesario reiniciar el apache

# service apache restart

Ejemplo de configuraciónHosting Virtual en Apache

Page 48: Presentacion 19 - Apache en Linux

13.Probar en el navegador con las siguientes URLs

http://www.sudominio.comhttp://www1.sudominio.com

Ejemplo de configuración

Page 49: Presentacion 19 - Apache en Linux

Ejercicio 1• Escenario:– 1 sólo servidor físico– 2 direcciones IP:

• 192.168.2.2• 192.168.10.3

• Requerimientos– Instalar 2 servicios (DNS y WEB Apache)– 2 Dominios virtuales: sudominio.com midominio.com– Alojar dos sitios virtuales basado en IP y usando una

dirección IP para cada sitio:• www.sudominio.com• www.midominio.com

Page 50: Presentacion 19 - Apache en Linux

Ejercicio 2• Escenario:– 1 sólo servidor físico– 1 dirección IP: 192.168.2.2

• Requerimientos– Instalar 2 servicios (DNS y WEB Apache)– 1 Dominio: sudominio.com– Alojar 2 sitios virtuales:• www.sudominio.com• www.sudominio.com:8080

Page 51: Presentacion 19 - Apache en Linux

Ejercicio 3• Escenario:– 1 sólo servidor físico– 2 direcciones IP:

• 192.168.2.2• 192.168.10.3

• Requerimientos– Instalar 2 servicios (DNS y WEB Apache)– 1 Dominio: sudominio.com– Alojar 2 sitios virtuales basado en nombres usando la primera

dirección IP y otro sitio virtual usando la segunda dirección IP• www.sudominio.com• www1.sudominio.com • foros.sudominio.com

Page 52: Presentacion 19 - Apache en Linux

FIN