Servicios / julio 16, 2019

Configurar VirtualHost por dominio en Apache [Debian, Ubuntu, CentOS]

Cuando queremos instalar una aplicación web en nuestro servidor y necesitamos que un dominio o subdominio necesitaremos configurar el servidor web para que apunte a un directorio concreto con una serie de políticas a cumplir.

En este caso vamos a utilizar Apache y para ello vamos a tener que configurar un VirtualHost para un subdominio.

Durante el proceso revisaremos algunos parámetros de Apache para tener una configuración a medida, ya que la configuración que yo proponga es una configuración de muchas.

Instalación de Apache

Para instalar Apache es tan sencillo como ejecutar lo siguiente:

# Para Debian y Ubuntu
apt install apache2

# Para CentOS
yum install httpd

Configuración de VirtualHost en Apache

En Apache los ficheros de configuración para los VirtualHost se encuentran en /etc/apache2/sites-available (en CentOS se encuentra en /etc/httpd/sites-available).

En este directorio tendremos los VirtualHost disponibles en cambio en /etc/apache2/sites-enabled (en CentOS e encuentra en /etc/httpd/sites-enabled) tendremos los VirtualHost activos en Apache.

Así que lo primero que haremos será crear un fichero nuevo de configuración para nuestro VirtualHost:

# Para Debian y Ubuntu
touch /etc/apache2/sites-available/dominio.conf

# Para CentOS
touch /etc/httpd/sites-available/dominio.conf

La sintaxis del VitualHost es con etiquetas y por lo tanto muy sencillo de escribir y entender. Es como si fuera HTML.

Para declarar el VirtualHost pondremos lo siguiente:

<VirtualHost *:80>
     ...
</VirtualHost>

Con *:80 indicamos que este VirtualHost responde a todas las IP’s y por el puerto 80. Si por ejemplo queremos que el VirtualHost responda por otro puerto deberemos de cambiar el valor del puerto (por ejemplo 8080 o 443).

Dentro de la etiqueta <VirtualHost> podemos añadir unos parámetros, añadiremos lo siguiente:

<VirtualHost *:80>
        ServerName dominio.com
        ServerAlias www.dominio.com
        DocumentRoot /var/www/html/vhosts/dominio.com/www

        ErrorLog /var/www/html/vhosts/dominio.com/logs/error.log
        LogLevel warn
        CustomLog /var/www/html/vhosts/dominio.com/logs/access.log combined
</VirtualHost>

Pasamos a explicar todos estos parámetros que son los básicos para que el VirtualHost funcione correctamente:

  • ServerName: Con esto indicaremos el nombre de dominio o subdominio.
  • ServerAlias: Indicaremos si el nombre de dominio dispone de alias para acceder. Por ejemplo, si ponemos en ServerName nuestro dominio «dominio.com» en ServerAlias podemos añadir las www para indiciar que www.dominio.com es un alias de dominio.com.
  • DocumentRoot: Con este parámetro indicaremos la ruta física donde se encuentra nuestra aplicación web. Generalmente en /var/www/html o en /home/usuario.
  • ErrorLog: indicaremos la ruta del registro de errores para esta web. Generalmente este log se puede incluir en el mismo DocumentRoot en una ruta diferente o también en /var/log/apache/domains/dominio.com_error.log. Seguido de la ruta del log pondremos el LogLevel, es decir, el nivel de registros que queremos guardar.
  • CustomLog: Lo mismo que ErrorLog pero este para registrar las entradas que se hacen en al web. Este con la opción final de combined.

También tenemos un parámetro que usaremos mucho que es el <Directory> y que puede ser algo parecido a esto:

<Directory /var/www/html/vhosts/dominio.com/www>
     Options Indexes FollowSymLinks MultiViews
</Directory>

Este parámetro sirve para que un grupo de directivas se apliquen únicamente a un directorio del sistema de ficheros, a sus subdirectorios y a su contenido.

En el caso de la directiva Options, sirve para indicar que características tienen disponible el directorio en particular, que pueden ser:

  • All: Todas las opciones excepto MultiViews.
  • ExecCGI: Se permite la ejecución de scripts CGI utilizando mod_cgi.
  • FollowSymLinks: El servidor seguirá los enlaces simbólicos de este directorio.
  • Include: Esta directiva sirve para indicar que los include del lado del servidor proporcionados por el módulo include están permitidos.
  • IncludeNOEXEC: Los include del lado del servidor están permitidos, pero los ejecutables están desactivados.
  • Indexes: Si se solicita una URL que se asigna a un directorio y no hay ningún DirectoryIndex en ese directorio entonces mod_autoindex devolverá un listado de formateado del directorio.

Esto es solo una pincelada de lo que se puede configurar en Apache, como siempre podéis profundizar mucho más revisando la documentación Oficial de Apache donde encontraréis con todo lo que necesitéis.

Una vez tenemos nuestro VirtualHost creado, tendremos que habilitar la web, para ello usaremos el siguiente comando:

# a2ensite dominio.conf

Pero antes, quizás nos interese revisar si la sintaxis de nuestro fichero de configuración es correcta:

# apachectl configtest

Tras habilitar nuestro VirtualHost con a2ensite nos mostrará este resultado:

Enabling site dominio.conf.
To activate the new configuration, you need to run:
  systemctl reload apache2

Tras activar la web, procedemos a actualizar Apache:

# systemctl reload apache2

Tras este cambio podremos consultar todos los VirtualHosts que tenemos en nuestro servidor web.

Ningún comentario “Configurar VirtualHost por dominio en Apache [Debian, Ubuntu, CentOS]”

avatar
500
  Suscribirte  
Notificarme

Utilizamos cookies propias y de terceros para mejorar nuestros servicios. Si continúa navegando, consideramos que acepta su uso. Doble clic sobre aquí para cerrar.