Está en la página 1de 52

APACHE

Conceptos, instalación y
configuración
Instructor
Luis Felipe Londoño Muñoz
Centro 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 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
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.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
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>
Estas tres directivas se
ServerName www.londonetwork.com encuentran dentro del
DocumentRoot /var/www/londonetwork contexto de servidor
virtual
DirectoryIndex welcome.html
<Location /secured> Esta directiva está en contexto
Location. Significa que se mostrará el
DirectoryIndex login.html archivo login.html a todo cliente que
</Location> trate de acceder a
</VirtualHost> 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
Principales directivas del apache
• 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
www.sitio2.com
sitio3 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 defecto
Listen 8080 //HTTP alternativo
Listen 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.net
ServerAlias 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,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
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.
Hosting Virtual
• 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/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)
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)
Hosting virtual basado en IP
• A continuación se muestra la configuración del servidor Web
virtual basado en IP:

Listen 80

<VirtualHost 172.20.30.40> El servidor tiene dos


DocumentRoot /www/example1 direcciones IP (172.20.30.40 y
ServerName www.example1.com 172.20.30.50) las cuales
</VirtualHost> resuelven los nombres
www.example1.com y
<VirtualHost 172.20.30.50> www.example2.org
DocumentRoot /www/example2 respectivamente.
ServerName www.example2.org
</VirtualHost>
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 Ejecución de varios


<VirtualHost *:80> sitios web basados en
ServerName www.domain.tld nombres en una única
ServerAlias domain.tld *.domain.tld dirección IP.
DocumentRoot /www/domain
</VirtualHost>
El asterisco indica que *
usará todas las
<VirtualHost *:80> direcciones que tenga el
ServerName www.otherdomain.tld servidor
DocumentRoot /www/otherdomain
</VirtualHost>
Hosting virtual basado nombres
• Ejemplo 2:
Listen 80

# This is the other address En este caso suponemos


NameVirtualHost 172.20.30.50
que el servidor tiene más
<VirtualHost 172.20.30.50> de una dirección IP y
DocumentRoot /www/example1
ServerName www.example1.com usaremos la dirección
… 172.20.30.50 compartida
</VirtualHost>
por los sitios
<VirtualHost 172.20.30.50> • www.example1.com
DocumentRoot /www/example2
ServerName www.example2.org
• www.example2.org
...
</VirtualHost>
Hosting virtual basado nombres
• Ejemplo 3:
NameVirtualHost 192.168.1.1 Serving the same content
NameVirtualHost 172.20.30.40
on different IP addresses
<VirtualHost 192.168.1.1 172.20.30.40>
DocumentRoot /var/www/server1
ServerName server.example.com
ServerAlias example.com
</VirtualHost>
Hosting virtual basado nombres
•Ejemplo 4:
Listen 80
Listen 8080

NameVirtualHost 172.20.30.40:80
NameVirtualHost 172.20.30.40:8080
Corriendo diferentes sitios
<VirtualHost 172.20.30.40:80>
ServerName www.example1.com
DocumentRoot /www/domain-80
en diferentes puertos
</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>
ServerName www.example2.org
DocumentRoot /www/otherdomain-8080
</VirtualHost>
Hosting virtual basado nombres
•Ejemplo 5:
Listen 80

NameVirtualHost 172.20.30.40

<VirtualHost 172.20.30.40>
DocumentRoot /www/example1
Hosting virtual basado en
ServerName www.example1.com
</VirtualHost> nombres y basado en IP
<VirtualHost 172.20.30.40>
DocumentRoot /www/example2
(Combinados)
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
ServerName www.example5.gov
</VirtualHost>
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
Ejemplo de Configuración
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
Servidor DNS
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ón
Servidor DNS
4. Configurar el cliente DNS mediante el archivo
/etc/resolv.conf
# nano /etc/resolv.conf
Ejemplo de Configuración
Servidor 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”;
Ambas Zonas son maestras o
};
principales.
zone “168.192.in-addr.arpa”{ El archivo de zona directa se llama
type master; db.directa (Hay que crearlo).
file “/etc/bind/db.inversa”;
El archivo de zona inversa se llama
};
db.inversa (Hay que crearlo).
Ejemplo de Configuración
Servidor DNS
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ón
Servidor DNS
Ejemplo de Configuración
Servidor DNS
Ejemplo de Configuración
Servidor DNS
8. Reiniciar el servicio DNS
# service bind9 restart

9. probar la resolución de nombres mediante el


comando nslookup
Ejemplo de configuración
Hosting Virtual en Apache

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
# cp default www el mismo servidor Web y ambos usarán la
# cp default www1 misma dirección IP (Hosting virtual basado
en nombres)

11.Editar ambos archivos, como se muestra a


continuación
Ejemplo de configuración
Hosting Virtual en Apache
Ejemplo de configuración
Hosting 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)
Ejemplo de configuración
Hosting Virtual en Apache
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ón
Hosting 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ón
13.Probar en el navegador con las siguientes
URLs
http://www.sudominio.com
http://www1.sudominio.com
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

También podría gustarte