Como configurar Virtual Hosts en Apache en Ubuntu 20.04

Por defecto Apache sirve sus paginas web en la carpeta /var/www/html y esto funciona bien con un dominio, pero si quieres tener multiples paginas web en un servidor Apache similar como lo hacen los proveedores de Hosting debes configurar Apache para que funcione con multiples unidades llamadas Virtual Hosts, es decir que tenemos el sitio wordpress1.local y el sitio wordpress2.local, los dos con diferente contenido y apuntado a carpetas diferentes pero en el mismo servidor.

Manos a la obra!, lo primero es instalar Apache con los siguientes comandos.

sudo apt update
sudo apt install apache2

Luego de completar la instalacion continuamos creando los directorios de nuestros sitios web, para este caso voy a tomar los que mencione arriba (wordpress1 y wordpress2) y utilizare los siguientes comandos para crearlos.

sudo mkdir -p /var/www/wordpress1.local/public_html
sudo mkdir -p /var/www/wordpress2.local/public_html

Estos directorios es donde debes colocar el contenido, es decir si estas instalando WordPress en cada uno de esos sitios el archivo comprimido para wordpress1 lo debes descomprimir justo en /var/www/wordpress1.local/public_html.

El nombre de la carpeta wordpress1/local sustitúyela según sea tu caso.

Ahora hay que otorgar permisos en dicha carpetas, en este momento solo el usuario root tiene acceso, si queremos que los usuarios regulares puedan acceder usamos los siguientes comandos.

sudo chown -R $USER:$USER /var/www/wordpress1.local/public_html
sudo chown -R $USER:$USER /var/www/wordpress2.local/public_html
sudo chmod -R 755 /var/www

Listo, con esto hemos logrado que el usuario regular tenga los permisos adecuados para lograr el acceso a los sitios web.

Ahora vamos a crear los archivos de configuración correspondientes para cada dominio o sitio web, para esto vamos a tomar como base el archivo por defecto que Apache trae para su virtual host principal llamado 000-default.conf.

Lo vamos a copiar usando los siguientes comandos.

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

Ambos archivos los vamos a editar con nuestro editor favorito, sea este vi o nano y deben quedar parecidos a lo siguiente, claro sustituyendo wordpress1.local según sea tu dominio.

<VirtualHost *:80>
    ServerAdmin admin@wordpress1.local
    ServerName wordpress1.local
    ServerAlias www.wordpress1.local
    DocumentRoot /var/www/wordpress1.local/public_html
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
<VirtualHost *:80>
    ServerAdmin admin@wordpress2.local
    ServerName wordpress2.local
    ServerAlias www.wordpress2.local
    DocumentRoot /var/www/wordpress2.local/public_html
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Ahora procedemos a publicar los sitios con los siguientes comandos.

sudo a2ensite wordpress1.local
sudo a2ensite wordpress2.local

Y deshabilitamos el sitio por defecto que tiene Apache.

sudo a2dissite 000-default.conf

Por ultimo reiniciamos Apache.

sudo systemctl restart apache2

Para este ejemplo estoy usando 2 dominios locales, para que me funcione, es decir poder verlos desde un explorador web debo modificar el archivo hosts de mi sistema operativo agregando la linea compuesta por mi IP local o privada y mi dominio web inventado o local.

Si en tu caso tienes x dominio que lo estas apuntando a la IP publica de tu servidor VPS o Dedicado pues no hay mas que hacer.

Deja un comentario