Prerequisitos

Hay que asegurarnos de que contamos con lo siguiente para empezar:

1: Crear la estructura de directorios

El directorio raiz (document root) de cada servidor virtual es el lugar en el que residen y se despachan los archivos de cada sitio web. Se puede establecer una estructura de directorios en el lugar que se desee, y éste tutorial vamos a usar la siguiente estructura:

/var/www/
├── dominio1.com
│   └── public_html
├── dominio2.com
│   └── public_html
├── dominio3.com
│   └── public_html

Cada dominio o dirección de nombre en nuestro servidor tendrá su directorio raíz como /var/www/<nombre_de_dominio>/public_html

El directorio /var/www ya existe desde que está instalado Apache. Vamos a empezar por crear el directorio de nuestro primer servidor virtual, ejemplo.com

sudo mkdir -p /var/www/ejemplo.com/public_html

El comando mkdir -p crea los directorios necesarios, por lo que en un solo paso se crean /var/www/ejemplo.com y  /var/www.ejemplo.com/public_html

Luego, crearemos un archivo index.hml en el directorio que acabamos de crear, por lo que primero nos cambiamos al directorio recién creado

cd /var/www/ejemplo.com/public_html

y ya estando ahí, abre tu editor favorito y escribe lo siguiente, guardándolo con el nombre index.html Linux no te dejará crear el archivo sin usar sudo, por lo que deberás usarlo para abrir el editor ya que el directorio pertenece al usuario root

<html>
  <head>
    <meta charset="utf-8">
    <title>Bienvenido a ejemplo.com</title>
  </head>
  <body>
    <h1>Muy bien!</h1>
    <p>Página de ejemplo.com!</p>
  </body>
</html>

Apache corre usando al usuario www-data, por lo que para que los permisos sean los correctos, debemos cambiar al dueño tanto de los directorios como del archivo que acabamos de crear


sudo chown -R www-data: /var/www/ejemplo.com

El comando chown -R www-data: cambia al dueño y al grupo www-data del directorio especificado y a todos los archivos y directorios que están debajo en un solo paso.

Creación de los servidores virtuales

En Debian, los archivos de configuración de los servidores virtuales de Apache se encuentran en el directorio /etc/apache2/sites-available y pueden habilitarse creando ligas simbólicas al directorio /etc/apache2/sites-enabled

Nos cambiamos al directorio de configuraciones de servidores virtuales de apache

cd /etc/apache2/sites-available

y estando ahí, sin olvidar utilizar sudo porque el dueño del directorio es root, escribimos lo siguiente y lo guardamos con el nombre de archivo ejemplo.com.conf

<VirtualHost *:80>
    ServerName ejemplo.com
    ServerAlias www.ejemplo.com
    ServerAdmin webmaster@ejemplo.com
    DocumentRoot /var/www/ejemplo.com/public_html
 
    <Directory /var/www/ejemplo.com/public_html>
        Options -Indexes +FollowSymLinks
        AllowOverride All
    </Directory>
 
    ErrorLog ${APACHE_LOG_DIR}/ejemplo.com-error.log
    CustomLog ${APACHE_LOG_DIR}/ejemplo.com-access.log combined
</VirtualHost>

Puedes nombrar al archivo de configuración de un servidor virtual como tu quieras, pero se recomienda el dominio o dirección de nombre, para que sea más fácil identificar a cada servidor virtual y cual es su propósito al mismo tiempo.

Para habilitar el servidor virtual, es necesario crear una liga simbólica del archivo de configuración al directorio /etc/apache2/sites-enabled y desde ahí lee Apache todos los sitios que están “habilitados”, posibilitando habilitar y deshabilitar servidores virtuales a discreción. Puedes crear la liga simbólica como se muestra a continuación

sudo ln -s /etc/apache2/sites-available/ejemplo.com.conf /etc/apache2/sites-enabled/

O puedes usar el script que se instaló cuando instalaste Apache, lo que se recomienda en lugar de crear la liga simbólica a mano

sudo a2ensite ejemplo.com

Una vez que está creado el archivo de configuración del servidor virtual y habilitado, se procede a verificar que la configuración no tenga errores

sudo apachectl configtest

Y si todo está correcto, aparecerá

Syntax OK

En caso de haber cometido algún error, éste se mostrará y se tendrá que corregir el archivo de configuración del servidor virtual.

En caso de ser correcta la nueva configuración, procedemos a decirle a Apache que vuelva a leer su configuración

sudo systemctl reload apache2

Para verificar que el nuevo servidor virtual está funcionando adecuadamente, pasamos a escribir en un browser la dirección http://ejemplo.com y deberá aparecer la página web del archivo index.html que creamos en un paso anterior:

Muy bien!

Página de ejemplo.com!

Configuración del servidor

Videos