Curso XHTML/HTML/HTML5 Curso XHTML/HTML/HTML5
Servidores Web y FTP
Desde el inicio del curso hemos estado creando documentos HTML en las máquinas locales. Introduciremos ahora el concepto de los Servidores Web, su utilización y nos prepararemos para servir nuestros documentos HTML a través de los mismos.
Servicio: Básicamente un servicio es un programa que es cargado automáticamente por el Sistema Operativo Windows y normalmente corre en segundo plano (background). En plataformas Unix/Linux se conocen normalmente como daemon o demonio.
Servir: del latín, servitium, define la acción y efecto de servir (estar sujeto a alguien por cualquier motivo haciendo lo que el quiere o dispone). Por tanto un servidor es quien está sujeto a las solicitudes para proveer lo que se le pide. Es quien provee un servicio.
En Internet existen numerosos servicios disponibles. Algunos ejemplos son: La Web. Email. IRC. Telnet. SSH. P2P. FTP.
En particular, un servidor Web es un programa (servicio) que corre en una máquina. Este programa, cuando se encuentra corriendo, escucha permanentemente por solicitudes entrantes. El programa escucha en uno o varios puertos seleccionados.
Estas solicitudes, de parte de los usuarios o clientes, son pedidos de recursos. Los pedidos son solicitudes HTTP. Los recursos solicitados son archivos, generalmente HTML.
Los recursos se solicitan a través de una URL. Las solicitudes están formadas por un conjunto de cabeceras HTTP, al igual que las respuestas. Por defecto, el puerto de escucha de un servicio Web es el 80.
Diagrama de Ejemplo:
El trabajo de un servidor Web tradicional por tanto utiliza un modelo de comunicación Cliente/Servidor. El servidor Web envía una respuesta al cliente utilizando, en una parte de las mismas, un código numérico.
Algunos códigos de respuesta: 200: OK 403: FORBIDDEN 404: NOT FOUND 500: INTERNAL ERROR
Un servidor Web puede servir varios tipos de recursos al cliente. Generalmente, son archivos HTML. Además, sirven todos los demás recursos que un documento HTML utiliza como archivos JS, CSS, imágenes, etc.
Cuál es la diferencia entre abrir un archivo HTML en forma local que a través de un Servidor Web?
Un archivo HTML en forma local solo puede ser visto por dicha máquina. Un archivo HTML, a través de un servidor Web, puede ser visto en forma simultanea por varios clientes a través de la red.
El acceso al archivo se realiza mediante el URL del mismo, ya sea este una dirección DNS o un IP seguido del nombre del recurso.
Un servidor Web puede ser instalado sin acceso a Internet. Incluso sin una red local. Un servidor Web instalado en una máquina sin red nos permite probar nuestros documentos como si fueran que estén en una red.
Si abrimos un archivo en forma local en un navegador, de cualquier extensión, sin utilizar un navegador veremos en la dirección algo similar a:
En cambio, utilizando un servidor Web, en forma local o remota, al abrir un archivo veremos en la barra de direcciones algo como:
Esto implica que podemos abrir todos los archivos de nuestro equipo si tenemos un servidor Web instalado? En una red, permitiría a cualquier usuario abrir cualquier documento de nuestra máquina? Podría cualquiera abrir nuestros documentos y editarlos en nuestra máquina?
Esto implica que podemos abrir todos los archivos de nuestro equipo si tenemos un servidor Web instalado? Primero: Es posible que los usuarios accedan a todos nuestros archivos si utilizamos una configuración poco segura. Sin embargo, con un poco de sentido común algo así no ocurre.
A la hora de utilizar un servidor Web se seleccionan carpetas (directorios) desde las cuales se proveen los recursos. Solo los recursos (archivos) dentro de esas carpetas (directorios) y subcarpetas (subdirectorios) se sirven a través del servidor.
Por tanto el servidor conoce solo los recursos que se encuentran las carpetas compartidas. Normalmente la carpeta compartida por un servidor Web se conoce como ServerRoot. Como dice el nombre, es la raíz.
Como ejemplo: Supongamos tenemos un servidor Web con el ServerRoot en c:\www (Win). Dentro del mismo un archivo de nombre inde2x.html. Accedemos al mismo en la máquina asi:
Podemos acceder al mismo archivo desde otra máquina de la misma manera?
NO. La dirección localhost se refiere a la máquina propia. Por tanto, otra máquina, desde la red local que utilice esa dirección buscará el archivo inde2x.html en su propio ServerRoot, no en otra máquina. Si la máquina no tiene un servidor Web y escribe la dirección anterior, Qué ocurre?
Para acceder al archivo desde otra máquina de la red local debemos utilizar el IP del servidor o un nombre que pueda ser resulto por un servidor DNS o un nombre que podamos traducir a una dirección IP mediante un archivo de configuración local, como el archivos hosts.
Un Servidor DNS es un servicio de nombres, que permite mapear direcciones alfanuméricas a direcciones IP. www.uca.edu.py es un ejemplo de un nombre DNS. Al solicitar este recurso desde nuestro navegador, se hace una solicitud a un servidor DNS que nos devuelve la dirección IP correspondiente.
También podemos, en forma local, asignar nombres a direcciones IP utilizando configuraciones inherentes únicamente a nuestra máquina.
Para esto utilizamos el archivo hosts. Un archivo de configuración del SO. Al solicitar un recurso con un nombre, se busca el mismo primero en este archivo. En caso que se encuentre, se utiliza el IP asignado correspondiente.
El archivo hosts en una SO Linux se encuentra en: /etc En Windows XP se encuentra en: C:\Windows\System32\drivers\etc
Ejemplo (en Win):
Para poder acceder a un archivo desde Internet, evidentemente, necesitaremos tener una llamada IP Pública, la cual es una dirección IP única en el mundo. No podemos acceder desde Internet a una IP del tipo 192.168.0.x debido a que la misma es una IP privada.
Las IP privadas solo pueden ser accedidas desde una intranet, ya que no pueden ser ubicadas desde Internet.
Es posible utilizar servidores DNS en intranets. Facilita acceder a recursos de la red ya que es más fácil recordar el nombre del recurso impresora que digamos 192.168.0.25
En una red, permitiría a cualquier usuario abrir cualquier documento de nuestra máquina? Cualquier documento que se encuentre en el ServerRoot o inferior se puede acceder mediante el nombre del mismo.
Por tanto, no deberíamos instalar un servidor Web y configurarlo con el ServerRoot con el valor c:\ ya que nos permitiría acceder a todos los archivos de dicha unidad.
Recordemos que el abrir un recurso en el navegador, realmente se está haciendo una copia de todo ese recurso en la máquina local (la máquina en la que está corriendo el navegador).
Por tanto, tener un archivo passwords.txt en una carpeta a la que pueda acceder un servidor Web implica que el cliente, al abrir dicho recurso, no solo lo despliega en el navegador sino además guarda una copia del archivo completo en su caché.
Además, con el correspondiente helper o plug-in en el navegador, podemos no solo bajar los archivos a nuestras máquinas sino abrirlos directamente desde los navegadores.
Podría cualquiera abrir nuestros documentos y editarlos en nuestra máquina? Como dijimos anteriormente, los archivos abiertos en un navegador se copian en forma local.
El cliente podrá abrir los archivos y editarlos sin problemas. Sin embargo, las ediciones se harán en su máquina local. En otras palabras, no podrán reemplazar o reescribir los archivos en el servidor mediante el acceso al servidor Web.
Un servidor Web además provee: Manejo de autenticación. Restricciones de Acceso. Acceso concurrente a los recursos. Logs o bitácoras. Manejo de errores.
Algunos de los servidores Web más populares son: Apache IIS Cherokee Lighttpd Thttpd
FTP
FTP File Transfer Protocol Es un protocolo para transferencias de archivos. De la misma manera que un servidor Web, debemos tener instalado un servidor FTP.
FTP Nos conectamos al mismo mediante un cliente FTP. Esto nos permite subir, bajar, modificar archivos. Es un protocolo sencillo, provee velocidad pero no seguridad.
FTP Sus comandos se envían y reciben en texto plano. Podemos usar una terminal telnet para conectarnos a cualquier ftp y dialogar con el mismo escribiendo los comandos desde el teclado.
FTP Utiliza los puertos, por defecto, 20 y 21. El puerto 21 es la conexión de control, a través del cual se envían los comandos. El puerto 20, la conexión de datos, se usa para la transferencia de archivos propiamente dicha.
FTP FTP tiene conexiones bidireccionales. Es un modelo de conexión cliente/servidor. Permite transferir archivos a través del protocolo de diferentes máquinas con diferentes SO o diferentes sistemas de archivos.
FTP En caso de necesitarse transferencia segura de archivos FTP no es recomendado. Para esto se deben utilizar otros protocolos más seguros como sftp o scp.
FTP FTP es un protocolo antiguo pero aun vigente, utiliza para subir gran cantidad de archivos, como los archivos que forman un sitio Web, al lugar donde estos se alojarán y servirán a sus usuarios.
FTP El acceso FTP puede realizar en forma anónima, sin requerir usuario y contraseña. O mediante el uso de las mismas.
FTP Para acceder, como cliente, a un servidor FTP podemos usar aplicaciones stand-alone o utilizar plug-in o agregados.
FTP Por ejemplo, Windows viene con su propio cliente FTP. Basta con abrir cualquier ventana el explorador (de archivos) de Windows y escribir la dirección:
FTP Además, la mayoría de los navegadores vienen con su propio cliente FTP incorporado: Notar el uso de ftp:// al comienzo y no http://
FTP Contenido de un servidor FTP visto desde Mozilla (predeterminado):
FTP Si bien podemos navegar por los archivos de esta manera, para poder tener todas las facilidades de subida y bajada de archivos se recomienda utilizar aplicaciones standalone o agregados a navegadores con más opciones.
FTP Ejemplo: CoreFTPLite
FTP Además existen clientes FTP que pueden funcionar como agregados sobre los navegador. Por ejemplo agregados para Mozilla:
FTP Por ejemplo, si instalamos el agregado FireFTP a Mozilla:
FTP Muchas veces es más fácil instalador un agregado a un navegador que una aplicación stand-alone en varias situaciones. Por ejemplo, quizás no tengamos permisos de instalación de programas en los Laboratorios de la Facultad. Sin embargo ( quizás!) no tengamos problemas de permisos para instalar agregados en Mozilla.
FTP Una vez instalado nuestro agregado a Mozilla accedemos a él:
FTP Una vista de ejemplo de FireFTP:
FTP Nueva conexión en el FireFTP:
FTP FireFTP:
Consideraciones Finales Un servidor Web aloja los documentos HTML y demás recursos para el acceso a los mismos por parte de los clientes. Un servidor FTP permite la transferencia de archivos entre clientes y servidores.
Ejercicios
Ejercicio 1 - Web y Ftp Deben instalar un cliente FTP o utilizar uno instalado. Utilizar los parámetros de conexión provistos en clase. Conectarse al servidor FTP para subir sus archivos. Colocar un archivo index.html en una carpeta principal cuyo nombre sea la primera letra de su nombre + apellido. Probar la ejecución de sus archivos en forma local primero y comparar los resultados con la ejecución de los archivos en el servidor Web.
Ejercicio 2 - Sitio Seguir las instrucciones en clase para crear un sitio Web con un tema a definir en clase. Utilizar una estructura homogénea y seguir las instrucciones definidas en forma grupal en clase. Utilizar la estructura de archivos definidas en clase. Al finalizar, subir al servidor Web mediante Ftp y probar la ejecución del mismo en Internet.
Fuentes
Fuentes http://reference.sitepoint.com/ http://www.w3schools.com/ Sitio Oficial VirtualBox Sitio Oficial Ubuntu Sitio Oficial Apache Sitio Oficial Mozilla Otros sitios de Internet
Autores Lic. Omar Esgaib omar_esgaib@uca.edu.py Ing. Mauricio Merin