Últimas entradas »

Con el httpd.conf ya visto para sentencia pasamos a crear los hosts virtuales propiamente dichos. Sobre los hosts hemos hablando en el post anterior llamado “Los hosts y las DNS”.

Con los hosts virtuales lo que pretendemos es que el Apache tome conciencia de que tiene alojados en él diversos sitios web a los que accederemos mediante su nombre de dominio.

Cuando pedimos una página web desde nuestro navegador tecleando su URL en la barra de direcciones, lo primero que ocurre es que el navegador contacta con nuestro sistema operativo y le pregunta si sabe a qué IP corresponde el nombre introducido. Todos los sistemas operativos contienen una lista de hosts con la dirección IP y el nombre del dominio y normalmente sólo tienen la dirección 127.0.0.1, llamada de loopback, y de dominio tienen localhost (es decir, la misma máquina desde la que estás). A ella podemos agregarle las que queramos pero normalmente sería una tontería tener que introducir la dirección y nombre de cada web que queramos visitar. Es mucho más cómodo el sistema DNS para dichos menesteres.

Todas las interfaces de red (tu tarjeta de red o tarjeta wi-fi integrada en el portátil con la que te conectas a tu router) tienen parámetros configurables. A menudo las vemos en “Automático”. Esto significa que mediante unos protocolos integrados en el sistema operativo la tarjeta y el router se comunican y normalmente el router establece qué dirección ip tiene dicha tarjeta, a qué servidores de  DNS se conectará para resolver nombres de dominio, etc…

Ahora viene el problema que nos afecta: Imagínate que en internet ya existe www.misuperweb.com. Puede ser tuya o no, pero tú quieres usar ese nombre para las pruebas en tu pc. Los servidores de DNS de internet saben que dicho nombre apunta a la dirección IP del servidor donde está alojada dicha página, que evidentemente no es tu ordenador de casa. Entonces si tu tecleas www.misuperweb.com te carga la de internet y no la tuya.

Esto lo solucionamos mediante los hosts virtuales. Le vamos a decir a nuestro Apache que esa web la tiene el y nos la debe servir. Pero para que nuestro sistema operativo la busque en nuestra máquina primero y no en internet podemos hacer dos cosas:

  • Montarnos un servidor de DNS propio y decirle que resuelva a localhost todas las peticiones que hagamos a nuestros sitios (esto lo haremos si tenemos una LAN en la casa/oficina y el Apache está en otra máquina distinta a aquella desde la cual intentamos acceder). Esto requiere además modificar en el sistema operativo las opciones del DNS para nuestra tarjeta de red, e indicarle que las DNS no serán automáticas, sino que deberá conectar a la máquina de la red en la que hayamos montado el servidor de DNS.
  • Modificar el archivo hosts, que es lo que vamos a hacer. En Windows7 lo tenemos en C:\Windows\System32\drivers\etc y se llama hosts. Lo puedes abrir con el Notepad++. Para modificarlo deberás abrirlo como administrador ya que está en una ruta protegida del sistema operativo. Esto nos permitirá configurarlo de manera que cuando alguien le pida por misuperweb.com él sepa que está en nuestra máquina (que es donde está el Apache) y así no se irá a buscarla en internet mediante DNS.

Añadiremos a dicho archivo al final en una nueva línea 127.0.0.1 misuperweb.com y guardamos. Repetiremos el proceso para todos los dominios que queramos añadir. La IP siempre será la misma (127.0.0.1). Para que los cambios surjan efecto es necesario reiniciar el Windows.

Muy bien, ahora nuestro sistema ya sabe que no tiene que usar las DNS y que cuando le pregunten desde un navegador por misuperweb.com tiene que preguntarse a sí mismo (que es donde está el Apache escuchando gracias al Listen80 que vimos en el anterior artículo).

Los hosts virtuales se configuran en C:\xampp\apache\conf\extra y el fichero se llama httpd-vhosts.conf.¡ Vamos a por ellos!

  • El primer paso es crear una carpeta en el disco donde alojaremos nuestros hosts virtuales. Para evitar problemas la crearé en la raíz del disco duro y la llamaré vHosts (C:\vHosts). Dentro de ella habrá una carpeta para cada host virtual (c:\vHosts\misuperweb\)
  • El segundo paso es configurar el httpd-vhosts.conf.

Al principio del fichero, en cualquier espacio en blanco, añade lo siguiente para configurar los permisos de la carpeta:

<Directory C:/vHosts>

Order Deny,Allow

Allow from all

</Directory>

Descomenta en caso de que sea necesario la línea que pone NameVirtualHost *.80

Ahora, al final del documento añade las siguientes líneas:

<VirtualHost *:80>

ServerAdmin tu@email.com

DocumentRoot “C:/xampp/htdocs”

ServerName localhost

ErrorLog “logs/localhost.log”

CustomLog “logs/localhost.log” combined

</VirtualHost>

<VirtualHost *:80>

ServerAdmin tu_otro@email.com

DocumentRoot “C:/vHosts/misuperweb”

ServerName misuperweb.com

ErrorLog “logs/misuperweb.log”

CustomLog “logs/misuperweb.log” combined

</VirtualHost>

En el primer VirtualHost hemos definido los datos para localhost. Ten en cuenta que si alguien solicita al Apache una web que no consta en la lista como host virtual éste le devolverá el predeterminado  (localhost en este ejemplo). En el segundo los propios para misuperweb.

Sólo son obligatorios el DocumentRoot y el ServerName.

Guarda el fichero.

En caso de tener otro dominio crearíamos otra <VirtualHost *:80> con todos los datos, y añadiríamos al fichero hosts del Windows los datos correspondientes (o añadiríamos el registro DNS para el nuevo host si estamos empleando servidor propio de DNS).

Desde el icono del xampp que aparece en la bandeja del Windows (donde el reloj y demás iconos) abrimos el gestor del xampp y detenemos el servidor Apache haciendo clic en su correspondiente botón. Pasados unos segundos hacemos clic en Start.

Y ahora la prueba de fuego:

En nuestro navegador, si introducimos como dirección localhost nos aparecerá la ventana principal del xampp (como era previsible, todo OK) y si tecleamos misuperweb.com nos abrirá nuestro proyecto satisfactoriamente.

Y con ello finalizamos nuestra breve serie de artículos.

Cualquier comentario constructivo, duda, etcétera será bien recibida J

Inspirado en http://foundationphp.com/tutorials/apache22_vhosts.php

Configurar el Apache

Voy a asumir que has instalado el xampp en “c:\xampp”. Si lo has hecho en otro lugar, (C:\Archivos de Programa(x86)\ por ejemplo) deberás realizar las modificaciones oportunas.

Para editar este fichero te recomiendo usar el programa llamado Notepad++ y emplear su función Buscar.

El fichero de configuración del Apache está en c:\xampp\apache\conf y se llama httpd.conf

Si alguna vez te piden tocar algo del fichero de configuración del php, que sepas que está en C:\xampp\php y se llama php.ini.

Las webs se guardan por defecto en C:\xampp\htdocs. Cuando instalas el xampp te abre el index.php que está ahí (y dicho index.php lo que hace es hacer una comprobación y si todo está correcto te manda al index.php que hay dentro de la carpeta C:\xampp\htdocs\xampp). Atento que el htdocs que tienes dentro de c:\xampp\apache NO es el que se usa.

Vamos a analizar los aspectos más propensos a ser modificados del httpd.conf anteriormente mencionado.

En primer lugar, todo lo que veas con la almohadilla (#) delante es un comentario y el Apache lo ignorará. Esto se usa para no tener que borrar nada que en un futuro puedas necesitar.

El ServerRoot es el lugar (carpeta, directorio) donde está ubicado el servidor Apache. Yo tengo “C:/xampp/apache”. Presta mucha atención a las barras, que son las tipo unix (/) y no las tipo Windows(\). Las comillas se ponen por si la ruta tiene espacios en blanco. En mi caso no los tiene, pero las dejo que no molestan.

Listen 80. El Listen determina a qué peticiones responderá el servidor web, dependiendo de su origen. En este caso, devolverá una página web a cualquiera que se la pida, venga desde la IP que venga, siempre y cuando lo haga por el puerto 80. Asegúrate de que no está comentado (que no tiene la almohadilla).

ServerAdmin indica la dirección email del administrador del servidor. Es la típica que aparece cuando intentas acceder a una página y ocurre algún problema (“manda un correo al administrador del sitio haciendo clic aquí”). Pues esta es la dirección de correo en cuestión. Pon la que consideres oportuna. Si es real, mejor para tus usuarios.

ServerName localhost:80. Por convención, déjalo así. Es el nombre y el puerto con el que el servidor se identifica a sí mismo.

Al lugar donde se guardan las webs se le llama DocumentRoot y es configurable. Aquí puedes poner tu ruta en caso de que no esté correcta “C:/xampp/htdocs”

La etiqueta  <Directory> es importante. Cada uno de los directorios (y subdirectorios) a los que Apache puede acceder puede configurarse para determinar qué servicios y características están permitidos y/o deshabilitados en dicho directorio (y correspondientes subdirectorios).

La primera que aparece es la predeterminada que establece un conjunto de características muy restrictivo, y a partir de ahí si queremos un servicio o una característica menos restrictiva que la predeterminada debemos activarla manualmente. Por ejemplo en el segundo <Directory> debemos indicar la ruta de nuestro DocumentRoot para permitirnos acceder a él. Quedaría así <Directory “C:/xampp/htdocs”>. Las opciones hasta el </Directory> no hace falta tocarlas. Atentos otra vez a las barras que son las normales (/), no las invertidas (\).

La opción DirectoryIndex establece qué archivo servirá el Apache si se solicita un directorio. Por ejemplo, si en el navegador introducimos http://www.misuperweb.com ¿qué fichero cargará, el index.php, el index.html, el index.asp…? Pues el que coincida con el primero de la lista. Van en orden, el cual puedes alterar para que se ajuste a tus necesidades. A mí ya me va bien tal cual como está así que no tocaré nada.

El ErrorLog permite indicar el fichero donde se almacenarán los errores del Apache. Yo de ti me crearía un acceso directo en el escritorio a dicho fichero, ya que necesitarás consultarlo cuando tengas según qué errores y es un complemento al debugger.

Asegúrate de que en la sección #Virtual Hosts la línea siguiente aparece sin comentar ya que es necesaria para la gestión de los hosts virtuales que haremos más adelante. Queda tal que así: Include “conf/extra/httpd-vhosts.conf”

Con esto doy por concluido el vistazo al httpd.conf. Acuérdate de guardar antes de cerrar el fichero.

Sobre modificar el php.ini no comento nada ya que sólo tuve que hacerlo para activar el xdebug (un debugger que uso en el netbeans).

Los hosts y las DNS

Necesitamos un poquito de teoría para comprender algunos pasos que daremos en los siguientes artículos. ¡Te sugiero que te tomes un café bien cargadito antes de empezar!

Los hosts o anfitriones son las máquinas que están conectadas a una red y que proveen y utilizan servicios de ella (¡Wikipedia dixit!).

A un host se le identifica por su dirección IP, y entre otros métodos también por su nombre netbios, o más modernamente, por su nombre de registro en el DNS.

El DNS es el Sistema de Nombres de Dominio que nos permite traducir a un nombre fácil de recordar la dirección IP que tiene nuestra máquina en la red, y se emplea sobre todo si queremos instalar un servidor de lo que sea en ella (como va a ser nuestro caso). Veamos un ejemplo: el nombre que queremos que la gente teclee en su navegador para llegar a nuestra página es:

www.misuperweb.com

Vamos a analizar dicho nombre:

misuperweb.com es el nombre del dominio. Un dominio es el conjunto formado por una o varias máquinas en una red. Atención que los dominios en redes pueden catalogarse como locales (todos los ordenadores de dentro de nuestra empresa si esta es bastante grande, que forman dominios y subdominios, y además pueden estar conectados a internet) o el dominio global por excelencia que es internet.

  • com es el dominio de nivel superior
  • misuperweb es una subdivisión de com, y representa el dominio de segundo nivel.
  • www es un subdominio (conocido también como de tercer nivel o CNAME).

 

Junto con la información del nombre se guardan también diversos registros, que son los que proporcionan la funcionalidad necesaria.

  • El registro A (A Record) son los que permiten enlazar un dominio o subdominio a una dirección IP concreta. Dicho simple: cuando te pregunten por www.misuperweb.com resolverás que está en la IP 80.25.123.210 (inventada)
  • Los registros NS son los que determinan que servidores comunicarán la información DNS para un dominio. Se pueden definir dos.

Normalmente cuando compramos un nombre de dominio en un agente registrador (es decir, pagamos para que misuperweb.com sea nuestra y sólo nuestra entre todas las personas del planeta) apuntan a sus servidores de DNS. Si queremos, podemos cambiarlos y que sean otros servidores de la competencia los que hagan la operación de responder la IP del host cuando alguien le pregunte por nuestra misuperweb.com. Los motivos para hacer dichos cambios normalmente suele ser la velocidad en resolver las DNS (cuantos menos milisegundos tarde, más rápido llegará el usuario hasta el servidor donde tenemos nuestra web), mal servicio (se caen frecuentemente los servidores de la empresa donde registramos los dominios y la gente que intenta entrar a nuestra web recibe un mensaje de error), etc…

Si quieres saber más sobre el tema, como por ejemplo descubrir los registros MX que se emplean para asuntos relacionados con el email, puedes leerte este artículo en inglés de la gente de Google https://support.google.com/a/bin/answer.py?hl=en&answer=48090

 

Sabiendo todo esto ya podemos pasar a la siguiente parte:

Nos encontramos con el siguiente supuesto escenario:

Queremos dedicarnos a hacer páginas y/o aplicaciones web, y queremos hacer que funcionen en nuestra propia máquina para evitar tener que estar subiendo los archivos al servidor todo el rato. Además, queremos poner el nombre del sitio en nuestro navegador y que funcione; y que incluso si ya existe en internet ese sitio, a nosotros nos cargue el que estamos haciendo nosotros y tenemos en nuestro pc,  y no el existente.

Sabemos que necesitamos instalar un servidor web. Hay muchos, algunos propietarios, otros libres, pero yo recomiendo el Apache.

Lo más probable es que vayamos a necesitar una solución más global y que vaya más allá del mencionado servidor web, como por ejemplo que además de servir páginas estáticas soporte algunos lenguajes de scripting como el PHP; y disponga de un servidor de bases de datos MySQL. Esta infraestructura es llamada WAMP (Windows, Apache, MySQL, PHP). Evidentemente para los sistemas operativos Linux se les llama LAMP y para los MacOsX ¿adivinas? MAMP.

Bueno, pues hay gente que hace “packs” con todo ello. Por ejemplo, uno llamado” xampp” que es el que me sirve ejemplarmente cada día.

El xampp, además del servidor web Apache llamado httpd incluye otro software bastante interesante, destacando:

  • El servidor de bases de datos MySQL
  • Un gestor web para dichas bases de datos (phpMyAdmin)
  • Dos servidores de correo electrónico para mandar nuestros emails y spamear al mundo (MercuryMail/sendmail)
  • El servidor y el cliente de FTP Filezilla que permite enviar y recibir los archivos que forman los sitios web, etc…

Evidentemente, todo el software pertenece a la familia de Software libre por lo que no vamos a tener ninguna clase de problema legal.

El xampp se consigue en http://www.apachefriends.org/es/xampp.html

No vamos a cubrir la instalación (a no ser que lo pidáis en los comentarios), ya que es la típica “siguiente/siguiente/siguiente”, lo único es que debemos ejecutar la instalación como administrador, y recomendamos instalar el Apache y el MySQL como servicios. Por cierto, para evitar problemas con permisos en Windows, te sugiero que lo instales en c:\xampp

En la siguiente serie de artículos voy a explicar cómo conseguir y configurar el software para Windows necesario para poder visualizar correctamente las páginas webs que nosotros mismos haremos. Los he dividido de la siguiente manera:

  • Introducción:¡LAMP,WAMP,MAMP,XAMPP!(así, para empezar)
  • Los hosts y las DNS:
  • Configurar el Apache:
  • Configurar hosts virtuales en Apache 2.2 bajo Windows

¡Coger las palomitas que empieza la función!

El otro día, jugando al Half-life 2, episodio 2 vi una habitación algo extraña tras un depósito del silo… (clic sobre las imágenes para agrandar)

La sala inicial

Me acerco un poco más hasta la rendija y se ve  en la pared de la derecha el logo de Black Forest (3 árboles), pero la parte inferior de dicho logo me recordaba a algo que ya había visto (no se aprecia muy bien en esta captura). Además se ve un sospechoso terminal…

Y… ¡¡¡SOCORROOO!!!

¡¡¡Los números!!!¡¡¡LOS NÚMEROS ESTÁN MALDITOS!!!

(Para los que no lo capten, son los números de Lost en un guiño de los desarrolladores del juego hacia dicha serie)

Seguir

Get every new post delivered to your Inbox.