Date post: | 24-Jun-2015 |
Category: |
Documents |
Upload: | jorge-luis-madrigal-munoz |
View: | 593 times |
Download: | 4 times |
APACHEConceptos, instalación y
configuraciónInstructor
Luis Felipe Londoño MuñozCentro de Servicios y gestión empresarial
Teleinformática
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)
Servidor Web Apache• Ventajas– Modular– Código abierto– Multi-plataforma– Extensible– Popular (fácil conseguir ayuda/soporte)
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
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
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
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.
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
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
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.
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.
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
/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
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
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.
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
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.
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
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)
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
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
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.
• 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
• ¿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
Hosting virtual basado en IP• Cada sitio Web tiene una IP diferente
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)
• 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
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.
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
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
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
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
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)
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
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
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
4. Configurar el cliente DNS mediante el archivo /etc/resolv.conf
# nano /etc/resolv.conf
Ejemplo de ConfiguraciónServidor DNS
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).
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
Ejemplo de ConfiguraciónServidor DNS
Ejemplo de ConfiguraciónServidor DNS
8. Reiniciar el servicio DNS
# service bind9 restart
9. probar la resolución de nombres mediante el comando nslookup
Ejemplo de ConfiguraciónServidor DNS
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)
Ejemplo de configuraciónHosting Virtual en Apache
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)
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
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
13.Probar en el navegador con las siguientes URLs
http://www.sudominio.comhttp://www1.sudominio.com
Ejemplo de configuración
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
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
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
FIN