Tutorial

Cómo configurar hosts virtuales de Apache en Ubuntu 18.04 [Guía de inicio rápido]

Published on March 5, 2020
Español
Cómo configurar hosts virtuales de Apache en Ubuntu 18.04 [Guía de inicio rápido]

Introducción

En este tutorial encontrará los pasos para configurar varios dominios y sitios web usando hosts virtuales de Apache en un servidor de Ubuntu 18.04. Durante este proceso, aprenderá a presentar diferentes contenidos a diferentes visitantes dependiendo de los dominios que soliciten.

Para acceder a una versión más detallada de este tutorial, con explicaciones adicionales de cada paso, consulte Cómo configurar hosts virtuales de Apache en Ubuntu 18.04.

Requisitos previos

Para completar este tutorial, necesitará acceso a lo siguiente en un servidor de Ubuntu 18.04:

  • Un usuario sudo en su servidor
  • Un servidor web Apache2, que puede instalar con sudo apt install apache2

Paso 1: Crear la estructura de directorios

Primero crearemos una estructura de directorios que albergarán los datos del sitio que presentaremos a los visitantes en nuestro directorio de Apache de nivel superior. Usaremos nombres de dominio de ejemplo, resaltados a continuación. Debería sustituirlos por sus nombres de dominio reales.

  1. sudo mkdir -p /var/www/example.com/public_html
  2. sudo mkdir -p /var/www/test.com/public_html

Paso 2: Conceder permisos

Ahora deberíamos cambiar los permisos de nuestro usuario no root actual para poder modificar los archivos.

  1. sudo chown -R $USER:$USER /var/www/example.com/public_html
  2. sudo chown -R $USER:$USER /var/www/test.com/public_html

Adicionalmente, nos aseguraremos de que el acceso de lectura se permita para el directorio web general y la totalidad de los archivos y las carpetas que contiene, de forma que las páginas se presenten correctamente.

  1. sudo chmod -R 755 /var/www

Paso 3: Crear páginas de demostración para cada host virtual

Crearemos contenido para presentar; crearemos una página de demostración index.html para cada sitio. Podemos abrir un archivo index.html en un editor de texto para nuestro primer sitio usando nano, por ejemplo.

  1. nano /var/www/example.com/public_html/index.html

En este archivo, cree un documento HTML específico para el dominio, como se muestra a continuación:

/var/www/example.com/public_html/index.html
<html>
  <head>
    <title>Welcome to Example.com!</title>
  </head>
  <body>
    <h1>Success! The example.com virtual host is working!</h1>
  </body>
</html>

Guarde y cierre el archivo, y luego cópielo para usarlo como la base de nuestro segundo sitio:

  1. cp /var/www/example.com/public_html/index.html /var/www/test.com/public_html/index.html

Abra el archivo y modifique la información pertinente:

  1. nano /var/www/test.com/public_html/index.html
/var/www/test.com/public_html/index.html
<html>
  <head>
    <title>Welcome to Test.com!</title>
  </head>
  <body> <h1>Success! The test.com virtual host is working!</h1>
  </body>
</html>

Guarde y cierre este archivo también.

Paso 4: Crear nuevos archivos de host virtual

Apache cuenta con un archivo de host virtual predeterminado llamado 000-default.conf, que usaremos como plantilla. Lo copiaremos para crear un archivo de host virtual para cada uno de nuestros dominios.

Cree el primer archivo de host virtual

Comience copiando el archivo para el primer dominio:

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

Abra el nuevo archivo en su editor (usaremos nano) con privilegios root:

  1. sudo nano /etc/apache2/sites-available/example.com.conf

Personalizaremos este archivo para nuestro propio dominio. Modifique el texto resaltado a continuación conforme a sus requisitos.

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

En este momento, guarde y cierre el archivo.

Copiar el primer host virtual y aplicar personalización para el segundo dominio

Ahora que establecimos nuestro primer archivo de host virtual, podemos crear el segundo copiando ese archivo y aplicándole ajustes según sea necesario.

Comience copiándolo:

  1. sudo cp /etc/apache2/sites-available/example.com.conf /etc/apache2/sites-available/test.com.conf

Abra el nuevo archivo con privilegios root en su editor:

  1. sudo nano /etc/apache2/sites-available/test.com.conf

Ahora deberá modificar todos los datos para que hagan referencia a su segundo dominio. El archivo final debería tener un aspecto similar a este, con el texto resaltado correspondiente a la información pertinente de su dominio.

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

Guarde y cierre el archivo cuando termine.

Paso 5: Habilitar los nuevos archivos de host virtual

Una vez creados nuestros archivos de host virtual, debemos habilitarlos. Usaremos la herramienta a2ensite para hacerlo.

  1. sudo a2ensite example.com.conf
  2. sudo a2ensite test.com.conf

Deshabilite el sitio predeterminado definido en 000-default.conf:

  1. sudo a2dissite 000-default.conf

Cuando termine, deberá reiniciar Apache para que estos cambios surtan efecto y usar systemctl status para verificar que el reinicio se haya realizado correctamente.

  1. sudo systemctl restart apache2

Su servidor debería estar ahora configurado para presentar dos sitios web.

Paso 6: Configurar el archivo de hosts locales (opcional)

Si no usó nombres de dominios reales de los que sea propietario para probar este procedimiento y empleó algunos dominios de ejemplo en su lugar, puede probar su trabajo modificando temporalmente el archivo de hosts en su computadora local.

En una máquina local con Mac o Linux, escriba lo siguiente:

  1. sudo nano /etc/hosts

En el caso de una máquina local con Windows, encontrará las instrucciones sobre cómo alterar el archivo de hosts aquí.

Usando los dominios que se utilizan en esta guía, y sustituyendo el IP de su servidor por el texto your_server_IP, su archivo deberá tener este aspecto:

/etc/hosts
127.0.0.1   localhost
127.0.1.1   guest-desktop
your_server_IP example.com
your_server_IP test.com

Guarde y cierre el archivo. Esto dirigirá cualquier solicitud de example.com y test.com en su computadora y la enviará a su servidor.

Paso 7: Pruebe sus resultados

Ahora que configuró sus hosts virtuales, puede probar su configuración dirigiéndose a los dominios que estableció en su navegador web:

http://example.com

Debería ver una página con este aspecto:

Ejemplo de host virtual de Apache

También puede visitar su segunda página y ver el archivo que creó para su segundo sitio.

http://test.com

Prueba de host virtual de Apache

Si ambos sitios funcionan como se espera, habrá configurado dos hosts virtuales en el mismo servidor.

Si ajustó el archivo de hosts de su equipo doméstico, elimine las líneas que añadió.

Tutoriales relacionados

Aquí se ofrecen enlaces a más guías adicionales relacionadas con este tutorial:

Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.

Learn more about us


About the authors

Still looking for an answer?

Ask a questionSearch for more help

Was this helpful?
 
1 Comments


This textbox defaults to using Markdown to format your answer.

You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!

Hola, de antemano gracias por el tutorial, esta muy bueno, ya lo he usado anteriormente el procedimiento con varios sitios que tengo en linea, el problema que ahora hice un tercer sitio con lo mismo, la misma configuración y todo, pero esta vez cuando quiero acceder al sitio aparece el mensaje de Error 403 Forbidden, que no tengo permisos para acceder a este recurso, ya verifique la configuración del archivo apache2.conf y el archivo de mi sitio.conf en sites-available y todo está como en los dos sitios que hice hace un par de meses atrás, también verifique los punteros y registros del DNS y estan en orden, las carpetas de todos los sitios estan con sus permisos respectivos 755 y hasta he probado en ponerlos en 777, pero aún asi sigue el mismo error, alguna idea de que otra cosa debería probar o configurar?

Cuando reviso el LOG aparece el siguiente mensaje: [Thu Nov 05 18:39:00.818398 2020] [ssl:error] [pid 28745] [client 205.185.123.173:55609] AH02219: access to /var/www/misitio.com/public_html/ failed, reason: SSL connection required

Try DigitalOcean for free

Click below to sign up and get $200 of credit to try our products over 60 days!

Sign up

Join the Tech Talk
Success! Thank you! Please check your email for further details.

Please complete your information!

Get our biweekly newsletter

Sign up for Infrastructure as a Newsletter.

Hollie's Hub for Good

Working on improving health and education, reducing inequality, and spurring economic growth? We'd like to help.

Become a contributor

Get paid to write technical tutorials and select a tech-focused charity to receive a matching donation.

Welcome to the developer cloud

DigitalOcean makes it simple to launch in the cloud and scale up as you grow — whether you're running one virtual machine or ten thousand.

Learn more
DigitalOcean Cloud Control Panel