Configurar virtualhost en Apache y Debian 10

Hay veces que desarrollamos más de un proyecto web en la misma computadora y para eso necesitamos configurar nuestro equipo de tal modo que se puedan tener varios proyectos dentro de la misma carpeta, pero con diferente ruta de acceso desde el navegador y para eso yo realice lo siguiente.

Habilitar un archivo de configuración para el nuevo dominio

Copiar el archivo ‘000-default.conf’ a otro (en este caso será blog.local) con el nombre blog.local.conf

sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/blog.local.conf 

Editar el archivo ‘blog.local.conf`’ y dejarlo como a continuación se muestra (recuerda cambiar ‘user’ por tu usuario local).

<VirtualHost *:80>	
   ServerName blog.local	
   ServerAlias blog.local	
   ServerAdmin webmaster@localhost	
   DocumentRoot /home/user/Server/blog	
   ErrorLog ${APACHE_LOG_DIR}/error.log	
   CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Deshabilitar dominio Default.

sudo a2dissite 000-default

Habilitar el dominio creado.

sudo a2ensite blog.local

Y para que Apache2 reconozca los cambios anteriores debes reiniciar el servicio.

sudo systemctl reload apache2

Configurar la carpeta DocumentRoot

Para este momento el dominio ya está habilitado, solo falta decir a dónde debe de entrar cuando queramos ver el sitio. Para esto debemos editar el archivo de configuración de Apache2.

sudo vim /etc/apache2/apache2.conf

Y dejarlo similar a esto que tenemos a continuación. Nótese que yo comenté el Directorio default para poder mover todos mis proyectos en una carpeta ubicada dentro de los archivos del usuario local.

#<Directory /var/www/>
#	Options Indexes FollowSymLinks
#	AllowOverride None
#	Require all granted
#</Directory>

<Directory /home/user/Server/>	
   Options Indexes FollowSymLinks	
   AllowOverride None	
   Require all granted
</Directory>

Ahora debemos darle los permisos adecuados y cambiar al propietario del directorio nuevo.

sudo chmod -R 777 /home/$USER/Server
sudo chown -R www-data:www-data /home/$USER/Server

Agregar usuario local al grupo www-data

sudo useradd -g www-data $USER

Verificamos que se haya agregado el usuario.

grep ^www-data /etc/group

Y debemos ver algo como esto…

www-data:x:33:miusuario

Agregar el dominio en el archivo hosts

Aquí ya tienes configurado, habilitado y definido la ruta de acceso para tu domino, pero te falta decirle al Sistema Operativo que debe buscar primeramente el dominio en tu servidor local antes de buscarlo por la web cuando lo escribas como URL en tu browser.

Por eso, debes de editar del siguiente modo el archivo hosts…

sudo vim /etc/hosts

Y dejarlo similar a esto…

127.0.0.1	localhost127.0.1.1	MYDESKTOP
# The following lines are desirable for IPv6 capable
hosts::1     localhost 
ip6-localhost 
ip6-loopbackff02::1 
ip6-allnodesff02::2 
ip6-allrouters

127.0.0.1 blog.local

Hacer prueba de servicio

Suponiendo que has llegado hasta aquí sin problema, entonces crea un archivo con un texto aleatorio dentro de la carpeta creada para este nuevo dominio y agrégale cualquier cosa para verla desde el navegador.

echo 'prueba de dominio' > /home/$USER/Server/blog/index.html

Suponiendo que todo es correcto entonces tu browser entrará sin problema alguno escribiendo en la URL ‘blog.local’.

Hasta aquí he terminado. Solo que debo comentar que los permisos que le dimos anteriormente a la carpeta creada para nuestros proyectos, esto es meramente para usarlo como entorno de desarrollo.
Recuerda que para desplegar tus proyectos a producción debes considerar la seguridad del lugar donde los alojes.
Espero que sirva de algo. A mí me servirá de mucho para futuras configuraciones de mis entornos de desarrollo.
Chao! 📝🐧