Virtual Hosts en XAMPP en Mac OS Leopard

Como había dicho en un post pasado, ahora ando e Mac OS. Siendo yo un desarrollador de PHP necesito tener corriendo Apache, PHP, MySQL y demás módulos. Como los proyectos se venían encima no tuve la oportunidad de instalar todo esto desde cero como los haría en GNU/Linux, así que decidí bajarme e instalarme XAMMP. XAMMP es un programa que ya trae todo incluido servidor Apache 2, PHP 5, MySQL, servidor FTP, todo sin batallar en la instalación, aquí yo pensaba que la personalización iba a ser difícil, pero no lo fue tanto.

Entonces luego surgió la duda de como crear Hosts Virtuales con XAMMP y después de googlear un poco encontré la solución. También puedes ver como crear Hosts Virtuales en Apache 2 en Ubuntu.

Como es lógico debemos de tener XAMPP para Mac OS instalado, lo puedes conseguir en http://www.apachefriends.org, la version que tengo yo es la 1.0.1, y trae PHP 5.2.9, Apache 2.2.11 y MySQL 5.1.33. Mi version de Mac OS es la 10.5, debería de funcionar sin problemas para la 10.5.7 y superiores.

Primero debemos activar la opción de Hosts Virtuales en el XAMPP, esto se hace modificando el archivo en /Applications/XAMPP/etc/httpd.conf, lo abrimos con un editor de textos o dese consola:

$ vim /Applications/XAMPP/etc/httpd.conf

Descomentamos la línea que dice:

# Virtual hosts
Include /Applications/xampp/etc/extra/httpd-vhosts.conf

Luego para crear nuestros hosts virutales editamos el archivo /Applications/xampp/etc/extra/httpd-vhosts.conf, primero agregamos un virtual host para el ‘localhost’ apuntando al htdocs del XAMPP y luego las que queramos, de la siguiente manera.

<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot "/Applications/XAMPP/htdocs"
ServerName localhost
ErrorLog "logs/localhost"
CustomLog "logs/localhost" common
</VirtualHost>


<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot "/Applications/XAMPP/htdocs/ejemplo"
ServerName ejemplo
ErrorLog "logs/ejemplo"
CustomLog "logs/ejemplo" common
</VirtualHost>

  • DocumentRoot: es la ruta donde estarán los archivos de ese VirtualHost.
  • ServerName: es el nombre del VirtualHost.

De esta manera todo lo que metamos en /Applications/XAMPP/htdocs/ejemplo podrá ser visualizado en el navegador poniendo http://ejemplo

Ahora es necesario modificar el archivo /etc/hosts para que puedas acceder a ese Virtual Host, abrimos el archivo y agregamos esta línea

ejemplo    127.0.0.1

Nomas reinicias el XAMPP y listo!

iTunes is playing: Infected Mushroom – Noon

Crear otros nombres de servidor en Apache2

Como ya es costumbre este artículo aplica a la estructura y configuración de Apache2 en Ubuntu, alguien dijo que esta estructura debería aplicar a las demás distribuciones, con lo cual yo estoy totalmente de acuerdo, en Ubuntu manejar Apache2 es muy fácil e intuitivo.

¿Para que sirve esto? Si ya tienes corriendo Apache como servidor web, sabrás que para ejecutar las aplicaciones desde el navegador localmente accedemos como http://localhost, pues esto nos sirve para crear otro nombre, por ejemplo en nuestro caso: http://sonidolibre, esto es local pero sirve cuando trabajas en muchos proyectos :P.

Primero tenemos que abrir el archivo /etc/hosts y agregar la línea: 127.0.0.1 sonidolibre. Así podrá ser reconocido por el navegador.

Ahora tenemos que crear un archivo en /etc/apache2/sites-available/, con la estructura muy similar al archivo default, localizado en el mismo directorio. Entonces para no complicarnos, lo copiaremos:

$ sudo cp /etc/apache2/sites-available/default /etc/apache2/sites-available/sonidolibre

Ahora abrimos el archivo con nuestro editor favorito (yo uso vim desde la consola), y borramos la línea NameVirutalHost *:80, luego agregamos una nueva sentencia llamada ServerName después del ServerAdmin para establecer el nombre del nuevo servidor quedando:

ServerName sonidolibre

Luego modificamos el DocumentRoot, para decir cual será el directorio raíz de este nuevo servidor:

DocumentRoot /var/www/sonidolibre-server/

La verdad no se si es buena idea ponerlo en /var/www, cualquier directorio esta bien, incluso en el home. Ahora cambiamos donde dice <Directory /var/www/> por:

<Directory /var/www/sonidolibre-server>

Guardamos el archivo, ahora activamos el sitio con el comando a2ensite:

$ sudo a2ensite sonidolibre

Luego reiniciamos Apache:

$ sudo /etc/init.d/apache2 restart

Crea un arhivo en /var/www/sonidolibre-server o en la carpeta que hayas creado, y ahora te vas a http://sonidolibre y listo tu nuevo servidor funcionando.

Enjoy!!!

MP3 Playing: Space Buddha – Dust In The Wind.

Activar mod_rewrite de Apache2 en Ubuntu

El mod_rewrite es un módulo de Apache que permite modificar lo que aparece en la barra de dirección, supongamos que tenemos lo siguiente: index.php?mod=index&taskid=9, podría quedar: /task/9. La verdad nunca lo he usado a pie, pero se necesita tener activado este módulo para poder utilizar diversas aplicaciones y frameworks (como CakePHP). Veamos como activarlo en Ubuntu 7.10.

Como siempre en Ubuntu todo es más fácil, esta distribución se la recomiendo a todos aquellos que quieran empezar a familiarizarse con GNU/Linux. Entonces tecleamos lo siguiente en la línea de comandos:

$ sudo a2enmod rewrite

El comando a2enmod (podría ser una abreviatura de Apache2 Enable Module) sirve para activar módulos que se encuentren en el directorio /etc/apache2/mods-available y los pasa al directorio /etc/apache2/mods-enabled.

Ahora lo que sigue es modificar nuestro host donde queremos que aplique el rewrite, en mi caso sera para todo lo que este dentro de mi localhost, entonces me voy al directorio /etc/apache2/sites-enabled/ y aquí debe de haber un archivo llamado 000-default, lo abrimos con vim o nano.

$ sudo vim /etc/apache2/sites-enabled/000-default

Aquí buscamos en las líneas que digan AllowOverride None y las cambiamos por AllowOverride All. Incluso podemos definir que directorios queremos que aplique es rewrite y cuales no.

Por último tenemos que reiniciar Apache2:

$ sudo /etc/init.d/apache2 force-reload

Y eso es todo!!!

Amarok playing: Allegro ma non troppo by Beethoven