Como configurar un virtualhost en Apache

Apache es el servidor web más popular para servir contenido en Internet. Cuenta con más de la mitad de los sitios activos en Internet y es extremadamente poderoso y flexible.

Apache rompe su funcionalidad y componentes en unidades separadas que pueden ser personalizadas y configuradas de manera independiente. La unidad básica que describe a un sitio o dominio es denominada virtualhost (ó alojamiento virtual en español).

 

Instalar Apache

Antes de empezar necesitamos tener instalado el servidor web Apache , para ello como root o a través de sudo en caso de Ubuntu lo instalaríamos de la forma:

sudo apt-get update
sudo apt-get install apache2

En nuestro caso vamos alojar una web en nuestro Apache cuyo dominio lo vamos a llamar ejemplo.com.

En Apache los archivos de la web a migrar por defecto se alojan en /var/www , aunque lo podríamos cambiar, lo mantendremos en ésta ubicación. En nuestro ejemplo crearemos un directorio con el nombre de nuestro dominio de la forma:

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

Aquí en este directorio es donde debemos alojar todos los archivos de nuestra web.

Una vez copiado todos los archivos en el, tenemos que establecer adecuadamente los permisos, el usuario y grupo que va a gestionar esto. Es importante saber que el usuario o owner no sea al usuario sobre el que corre apache que por defecto es www-data. Por seguridad es importante que el owner sea un usuario al uso o como poco root, aunque yo prefiero que sea un usuario distinto.

En algún caso puede que nuestra web necesite grabar en el directorio y solo en esos casos habrá que dar a www-data permisos de escritura, pero esto hay que limitarlo / acotarlo lo mas posible por seguridad. Esto puede ser el caso por ejemplo de la instalación de plugins o de la ejecución de alguno que precise grabar en el directorio como es el caso del CMS WordPress.

En nuestro caso vamos a establecer un usuario propietario de los archivos llamada pepito y estableceremos los permisos, el usuario y el grupo de la siguiente forma:

Realizando todo esto como usuario root o con sudo dependiendo si estamos en Debian o en Ubuntu.

Establecemos propietario y grupo a todos los archivos:

chown -R pepito:www-data /var/www/ejemplo.com/
cd /var/www/ejemplo.com/

Establecer permisos de archivos y directorios:

find ./ -type d -exec chmod 755 {} ";"
find ./ -type f -exec chmod 644 {} ";"

Esto es lo mínimo y desde este punto de partida podemos afinar mas según nuestras necesidades concretas para ser mas o menos estrictos. Su servidor web ahora debe tener los permisos que requiere para servir el contenido, y su usuario deberá ser capaz de crear contenido

 

Crear el archivo para el Virtualhost

Los archivos virtual host son archivos que especifican la configuración actual de un virtual host e indican como el servidor Apache va a responder a varias solicitudes de dominio.

Apache viene con un archivo virtual host por defecto llamado 000-default.conf que podemos utilizar para ahorrar tiempo y vamos a copiarlo para crear un archivo virtual host para el nuevo dominio.

 

sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/ejemplo.com.conf

 

Abra el nuevo archivo en su editor con permisos de root:

 

sudo nano /etc/apache2/sites-available/ejemplo.com.conf

 

El archivo se verá algo así :

/etc/apache2/sites-available/ejemplo.com.conf
<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/html
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Como podrá apreciar, no hay mucho aquí. Personalizaremos los datos aquí para el dominio y agregaremos algunas directivas adicionales. Esta sección del virtual host, coincide cualquier solicitud que sea hecha por el puerto 80, el puerto por defecto de HTTP.

Primero, necesitamos cambiar la directiva ServerAdmin a un correo electrónico en donde el administrador del sitio pueda recibir correos.

ServerAdmin admin@ejemplo.com

Después de esto, necesitamos agregar dos directivas. La primera llamada ServerName, que establece el dominio base que debe coincidir para la definición de este virtual host. Esto comúnmente es su dominio. La segunda, llamada ServerAlias, define nombres alternativos por los cuales podría ser encontrado como alternativa al dominio base. Esto es útil para definir dominios alternativos, como www:

ServerName ejemplo.com
ServerAlias www.ejemplo.com

El único cambio restante que hay que cambiar para un archivo básico virtual host es la ubicación del documento raíz para este dominio. Ya hemos creado el directorio que necesitamos, así que solo necesitamos alterar la directiva DocumentRoot para que refleje el directorio que hemos creado.

DocumentRoot /var/www/ejemplo.com

En totalidad, nuestro archivo virtual host debería verse así:

/etc/apache2/sites-available/ejemplo.com.conf
<VirtualHost *:80>
    ServerAdmin admin@ejemplo.com
    ServerName ejemplo.com
    ServerAlias www.ejemplo.com
    DocumentRoot /var/www/ejemplo.com
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

 

Ahora que hemos creado nuestros archivos de virtual host, debemos habilitarlos. Apache incluye algunas herramientas que nos permiten hacer esto. Para ellos usaremos la herramienta a2ensite para habilitar nuestros sitios así:

 

sudo a2ensite ejemplo.com.conf

 

Posteriormente, deshabilite el sitio poder defecto definido en 000-default.conf

 

sudo a2dissite 000-default.conf

 

Por último tenemos que reiniciar Apache para hacer que estos cambios sean efectivos:

 

sudo systemctl restart apache2

o bien, según la versión de Debian o Ubuntu que tenga:

 

sudo service apache2 restart

 

Esto es todo. Espero que con este resulte mas fácil montar vuestra página web. Por otro lado no os perdáis como Migrar WordPress a otro hosting y dominio con wp-cli que completará lo expuesto aquí y creo que os será muy útil.

 

 

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *