Una de las muchas manías que voy adquiriendo con la edad es la de crearme, en mi propia máquina, un virtual host por cada proyecto en el que estoy trabajando. Es algo que me resulta muy cómodo, y que no me lleva mucho tiempo.
Supongamos que estoy trabajando en dos proyectos distintos, que los coloco dentro de mi directorio ‘public_html’, y que los que voy a llamar «proyecto1.dev» y «proyecto2.dev». Original que es uno poniendo nombres.
Contaremos, por tanto, con dos directorios dentro de nuestro directorio ‘public_html’ (‘proyecto1’ y ‘proyecto2’) que a su vez contendrán, por ejemplo, sendos archivos html a los que llamaremos ‘index.html’. Obviamente esto es un ejemplo de partida, pero la ubicación de estos directorios podría ser cualquier otra que decidiésemos.
Lo que haremos, por una parte, es crear un archivo de configuración por cada virtualhost, habilitar ambos espacios para que el servidor apache pueda mostrarlo adecuadamente, y por otra, agregar los nombres de los proyectos al archivo correspondiente, para que apache pueda localizarlos.
Para proceder con ello abrimos un terminal y escribimos:
sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/proyecto1.dev.conf
sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/proyecto2.dev.conf
O, dicho de otra forma, copiaremos la «plantilla» para poner nuestro espacio disponible para el servidor Apache. Es obvio que al hacer ‘sudo’, el sistema nos pedirá contraseña, y que el usuario que estemos usando debe ser miembro del grupo ‘sudo’.
Después editaremos cada uno de los archivos recién creados, por ejemplo, con gedit -o el editor que prefiera-, de la siguiente forma:
sudo gedit /etc/apache2/sites-available/proyecto1.dev.conf
Y cambiaremos las siguientes líneas:
#ServerName www.example.com
- Se trata del nombre del servidor virtual, y está comentado, así que lo descomentaremos y colocaremos el nombre que hemos elegido
ServerName www.proyecto1.com
DocumentRoot /var/www
- Aquí especificaremos la ruta absoluta al directorio del proyecto. Sustituya ‘usuario’ por su nombre de usuario.
DocumentRoot /home/usuario/public_html/proyecto1
ServerAdmin webmaster@localhost
- Aquí se especifica la dirección de correo del «webmaster». Yo no suelo tocar este apartado.
- Una vez hecho esto suelo añadir la siguiente línea:
ServerAlias proyecto1.dev *.proyecto1.dev
Hagamos lo propio con el archivo /etc/apache2/sites-available/proyecto2.dev.conf, y sólo nos faltará un par de mandatos para finalizar la primera parte:
sudo ln -s /etc/apache2/sites-available/proyecto1.dev.conf /etc/apache2/sites-enabled/proyecto1.dev.conf
sudo ln -s /etc/apache2/sites-available/proyecto2.dev.conf /etc/apache2/sites-enabled/proyecto2.dev.conf
De esa manera, «habilitaremos» los dos virtualhosts creados. Otra forma de hacer lo mismo es con los siguientes mandatos:
sudo a2ensite proyecto1.dev
sudo a2ensite proyecto2.dev
Cuando queramos dehabilitarlos, eliminamos los enlaces simbólicos que hemos creado en /etc/apache2/sites-enable/, o bien damos los mandatos contrarios:
sudo a2dissite proyecto1.dev
sudo a2dissite proyecto2.dev
Llegados a este punto, debemos editar el archivo /etc/hosts
sudo nano /etc/hosts
e incluiremos las siguientes líneas:
127.0.0.1 www.proyecto1.dev
127.0.0.1 www.proyecto2.dev
Y por último reiniciamos el servidor apache:
sudo service apache2 restart
Si todo ha ido bien, al introducir alguna de las direcciones www.proyecto1.dev o www.proyecto2.dev deberíamos acceder a la página de inicio de nuestros proyectos.
Como siempre, espero que pueda ser de utilidad.