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.

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