Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Un servidor web opera mediante el protocolo HTTP, de la capa de aplicacin del Modelo
OSI. Al protocolo HTTP se le asigna habitualmente el puerto TCP 80. Las peticiones al
servidor suelen realizarse mediante HTTP utilizando el mtodo de peticin GET, en el que
el recurso se solicita a travs de la url al servidor Web.
GET /index.html HTTP/1.1 HOST: www.host.com
En la barra de URL de un navegador cualquiera, la peticin anterior sera anloga a la
siguiente direccin Web:
www.host.com/index.html
Es el segundo tipo de peticin HTTP ms utilizado. Los datos a enviar al servidor se incluyen
en el cuerpo de la misma peticin con las cabeceras HTTP asignadas
correspondientemente respecto al tipo de peticin. Generalmente se asocia con los
formularios web en los que los datos suelen ser cifrados para enviarlos de manera segura
al servidor.
Por motivos de convencin se incluye en la peticin la cabecera application/x-www-formurlencoded, que indica el formato o codificacin de los datos a enviar; esta es variable>valor en el formato: variable=valor separada cada par variable->valor por &. Esta
cabecera, en los formularios HTML se enva automticamente, pero en otras tecnologas
web tal como AJAX, si se desea hacer correctamente una peticin POST, debe ser
especificado o instanciado el objeto: setRequestHeader("Content-type:application/x-wwwform-urlencode"); ajax.send(data);
Un Servidor Web Local es aquel Servidor Web que reside en una red local al equipo de
referencia. El Servidor web Local puede estar instalado en cualquiera de los equipos que
forman parte de una red local. Es por tanto obvio, que todos los Servidores Web, son
locales a la red local en la que se encuentran, o como mnimo, locales al sistema en el que
estn instalados.
Cuando un servidor Web se encuentra instalado en el mismo equipo desde el cual se desea
acceder puede utilizarse la direccin de Loopback, 127.0.0.1 en Ipv4 y ::1 en Ipv6. El puerto
TCP 80 se obvia. Los archivos se almacenan en un directorio determinado por la
configuracin, generalmente modificable.
Existen numerosas aplicaciones que facilitan la instalacin automtica de servidores web
Apache y aplicaciones adicionales como Mysql y PHP (entre otros), de forma conjunta,
como XAMPP, JAMP o EasyPHP. Estas aplicaciones reciben el nombre de LAMP cuando se
instalan en plataformas Linux, WAMP en sistemas Windows y MAMP en sistemas Apple
Macintosh.
El servidor HTTP Apache es un servidor web HTTP de cdigo abierto, para plataformas Unix
(BSD, GNU/Linux, etc.), Microsoft Windows, Macintosh y otras, que implementa el protocolo
HTTP/1.12 y la nocin de sitio virtual.
Su nombre se debe a que Behelendorf quera que tuviese la connotacin de algo que es
firme y enrgico pero no agresivo, y la tribu Apache fue la ltima en rendirse al que pronto
se convertira en gobierno de EEUU, y en esos momentos la preocupacin de su grupo era
que llegasen las empresas y "civilizasen" el paisaje que haban creado los primeros
ingenieros de internet.
El servidor Apache se desarrolla dentro del proyecto HTTP Server (httpd) de la Apache
Software Foundation.
Apache presenta entre otras caractersticas altamente configurables, bases de datos de
autenticacin y negociado de contenido, pero fue criticado por la falta de una interfaz
grfica que ayude en su configuracin.
Apache tiene amplia aceptacin en la red: desde 1996, Apache, es el servidor HTTP ms
usado. Alcanz su mxima cuota de mercado en 2005 siendo el servidor empleado en el
70% de los sitios web en el mundo, sin embargo ha sufrido un descenso en su cuota de
mercado en los ltimos aos.
VENTAJAS
>
Modular
>
Cdigo abierto
>
Multi-plataforma
>
Extensible
>
MODULOS APACHE
La arquitectura del servidor Apache es muy modular. El servidor consta de una seccin
core y diversos mdulos que aportan mucha de la funcionalidad que podra considerarse
bsica para un servidor web. Algunos de estos mdulos son:
>
>
>
>
>
>
>
USO
Apache es usado principalmente para enviar pginas web estticas y dinmicas en la World
Wide Web. Muchas aplicaciones web estn diseadas asumiendo como ambiente de
implantacin a Apache, o que utilizarn caractersticas propias de este servidor web.
Apache es el componente de servidor web en la popular plataforma de aplicaciones LAMP,
junto a MySQL y los lenguajes de programacin PHP/Perl/Python (y ahora tambin Ruby).
Este servidor web es redistribuido como parte de varios paquetes propietarios de
software, incluyendo la base de datos Oracle y el IBM WebSphere application server. Mac
OS X integra apache como parte de su propio servidor web y como soporte de su servidor
de aplicaciones WebObjects. Es soportado de alguna manera por Borland en las
herramientas de desarrollo Kylix y Delphi. Apache es incluido con Novell NetWare 6.5,
donde es el servidor web por defecto, y en muchas distribuciones Linux.
Apache es usado para muchas otras tareas donde el contenido necesita ser puesto a
disposicin en una forma segura y confiable. Un ejemplo es al momento de compartir
archivos desde una computadora personal hacia Internet. Un usuario que tiene Apache
instalado en su escritorio puede colocar arbitrariamente archivos en la raz de documentos
de Apache, desde donde pueden ser compartidos.
Este servicio convierte a una PC en un servidor web para Internet o una intranet, es decir
que en las computadoras que tienen este servicio instalado se pueden publicar pginas
web tanto local como remotamente.
Se basa en varios mdulos que le dan capacidad para procesar distintos tipos de pginas.
Por ejemplo, Microsoft incluye los de Active Server Pages (ASP) y ASP.NET. Tambin pueden
ser incluidos los de otros fabricantes, como PHP3 o Perl.
Una vez que se haya instalado los comandos que podemos utilizar para iniciar, reiniciar o
detener el servidor son los siguientes:
INICIAR SERVICIO APACHE
sudo service apache2 start
Timeout
Timeout define, en segundos, el tiempo que el servidor esperar para recibir y enviar
peticiones durante la comunicacin, tras los cuales el servidor cierra la conexin. Est
configurado por defecto a 300, lo cual es apropiado para la mayora de las situaciones.
Ejemplo:
Timeout 300
KeepAlive
Esta directiva se utiliza para indicar si se activarn las conexiones persistentes; es decir. el
poder hacer ms de una peticin por conexin.
Por ejemplo, supongamos que hacemos una peticin al servidor de una pgina web que
contiene tres imgenes, entonces tendremos que hacer 4 peticiones, una para la pgina y
una por cada imagen. El tener activadas las conexiones persistentes nos permite el poder
hacer todas las peticiones a travs de la misma conexin, y no tener que negociar nuevas
conexiones. La respuesta del servidor ser ms rpida y tendremos un mejor rendimiento.
KeepAliveTimeout
La directiva KeepAliveTimeout establece el nmero de segundos que el servidor esperar
a la siguiente peticin, tras haber dado servicio a una, antes de cerrar la conexin. Una vez
recibida la peticin, aplica la directiva Timeout en su lugar.
KeepAliveTimeout 15
Listen
Esta directiva permite especificar qu puerto se utilizar para atender las peticiones. Por
defecto se utiliza el puerto 80 (www). Sintaxis: Listen [direccin ip:] Numero de puerto.
Ejemplo:
Para hacer que el servidor acepte conexiones en los puertos 80 y 8080
Listen 80
Listen 8080
Listen 192.168.255.8:8080
MaxClients
Permite especificar la cantidad mxima de clientes conectados simultneamente al
servidor. Por defecto es 150. Ejemplo:
MaxClients 200
ServerAdmin
Especifica la direccin de correo electrnico del administrador. Esta direccin aparece en
los mensajes de error, para permitir al usuario notificar un error al administrador.
ServerAdmin admin@sitioweb.com
ServerName
Especifica el nombre y el puerto que el servidor utiliza para identificarse, normalmente se
determina automticamente, pero es recomendable especificarlo explcitamente para que
no haya problemas al iniciar el servidor. Si el servidor no tiene un nombre registrado en
las DNS, se recomienda poner su nmero IP. La sintaxis es: ServerName direccionIP:Puerto
Ejemplo:
ServerName localhost:80
DocumentRoot
La carpeta raz que se ubica en el servidor, desde la que se servirn los documentos. Por
defecto, todas las peticiones tendrn como raz esta carpeta. Esta es la carpeta donde
colocaremos las pginas que queramos publicar.
Si se cambia este directorio por otro, es muy importante que se ponga el nuevo valor, no
slo en esta lnea, sino tambin en la seccin de la directiva Directory en la que se
establecen los parmetros de configuracin de este directorio. Ejemplo:
/var/www/html
DirectoryIndex
Especifica el fichero por defecto que buscar en cada directorio en caso de que no se
especifique ninguno. Por defecto es index.html. Es decir, que si por ejemplo se pone en el
navegador www.misitio.com el servidor por defecto servir www.misitio.com/index.html
AccessFileName
Es el nombre del fichero de configuracin de acceso limitado que se buscar en cada una
de los directorios del servidor para conocer la configuracin del mismo. Este fichero
permite configurar el comportamiento de cada uno de los directorios individualmente.
Para que esta configuracin funcione, la directiva AllowOverride tiene que tener un valor
que lo permita. El nombre de fichero que se especifica por defecto es el del fichero
.htaccess
Como medida de seguridad, la configuracin de Apache establece que no se muestre la
existencia de este fichero a ningn usuario, aunque est establecida la opcin de listado
de directorios.
TypesConfig
Especifica el nombre del fichero que contiene la lista de tipos MIME que conoce el servidor,
y que determinar dependiendo de las extensiones para generar las cabeceras http. No
puede estar dentro de ninguna seccin.
DefaultType
Tipo MIME que se servir por defecto en caso de no conocer la extensin del fichero que
se est sirviendo. Por defecto, se indicar que se sirve texto plano, con el valor text/plain.
La directiva se puede encontrar fuera de cualquier seccin, dentro de una seccin o dentro
de un fichero .htaccess. Sintaxis: DefaultType tipoMime
HostnameLookups
Se utiliza en los ficheros de registro. Por defecto, cuando se produce un acceso se guarda
simplemente su nmero IP. Si esta directiva se encuentra en On, el servidor buscar la
correspondencia de ese nmero IP con su nombre y lo almacenar.
IndexOptions
Directiva usada para optar por el sistema de visualizacin de los directorios con Apache.
Puede ser normal o indexado. La configuracin clsica es:
IndexOptions FancyIndexing
Varias Direcciones IP
<VirtualHost 192.168.1.110 192.168.1.106>
#directivas correspondientes a este host virtual
</VirtualHost>
Host virtual
El trmino Hosting Virtual se refiere a hacer funcionar ms de un sitio web (tales como
www.empresa1.com y www.empresa2.com) en una sola mquina. Los sitios web virtuales
pueden estar "basados en direcciones IP", lo que significa que cada sitio web tiene una
direccin IP diferente, o "basados en nombres diferentes", lo que significa que con una
sola direccin IP estn funcionando sitios web con diferentes nombres (de dominio).
Paso 1. Crear la estructura de directorios
Lo primero que vamos a hacer es crear la estructura de directorios para cada host virtual
que se va a crear.
De forma prededinida el directorio donde apache almacena las pginas que sirve se
encuentra en /var/www, vamos a crear en dicha ubicacin una carpeta para cada host
sudo mkdir -p /var/www/example.com/public_html
La variable $USER tomar el valor del usuario al que le queramos dar privilegios sobre la
carpeta.
Para asegurarnos que el servidor muestre las paginas correctamente y los usuarios
puedan crear y subir archivos vamos a modificar los permisos de la carpeta www y los
colocaremos de esta forma:
Hasta aqu ya hemos configurado los permisos del servidor para que sirva el contenido de
forma correcta y los usuarios deberan poder crear el contenido que sea necesario.
Paso 3. Crear una pgina de inicio
Vamos a crear una pequea pgina de prueba para verificar que nuestro host virtual
trabaja de forma correcta.
nano /var/www/example.com/public_html/index.html
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Como podemos apreciar no es mucha informacin la que se debe configurar. Vamos a
proceder a configurar el archivo con la informacin de nuestro dominio.
Comenzamos con la directiva ServerAdmin donde colocaremos un email referente a
nuestro sitio.
ServerAdmin webmaster@example.com
Despues necesitamos agregar dos directivas, la primera llamada ServerName que
establece el directorio base del dominio, la segunda llamada ServerAlias que define los
nombres que deberas responder como si fueran el directorio base del dominio,
generalmente colocamos www
ServerName example.com
ServerAlias www.example.com
Ahora solo nos falta cambiar indicar cul es el directorio desde donde va a servir las
pginas
DocumentRoot /var/www/example.com/public_html
El archivo al final se debe de ver as:
<VirtualHost *:80>
ServerAdmin webmaster@example.com
ServerName example.com
ServerAlias www.example.com
DocumentRoot /var/www/example.com/public_html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Guardamos y cerramos el archivo.
Ahora tenemos que reiniciar nuestro servidor para que los cambios se apliquen
sudo service apache2 restart
El archivo se debe de ver como el ejemplo siguiente, lo que tenemos que hacer es agregar
la ip de nuestro servidor y el dominio correspondiente
127.0.0.1 localhost
127.0.1.1 guest-desktop
127.0.0.1 example.com
Guardamos y cerramos el archivo
Paso 7. Probar el dominio
Ahora solo tenemos que abrir nuestro navegador y comprobar que todo funcione
correctamente, para ello escribimos en la barra de direcciones el dominio de nuestra
pagina.
http://example.com
Y debera mostrarnos lo siguiente:
Un archivo .htaccess (hypertext access) es un archivo en formato ASCII que permite definir
diferentes directivas de configuracin para cada directorio (con sus respectivos
subdirectorios) sin necesidad de editar el archivo de configuracin principal de Apache.
Los archivos .htaccess son usados frecuentemente para especificar restricciones de
seguridad para un directorio en particular. Los servidores suelen usar el .htaccess para
reescribir URLs largas y complejas, en otras ms simples y fcilmente recordables,
permiten bloquear a usuarios por su direccin IP y/o dominio, bloquear bots y araas web.
Tambin permite controlar las pginas de errores cuando estos ocurren del lado del
servidor.
Esto resultara muy til cuando queremos proteger archivos crticos, como los archivos de
configuracin. Un ejemplo de esto podra ser:
<files archivo-configuracion.php>
order allow,deny
deny from all
</files>
O incluso podramos proteger el mismo archivo .htaccess
<files .htaccess>
Order allow,deny
Deny from all
</files>
Los servidores Web devuelven pginas que muestran un error especfico, en caso de que
este se haya producido; como por ejemplo el 404 Pgina no encontrada
Errores
404 Pagina no encontrada
401 Authorization Required
403 Forbidden
500 Internal Server Error
Podramos implementar pginas de errores acorde a nuestros sitios de la siguiente forma
ErrorDocument 401 /error/authreqd.html
ErrorDocument 403 /error/forbid.html
ErrorDocument 404 /error/notfound.html
ErrorDocument 500 /error/errorserver.html
Ahora solo tendramos que crear las pginas personalizadas correspondientes.
Redireccionar una pgina web a otra URL, como dominio.net redirigido a dominio.com:
Redirect 301 / http://dominio.com/
Para eliminar una extensin de la URL tenemos que trabajar con el modulo Rewrite de
Apache que se encarga de reescribir una URL.
Para que esto funcione debe estar activado el mdulo rewrite, lo podemos activar con el
siguiente comando.
a2enmod rewrite