Archive for December, 2008

Uso de “Virtual Hosts” en Mac OS X 10.5

Cuando se desarrollan sitios web es práctica normal guardar todo el desarrollo en una carpeta, la cual puede ser accedida de distintas maneras usando el servidor web incluido en el sistema (Apache).

La ubicación por omisión puede ser un poco problemática para trabajar, ya que solo un usuario con privilegios de administrador puede hacer modificaciones ahí (aunque ese tipo de usuario es el primero que se crea cuando se instala el sistema); un punto a favor de esa carpeta es que para accederla a través del servidor web su dirección es corta: http://localhost/proyecto1

Pero a veces el usuario del equipo no necesariamente es administrador del mismo (y aunque lo sea, es una buena medida de seguridad trabajar como un usuario sin privilegios), por lo que hacer modificaciones a la carpeta por omisión del servidor web no es posible; en esos casos es necesario utilizar la carpeta “Sites” (o “Web”) de cada usuario para guardar el proyecto en desarrollo. La dirección para acceder a la carpeta es un poco más larga: http://localhost/~usuario/proyecto1

Existe una tercera opción todavía más corta y adecuada si, por alguna razón el sitio en desarrollo debe estar en un primer nivel, sin directorios intermedios; algo como: http://proyecto1

Para lograr algo así es necesario utilizar una opción del Apache llamada “Virtual Hosts“, lo que le permite al servidor web responder a distintos nombres (y por lo tanto hospedar distintos sitios) en una misma dirección. De esta manera la carpeta con el sitio en desarrollo puede estar en casi cualquier lugar del disco duro, siempre y cuando sea accesible por el usuario bajo el cual corre el servior web, para asegurar que así sea, es adecuado seguir trabajando en la carpeta “Sites” (o “Web”).

En el archivo de configuración del Apache ubicado en /etc/apache2/extras/httpd-vhosts.conf, está lo necesario para activar el hospedaje virtual:

NameVirtualHost *:80
#
# VirtualHost example:
# Almost any Apache directive may go into a VirtualHost container.
# The first VirtualHost section is used for all requests that do not
# match a ServerName or ServerAlias in any <VirtualHost> block.
#
<VirtualHost *:80>
    ServerAdmin webmaster@dummy-host.example.com
    DocumentRoot "/www/docs/dummy-host.example.com"
    ServerName dummy-host.example.com
    ServerAlias www.dummy-host.example.com
    ErrorLog "/private/var/log/apache2/dummy-host.example.com-error_log"
    CustomLog "/private/var/log/apache2/dummy-host.example.com-access_log common"
</VirtualHost>
<VirtualHost *:80>
    ServerAdmin webmaster@dummy-host2.example.com
    DocumentRoot "/www/docs/dummy-host2.example.com"
    ServerName dummy-host2.example.com
    ErrorLog "/private/var/log/apache2/dummy-host2.example.com-error_log"
    CustomLog "/private/var/log/apache2/dummy-host2.example.com-access_log common"
</VirtualHost>

Como el mismo texto del archivo indica, el primer bloque “VirtualHost” va a ser el comodín que el servidor usará para contestar todas las solicitudes que le lleguen, mientras que los subsecuentes serán las configuraciones que se utilicen según el nombre que se le asigne a cada una. Así por ejemplo con un proyecto almacenado en el directorio “Sites” la configuración quedará más o menos así (se han eliminado opciones por motivo del ejemplo, para más detalles hay que revisar el manual del Apache):

NameVirtualHost *:80
<VirtualHost *:80>
    ServerName localhost
    DocumentRoot "/Library/WebServer/Documents"
</VirtualHost>
<VirtualHost *:80>
    ServerName proyecto1.com
    DocumentRoot "/Users/usuario/Sites/proyecto1"
</VirtualHost>

Desafortunadamente eso no es todo, para que el servidor realmente pueda reponder a nuestras solicitudes para el nuevo nombre, son necesarias dos cosas: reiniciar al Apache y decirle a la computadora donde encontrar la dirección proyecto1.com.

Reiniciar el Apache se puede hacer de dos formas, la primera es apagando el “Web Sharing” en el panel “Sharing” en “System Preferences” y volviendo a activarlo unos instantes después. La segunda opción es mediante la Terminal, utilizando el comando sudo apachectl graceful (es necesario estar como administrador del sistema para poder ejecutar ese comando).

Indicacarle a la computadora dónde puede localizar al servidor proyecto1.com también es sencillo y, al igual que lo anterior, existen dos maneras de hacerlo: la fácil y la que aprueba Apple (también fácil, pero no tanto).

La manera fácil:

Usando nano en la Terminal o un programa como TextEdit, TextWrangler o BBEdit, es necesario modificar el archivo /etc/hosts y hacer que se parezca a algo como esto:

127.0.0.1 localhost
255.255.255.255 broadcasthost
::1 localhost
fe80::1%lo0 localhost

127.0.0.1 proyecto1.com

El último renglón es el cambio a efectuar, lo demás es el contenido original del archivo, el cual no debe ser modificado. Como es de esperarse es necesaria la clave de administrador para modificar este archivo.

La manera oficial:

Esta manera de agregarle al sistema direcciones ficticias es la que Apple aprueba y permite otras funcionalidades que no se logran únicamente con modificar el archivo /etc/hosts. Para este fin existe una utilierá de nombre dscl. Para ver la lista de direcciones existentes se usa el comando de la siguiente manera:

dscl localhost -list /Local/Default/Hosts

En un sistema sin alteraciones el comando no va a mostrar nada, para agregar la modificación que se desea el comando toma la forma:

sudo dscl localhost -create \
/Local/Default/Hosts/proyecto1.com \
IPAddress 127.0.0.1

Para verificar que la información quedó bien:

dscl localhost -read /Local/Default/Hosts/proyecto1.com
AppleMetaNodeLocation: /Local/Default
IPAddress: 127.0.0.1
RecordName: proyecto1.com
RecordType: dsRecTypeNative:hosts

El paso final:

Sea por la manera fácil o por la oficial, el último paso es limpiar la caché de direcciones del sistema en la Terminal:

dscacheutil -flushcache

Después de todo esto lo último que falta por hacer es apuntar el navegador a la dirección http://proyecto1.com y revisar que el sitio aparezca en la ventana del navegador.

Comments

Los Simpson y la manzana

Durante muchos años los dibujos animados de los Simpson han aprovechado toda referencia cultural posible para nutrir su programa y mofarse de todo y de todos.

En esta ocasión nuevamente la toman con Apple, sus productos y sus seguidores, haciendo burla de sus tiendas, los lanzamientos de productos y del mismísimo Steve Jobs (Steve Mobs en este episodio).

Incluso Lisa termina “trabajando” para la compañía cuando descubre que no puede pagar todas las canciones que descargó a su “MyPod“.

Video proporcionado por YouTube


Video proporcionado por YouTube


Video proporcionado por YouTube


Video proporcionado por YouTube

[2008-12-07] Los videos originales fueron removidos el mismo día que publiqué esto, por lo que los enlaces quedaron rotos. Localicé unas versiones con algo de comerciales encima, pero ya duraron en YouTube y espero que esta vez no los quiten. Alk.

Comments