Configurar host virtuales de Apache en Ubuntu Server 14.04

Stay hungry, stay foolish

Steve Jobs

En esta ocasión vamos a explicar como configurar host virtuales en nuestro servidor si utilizamos Apache Server y Ubuntu

Virtual Host

El término virtual host se refiere a que podamos alojar múltiples sitios web en un solo equipo. Los host virtuales pueden estar basados en IP, lo que significa que se necesita una IP para cada sitio web, o también se pueden basar en nombres de dominio, con lo cual podemos tener múltiples sitios utilizando una sola dirección IP.

 

Generalmente la configuración que mas se utiliza es la que está basada en nombres de dominio, y es la forma en la que vamos a trabajar para este pequeño tutorial.

Supongamos que estamos montando un servidor compartido donde vamos a estar alojando sitios para diferentes personas lo conveniente seria crear host virtuales alojados en las carpetas personales de cada usuario.

1. Crear un usuario

Procedemos a crear al usuario que vamos a asociar al dominio del sitio.

 sudo adduser misitio 

2. Crear la estructura de directorios.

Ahora creamos la carpeta public_html que es donde se alojaran los archivos del sitio y a lo que se tendrá acceso desde el navegador web.

 sudo mkdir /home/misitio/public_html 

La carpeta la creamos como administradores por lo tanto tenemos que cambiar al propietario por el usuario final que en este caso seria misitio.

 sudo chown -R misitio:misitio /home/misitio/public_html 

Posteriormente modificamos los permisos.

 sudo chmod -R 755 /home/misitio 

3. Configurar apache

Para modificar la configuración de apache abrimos el siguiente archivo: /etc/apache2/apache2.conf

sudo gedit /etc/apache2/apache2.conf

Buscamos la directiva <Directory /var/www/> la cual se encarga de denegar el acceso fuera de /var/www/ y agregamos una estructura similar para la carpeta /home/misitio/public_html/ en la opción AllowOverride colocamos All para que Apache tome en cuanta la configuración utilizando el archivo .htaccess

 <Directory /var/www/>
	Options Indexes FollowSymLinks
	AllowOverride None
	Require all granted
</Directory>

<Directory /home/codedrinks/public_html/>
	Options Indexes FollowSymLinks
	AllowOverride All
	Require all granted
</Directory>

4. Crear un host virtual

Hasta aquí ya tenemos la estructura para el sitio, ahora tenemos que crear el host virtual para que podamos acceder a la página utilizando el nombre de dominio que deseemos.

Vamos a tomar como base el archivo por default que crea Apache, dicho archivo se ubica en la siguiente ruta /etc/apache2/sites-available/000-default.conf  al cual le haremos una copia y lo nombraremos con en dominio del sitio que se desea configurar

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

Ya que tenemos la copia abrimos el archivo y lo configuramos con la información del sitio.

 sudo gedit /etc/apache2/sites-available/misitio.com.conf 

El archivo al final tendria que quedar así:

<VirtualHost *:80>
    ServerName misitio.com
    ServerAlias www.misitio.com
    ServerAdmin webmaster@misitio.com
    DocumentRoot /home/misitio/public_html
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

5. Habilitar el nuevo host virtual

Ya que hemos creado nuestro archivo de host virtual tenemos que habilitarlo, para ello Apache incluye algunos helpers como a2ensite para habilitar un sitio o a2dissite para deshabilitar un sitio.

sudo a2ensite misitio.com.conf

Ahora tenemos que reiniciar nuestro servidor para que los cambios se apliquen.

sudo service apache2 restart

 

6. Configurar el archivo hosts (Opcional)

Si tenemos un servidor DNS apuntando a nuestro servidor omitimos la configuración del archivo hosts debido a que el servidor DNS se encargaría de resolver nuestra dirección. En caso de que no contemos con un servidor DNS abrimos el archivo hosts

sudo gedit /etc/hosts

y agregamos las siguientes lineas

127.0.0.1 misitio.com
127.0.0.2 www.misitio.com

7. Crear el archivo index.html

Creamos el archivo html que se va a mostrar cuando se acceda al sitio, se llamará index.html y lo guardaremos dentro de la carpeta public_html

<html>
  <head>
    <title>Bienvenido a mi página!</title>
  </head>
  <body>
    <h1>Felicidades el host virtual trabaja de forma correcta!!!</h1>
  </body>
</html>

Ahora solo abrimos el navegador y escribimos el nombre de nuestro sitio: www.misitio.com 0 misitio.com para que nos muestre la página que acabamos de crear.