You are on page 1of 52

 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)
 VENTAJAS

 Modular
 Código abierto
 Multi-plataforma
 Extensible
 Popular (fácil conseguir ayuda/soporte)
 En distribuciones basadas en Debian
# apt-get install mysql-client mysql-server
# apt-get install apache2 phpmyadmin

 Archivos de configuración del apache


NOTA: 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.
 Archivos de configuración del apache
 Posteriormente se mostrará cómo realizar la configuración de Host Virtuales.

www.dominio.com
foros.dominio.com
www.dominio2.com

200.30.2.1

Cliente Web Servidor Web que aloja varios sitios


virtuales (Virtual Hosts), usando una
única dirección IP
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 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 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.


 EJEMPLO 1

<VirtualHost 206.171.50.50>
ServerName www.londonetwork.com
Estas tres directivas se
DocumentRoot /var/www/londonetwork encuentran dentro del
DirectoryIndex welcome.html contexto de servidor virtual
<Location /secured>
Esta directiva está en contexto Location.
DirectoryIndex login.html
Significa que se mostrará el archivo
</Location> login.html a todo cliente que trate de
</VirtualHost> acceder a www.londonetwork.com/secured
 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.
 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.


 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
 DocumentRoot

 Por defecto en el contexto de servidor se usa el directorio /var/www como


DocumentRoot del servidor.

/var/www/

Cada uno de estos


sitio1
directorios puede usarse
como DocumentRoot para
sitio2 cada sitio virtual.
www.sitio1.com
sitio3 www.sitio2.com
www.sitio3.com
 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 defecto
Listen 8080 //HTTP alternativo
Listen 443 //HTTPS
 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.
 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
 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.
 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.net
ServerAlias londonetwork.net
 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).
 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
 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,allow
deny from myboss.londonetwok.net
allow 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
 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)


 ¿Qué opciones tengo en caso de querer alojar varios sitios en un único
servidor Web?

1. www. dominioISP.com/cliente1.
2. http://<dominio del cliente>:<puerto no estándar>.
Por ejemplo www.dominio.com:8080.
3. 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).
 Cada sitio Web tiene una IP diferente:
 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/example1
ServerName www.example1.com
</VirtualHost>

<VirtualHost 172.20.30.50> El servidor tiene dos direcciones IP


DocumentRoot /www/example2 (172.20.30.40 y 172.20.30.50) las cuales
ServerName www.example2.org resuelven los nombres:
</VirtualHost> www.example1.com y www.example2.org
respectivamente.
 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.
 Ejemplo 1:

NameVirtualHost *:80
<VirtualHost *:80>
ServerName www.domain.tld
ServerAlias domain.tld *.domain.tld
DocumentRoot /www/domain
</VirtualHost>

<VirtualHost *:80>
ServerName www.otherdomain.tld Ejecución de varios sitios web
DocumentRoot /www/otherdomain basados en nombres en una única
</VirtualHost> dirección IP.
El asterisco indica que * usará todas
las direcciones que tenga el servidor
 Ejemplo 2:
Listen 80
En este caso suponemos que el servidor
# This is the other address tiene más de una dirección IP y usaremos
NameVirtualHost 172.20.30.50 la dirección 172.20.30.50 compartida por
los sitios:
<VirtualHost 172.20.30.50>
DocumentRoot /www/example1
• www.example1.com
ServerName www.example1.com • www.example2.org

</VirtualHost>

<VirtualHost 172.20.30.50>
DocumentRoot /www/example2
ServerName www.example2.org
...
</VirtualHost>
 Ejemplo 3:

NameVirtualHost 192.168.1.1
NameVirtualHost 172.20.30.40

<VirtualHost 192.168.1.1 172.20.30.40>


DocumentRoot /var/www/server1
ServerName server.example.com
ServerAlias example.com
</VirtualHost>

Serving the same content on different


IP addresses.
 Ejemplo 4:

Listen 80
Listen 8080

NameVirtualHost 172.20.30.40:80
NameVirtualHost 172.20.30.40:8080

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

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

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

<VirtualHost 172.20.30.40:8080> Corriendo diferentes sitios en


ServerName www.example2.org
DocumentRoot /www/otherdomain-8080
diferentes puertos.
</VirtualHost>
• Ejemplo 5:
Listen 80
NameVirtualHost 172.20.30.40
<VirtualHost 172.20.30.40>
DocumentRoot /www/example1
ServerName www.example1.com
</VirtualHost>
<VirtualHost 172.20.30.40>
DocumentRoot /www/example2
ServerName www.example2.org
</VirtualHost>
# IP-based
<VirtualHost 172.20.30.50>
DocumentRoot /www/example4
ServerName www.example4.edu
</VirtualHost>
<VirtualHost 172.20.30.60>
DocumentRoot /www/example5 Hosting virtual basado en nombres y
ServerName www.example5.gov basado en IP (Combinados).
</VirtualHost>
 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.
3. Configurar las opciones IP del servidor y reiniciar el servicio de red

# nano /etc/network/interfaces

# /etc/init.d/networking restart
4. Configurar el cliente DNS mediante el archivo /etc/resolv.conf

# nano /etc/resolv.conf
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:

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:


8. Reiniciar el servicio DNS
# service bind9 restart

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


10. Configuración de Hosting Virtual en apache
Copiar el archivo por defecto para configuración de virtual host en apache:
# cd /etc/apache2/sites-available
Se definirán dos sitios virtuales, alojados en el
# cp default www
mismo servidor Web y ambos usarán la misma
# cp default www1 dirección IP (Hosting virtual basado en nombres)

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


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.
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


13. Probar en el navegador con las siguientes URLs:

http://www.sudominio.com
http://www1.sudominio.com
 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
 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
 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