En este tutorial vamos a conocer los pasos necesarios para instalar un dominio en un servidor Apache con VirtualHost, indicado para servir varios dominios desde un servidor, con Ubuntu.
El Virtual Host de Apache es una funcionalidad que nos permite alojar varios dominios en un solo servidor web, algo muy habitual en el día a día de cualquier administrador de sistemas. Nosotros vamos a ver en esta guía los pasos necesarios para poder configurarlo
Hay que decir no obstante que este proceso es delicado y la seguridad es muy importante, ya que vamos a estar abiertos a Internet. No pretendemos dar una guía sobre seguridad, sino centrarnos en lo necesario para hacer funcionar Apache con varios dominios en un servidor.
Usaremos Ubuntu en su versión 16.04.
Instalar Apache
Comenzamos instalando el servidor web Apache en nuestro servidor. Para ello corremos los siguientes comandos:
apt-get update
Y luego la instalación de Apache:
apt-get install apache2
Crear la carpeta donde vamos a alojar los archivos de la web
Comenzaremos haciendo esta operación para un dominio, pero será básicamente la misma para cada dominio que quieras alojar.
Vamos a suponer que tienes el dominio example.com y que lo quieres alojar en este servidor. Primero debemos crear la carpeta donde se van a colocar los archivos, que suele estar dentro de "/var/www/" y luego el nombre del dominio, seguida del directorio que quieras usar como "document root" (carpeta raíz pública para los archivos del dominio). Quedará para example.com con algo como "/var/www/example.com/httpdocs". La haces con el siguiente comando:
mkdir /var/www/example.com/httpdocs -p
Ahora esa carpeta que acabamos de crear pertenece al usuario "root", pero el usuario de Apache suele ser "www-data" en un sistema basado en Debian como Ubuntu. Vamos a pasar la propiedad de las carpetas al nuevo usuario.
chown www-data:www-data /var/www/example.com -R
El usuario www-data es un usuario que crea Apache pero NO es el usuario DE Apache. Apache crea a este usuario para que las personas que accedan a una web (usuario comunes) naveguen esa web SIN utilizar un usuario del sistema con permisos especiales. www-data es un usuario de "lectura" pero no escribe ni administra. Quien lo hace, es root.
Entonces, tu tienes una carpeta cuyo propietario es juan. Esto significa que juan puede borrar la carpeta completa, por ejemplo. Entonces si el propietario es www-data significa que www-data puede borrar la carpeta completa. Por lo tanto, si www-data es cualquier usuario que navega una web y, el propietario de una carpeta puede borrarla; si www-data es propietario significa que CUALQUIER USUARIO QUE NAVEGA UNA WEB PUEDE BORRAR LA CARPETA.
Los usuarios que NO son dueños de un directorio o archivo, son clasificado como "otros usuarios" y están representados por el tercer grupo de permisos. Un directorio con permisos 755 equivale a: rwx r-x r-x. Primer grupo (rwx = 4+2+1 = 7), dueño. Segundo grupo (r-x = 4+1 = 5), el grupo de usuarios y tercer grupo, "otros usuarios" (igual al anterior).
Al dar permisos 755 (con las instrucciones que aparecen en el siguiente paso) YA estás permitiendo a www-data que lea acceda a la carpeta y la lea. No necesitas nada más. Por eso, el paso del chown es innecesario. Y es inseguro porque la carpeta raíz de una web a disposición absoluta de cualquier usuario anónimo.
Por otra parte, obliga al desarrollador a tener que convertirse en www-data para poder guardar los archivos de la web en esa carpeta. Lo lógico es que el propietario sea el usuario desarrollador, es lo más seguro ;) y sino, que quede a nombre de root, que es una cagada pero al menos no es un riesgo.
En cuanto a los permisos de las carpetas vamos a modificarlos también para asignarle los que deberían tener:
chmod -R 755 /var/www/example.com
Crear un documento para servir en la carpeta httpdocs
Solo para probar que todo nos funciona correctamente, vamos a crear un archivo index.html que nos servirá como prueba.
echo 'test de apache funcionando' > /var/www/example.com/httpdocs/index.html
Eso creará un archivo index.html con un texto "test de apache funcionando" en la carpeta que acabamos de crear como "document root".
Creando el Virtual Host
Para crear el host virtual vamos a apoyarnos en un archivo de configuración predeterminado de Apache. Es tan sencillo como copiarlo en la carpeta adecuada. El archivo en cuestión está en la ruta "/etc/apache2/sites-available/000-default.conf" y tenemos que copiarlo como configuración para el dominio que vamos a servir, en nuestro caso "example.com".
cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/example.com.conf
No nos vale el contenido del fichero tal como está, así que lo tendremos que editar, colocando los datos de nuestro propio dominio, correo del administrador, carpeta elegida como document root, etc.
vim /etc/apache2/sites-available/example.conf
Verás que tiene mucho código el archivo de configuración, pero la mayoría son comentarios que podrías incluso borrar. Además tienes que agregar un nombre al servidor "ServerName" con el nombre de tu dominio y si quieres un "ServerAlias".
Te podría quedar más o menos de esta manera:
<VirtualHost *:80>
ServerName example.com
ServerAlias www.example.com
ServerAdmin webmaster@desarrolloweb.com
DocumentRoot /var/www/example.com/httpdocs
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Esto no acaba aquí, tienes que habilitar el dominio con el comando "a2ensite" y el nombre del archivo de configuración del Virtual Host que acabamos de crear para tu dominio, que quieras decirle a Apache que vas a servir.
a2ensite example.conf
Por último vamos a reiniciar Apache.
service apache2 reload
Con esto hemos terminado la configuración de Apache. Tendrás que repetir este proceso con los otros Host Virtuales que quieras servir desde este mismo servidor.
Acceder al dominio y probar el resultado
Para acceder al dominio que acabas de configurar necesitarás configurar los registros de DNS para el dominio que acabas de crear, asociando los registros A a la IP de tu servidor. Es un paso sencillo, pero que no haces dentro de la consola, sino con el registrador donde tengas tu dominio. Cambia mucho dependiendo qué empresa es la que usas para comprar tus dominios.
Pero si no tienes dominio o no sabes cómo hacer este paso, otra alternativa es falsear la DNS a través del archivo "hosts" de tu ordenador. Esto lo consigues colocando en el archivo "hosts" la IP del servidor y el nombre del dominio que has configurado en tu virtual host en Apache. Para saber cómo alterar tu archivo Hosts, lee el artículo Modificar el archivo de Hosts en Windows, Linux y Mac.
Una vez realizada una de estas dos alternativas (modificar las DNS reales de un dominio en el proveedor donde lo hayas registrado o modificar el archivo hosts) podrás acceder a la dirección del dominio a través de tu navegador.
http://example.com
Para verificar que está funcionando tienes que recibir el contenido que colocaste en tu index.html, que si recuerdas era algo como "test de apache funcionando". Si ves otra página diferente es que no estás accediendo a la carpeta correcta, en cuyo caso deberías comprobar que el archivo de configuración del Virtual Host está correcto y tiene los nombres de dominio bien, las carpetas del servidor a los caminos correctos, etc.
Con esto hemos terminado nuestro trabajo con éxito. Confío en que puedas hacer este proceso por tu cuenta y configurar un dominio tú mismo en el servidor con el que estás trabajando.
En DesarrolloWeb.com hay otros artículos interesantes que puedes leer para aprender a hacer otras cosas que seguro te estás preguntando, como instalar PHP en el servidor Linux, o la configuración de otras variables del Virtual Host. Usa el buscador interno de DesarrolloWeb.com para encontrar otra serie de artículos relacionados.
Miguel Angel Alvarez
Fundador de DesarrolloWeb.com y la plataforma de formación online EscuelaIT. Com...