Hace un par de días hablaba sobre el entorno de trabajo y lo necesario que es mantener el orden para trabajar.
La idea detrás de un Host Virtual es tener varias Webs en un sólo servidor, y cuando estamos desarrollando definitivamente queremos tener muchas Webs en un sólo servidor.
Otra cosa que me gusta de utilizar Hosts Virtuales es que la url que utilizamos para el desarrollo puede parecerse (incluso ser idéntica) a la de producción.
Yo estoy utilizando Apache 2, PHP 5.3 en un Mandriva 2010. Pero estas indicaciones son válidas para cualquier distro, con las variantes del caso.
Bien, primero pensemos en la url de desarrollo que vamos a utilizar, yo generalmente uso una forma www.dominio.dev, así al ver la url en el navegador estoy seguro de que estoy trabajando con la versión de desarrollo de la Web. Nuestras Web en desarrollo están en nuestra máquina, es decir nuestro host local. Bien, en el directorio «/etc» hay un archivo de texto llamado hosts que modificaremos, para hacer esto necesitas permisos de superusuario y desde una consola:
nano /etc/hosts
Miraremos una línea parecida a esta:
127.0.0.1 localhost
Entonces agregamos las url que utilizaremos para nuestras Webs en desarrollo, por ejemplo podría quedar parecido a este:
#el localhost, ¡nunca quitar esta línea! 127.0.0.1 localhost #url para una web de pruebas 127.0.0.1 www.pruebas.dev #url para otra web de pruebas 127.0.0.1 www.otraspruebas.dev #url para mi copia local del blog 127.0.0.1 www.miblog.dev
Noten que algunas líneas comienzan con el caracter «#», esto indica un comentario. También hay que destacar que cada linea comienza con 127.0.0.1 ya que esta dirección representa el localhost.
Lo que sucede con esto es que cuando en el navegador escribimos una url indicada en el archivo hosts, es automáticamente redireccionada a la dirección IP que se le antepone.
Bueno, pasemos ahora a la parte del Apache. Supongamos que tenemos una partición destinada para nuestras Webs y deseamos que Apache lea los directorios que queremos, por ejemplo tenemos la Web «pruebas» en una ruta «/media/webs/pruebas» donde «webs» es la partición del disco duro y «pruebas» el directorio de nuestra Web en desarrollo.
Entonces ahora modificaremos el archivo de configuración de Apache, en Mandriva lo encuentras en «/etc/httpd/conf/httpd.conf», así que como superusuario en una consola:
nano /etc/httpd/conf/httpd.conf
Buscamos la línea que contiene «#NameVirtualHost *:80» lo descomentamos, y agregamos nuestros hosts virtuales, quedando de una forma parecida a esta:
NameVirtualHost *:80 #Setenv VLOG #localhost <virtualhost *:80> DocumentRoot /var/www/html ServerName localhost:80 </virtualhost> #Virtual Host para Pruebas <virtualhost *:80> <directory /media/webs/pruebas> allow from all Options +Indexes AllowOverride all </directory> ServerAdmin usuario@dominio.com DocumentRoot /media/webs/pruebas ServerName www.pruebas.dev ErrorLog /media/webs/pruebas_log/log_errores </virtualhost> #Virtual Host para Otras Pruebas <virtualhost *:80> <directory /media/webs/otraspruebas> allow from all Options +Indexes AllowOverride all </directory> ServerAdmin usuario@dominio.com DocumentRoot /media/webs/otraspruebas ServerName www.otraspruebas.dev ErrorLog /media/webs/miblog_log/log_errores </virtualhost> #Virtual Host para Mi Blog <virtualhost *:80> <directory /media/webs/miblog> allow from all Options +Indexes AllowOverride all </directory> ServerAdmin usuario@dominio.com DocumentRoot /media/webs/miblog ServerName www.miblog.dev ErrorLog /media/webs/miblog_log/log_errores </virtualhost>
Podemos ver que el primer host virtual es el correspondiente a localhost, luego apreciamos los tres hosts de ejemplo. Cada host virtual se encierra entre etiquetas «<VirtualHost></VirtualHost>», y se anidan varias cosas. «*80» es para indicar el puerto de escucha, luego tenemos unas etiquetas «<Directory></Directory>», en esta agregaremos unas directivas extra para el directorio donde se encuentra la Web:
allow from all permite que se sirva cualquier archivo correspondiente con la url, esto es útil en desarrollo, pero para el entorno de producción es mejor cambiarlo.
Option +Indexes permite que en carencia de un archivo index podamos ver una lista con los directorios y archivos.
AllowOverride all permite que el directorio y subdirectorio pueda ser tratado por archivos .htaccess
Luego tenemos otras directivas que son específicas del host virtual:
ServerAdmin es la direcctión de correo del administrador del host.
DocumentRoot es la ruta al directorio raíz de la Web, generalmente este directorio debe contener un archivo index.
ServerName es el mismo que pusimos en el archivo hosts, esto para que el host corresponda a la url solicitada, por eso desde el navegador podemos escribir «www.pruebas.dev» y veremos la Web alojada en «/media/webs/pruebas».
ErrorLog es la ruta al archivo de Log de errores que queremos se genere cada vez que ocurra un error, para el desarrollo este archivo es muy útil.
Para finalizar es necesario reiniciar el Apache, así que desde una consola como superusuario ejecutas:
/etc/init.d/httpd stop /etc/init.d/httpd start
Bueno, espero este Tip os haya sido útil. Saludos.
También podría interesarte leer la documentación de Apache.