Cómo configurar hosts virtuales Apache en Ubuntu 18.04 LTS
¿Qué son los hosts virtuales Apache?
El término Host virtual se refiere al método de ejecutar más de un sitio web, como host1.dominio.com, host2.dominio.com o www.dominio1.com, www.dominio2.com, etc., en un solo sistema. Hay dos tipos de alojamiento virtual en Apache: alojamiento virtual basado en IP y alojamiento virtual basado en nombres. Con el alojamiento virtual basado en IP, puede alojar varios sitios web o dominios en el mismo sistema, pero cada sitio web/dominio tiene una dirección IP diferente. Con el alojamiento virtual basado en nombres, puede alojar varios sitios web/dominios en la misma dirección IP. El alojamiento virtual puede resultar útil si desea alojar varios sitios web y dominios desde un único servidor físico o VPS. Espero que tengas una idea básica de los hosts virtuales Apache. Hoy veremos cómo configurar hosts virtuales Apache en Ubuntu 18.04 LTS.
Configurar hosts virtuales Apache en Ubuntu 18.04 LTS
La dirección IP de mi cuadro de prueba es 192.168.225.22 y el nombre de host es ubuntuserver.
Primero, veremos cómo configurar hosts virtuales basados en nombres en el servidor web Apache.
Configurar hosts virtuales basados en nombres
1. Instalar el servidor web Apache
Asegúrese de haber instalado el servidor web Apache. Para instalarlo en Ubuntu, ejecute:
sudo apt-get install apache2
Una vez instalado Apache, pruebe si funciona o no navegando por la página de prueba de Apache en el navegador.
Abra su navegador web y apúntelo a http://IP_Address o http://localhost. Deberías ver una página como la siguiente.
¡Bien! ¡El servidor web Apache está funcionando!
2. Crear directorio web para cada host
Voy a crear dos hosts virtuales, a saber, ostechnix1.lan y ostechnix2.lan.
Creemos un directorio para el primer host virtual ostechnix1.lan. Este directorio es necesario para almacenar los datos de nuestros hosts virtuales.
Para hacerlo, ingrese:
sudo mkdir -p /var/www/html/ostechnix1.lan/public_html
Asimismo, cree un directorio para el segundo host virtual ostechnix2.lan como se muestra a continuación.
sudo mkdir -p /var/www/html/ostechnix2.lan/public_html
Los dos directorios anteriores son propiedad del usuario root. Necesitamos cambiar la propiedad al usuario normal.
Para hacerlo, ejecute:
sudo chown -R $USER:$USER /var/www/html/ostechnix1.lan/public_html
sudo chown -R $USER:$USER /var/www/html/ostechnix2.lan/public_html
Aquí, $USER se refiere al usuario que ha iniciado sesión actualmente.
A continuación, configure los permisos de lectura para el directorio raíz de Apache, es decir, /var/www/html/ usando el comando:
sudo chmod -R 755 /var/www/html/
Hacemos esto porque ya creamos un directorio separado para cada host virtual para almacenar sus datos. Así que hicimos que el directorio raíz de Apache sea de solo lectura para todos los usuarios excepto el usuario raíz.
Hemos creado los directorios necesarios para almacenar datos de cada host virtual y configuramos los permisos adecuados. Ahora es el momento de crear algunas páginas de muestra que se entregarán desde cada host virtual.
3. Cree páginas web de demostración para cada host
Creemos una página de muestra para el sitio ostechnix1.lan. Para hacerlo, ejecute:
sudo vi /var/www/html/ostechnix1.lan/public_html/index.html
Agregue las siguientes líneas en él:
<html>
<head>
<title>www.ostechnix.lan</title>
</head>
<body>
<h1>Hello, This is a test page for ostechnix1.lan website</h1>
</body>
</html>
Guarde y cierre el archivo.
Asimismo, cree una página de muestra para el sitio ostechnix2.lan:
sudo vi /var/www/html/ostechnix2.lan/public_html/index.html
Agregue las siguientes líneas en él:
<html>
<head>
<title>www.ostechnix.lan</title>
</head>
<body>
<h1>Hello, This is a test page for ostechnix2.lan website</h1>
</body>
</html>
Guarde y cierre el archivo.
4. Crear archivo de configuración para cada host
A continuación, necesitamos crear archivos de configuración para cada host virtual. Primero, hagamos esto para el sitio ostechnix1.lan.
Copie el archivo de host virtual predeterminado llamado 000-default.conf contents a los nuevos archivos de host virtual como se muestra a continuación.
sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/ostechnix1.lan.conf
sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/ostechnix2.lan.conf
Tenga en cuenta que debe guardar todos los archivos de configuración con la extensión .conf al final; de lo contrario, no funcionará.
Ahora, modifique los archivos de configuración para que coincidan con nuestros hosts virtuales.
Edite el archivo ostechnix.lan1.conf:
sudo vi /etc/apache2/sites-available/ostechnix1.lan.conf
Edite/modifique las coincidencias de los valores ServerAdmin, ServerName, ServerAlias y DocumentRoot con el host virtual.
<VirtualHost *:80>
# The ServerName directive sets the request scheme, hostname and port that
# the server uses to identify itself. This is used when creating
# redirection URLs. In the context of virtual hosts, the ServerName
# specifies what hostname must appear in the request's Host: header to
# match this virtual host. For the default virtual host (this file) this
# value is not decisive as it is used as a last resort host regardless.
# However, you must set it for any further virtual host explicitly.
#ServerName www.example.com
ServerAdmin webmaster@ostechnix1.lan
ServerName ostechnix1.lan
ServerAlias www.ostechnix1.lan
DocumentRoot /var/www/html/ostechnix1.lan/public_html
Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
# error, crit, alert, emerg.
# It is also possible to configure the loglevel for particular
# modules, e.g.
#LogLevel info ssl:warn
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
For most configuration files from conf-available/, which are
# enabled or disabled at a global level, it is possible to
# include a line for only one particular virtual host. For example the
# following line enables the CGI configuration for this host only
# after it has been globally disabled with "a2disconf".
#Include conf-available/serve-cgi-bin.conf
</VirtualHost>
Guarde y cierre el archivo.
A continuación, edite el archivo ostechnix2.lan.conf:
sudo vi /etc/apache2/sites-available/ostechnix2.lan.conf
Haz los cambios necesarios.
<VirtualHost *:80>
# The ServerName directive sets the request scheme, hostname and port that
# the server uses to identify itself. This is used when creating
# redirection URLs. In the context of virtual hosts, the ServerName
# specifies what hostname must appear in the request's Host: header to
# match this virtual host. For the default virtual host (this file) this
# value is not decisive as it is used as a last resort host regardless.
# However, you must set it for any further virtual host explicitly.
#ServerName www.example.com
ServerAdmin webmaster@ostechnix2.lan
ServerName ostechnix2.lan
ServerAlias www.ostechnix2.lan
DocumentRoot /var/www/html/ostechnix2.lan/public_html
Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
# error, crit, alert, emerg.
# It is also possible to configure the loglevel for particular
# modules, e.g.
#LogLevel info ssl:warn
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
For most configuration files from conf-available/, which are
# enabled or disabled at a global level, it is possible to
# include a line for only one particular virtual host. For example the
# following line enables the CGI configuration for this host only
# after it has been globally disabled with "a2disconf".
#Include conf-available/serve-cgi-bin.conf
</VirtualHost>
Guarde/cierre el archivo.
5. Habilitar archivos de configuración de host virtual
Después de realizar los cambios necesarios, deshabilite el archivo de configuración del host virtual predeterminado, es decir, 000.default.conf, y habilite todos los archivos de configuración del host virtual recién creados como se muestra a continuación.
sudo a2dissite 000-default.conf
sudo a2ensite ostechnix1.lan.conf
sudo a2ensite ostechnix2.lan.conf
Reinicie el servidor web Apache para que los cambios surtan efecto.
sudo systemctl restart apache2
Eso es todo. Hemos configurado con éxito hosts virtuales en Apache. Sigamos adelante y comprobemos si están funcionando o no.
6. Probar hosts virtuales
Abra el archivo /etc/hosts en cualquier editor:
sudo vi /etc/hosts
Agregue todos sus sitios web/dominios virtuales uno por uno como se muestra a continuación.
[...]
192.168.225.22 ostechnix1.lan
192.168.225.22 ostechnix2.lan
[...]
Tenga en cuenta que si desea acceder a los hosts virtuales desde cualquier sistema remoto, debe agregar las líneas anteriores en el archivo /etc/hosts de cada sistema remoto.
Guarde y cierre el archivo.
Abra su navegador web y apúntelo a http://ostechnix1.lan o http://ostechnix2.lan.
Página de prueba de ostechnix1.lan:
Página de prueba de ostechnix2.lan:
¡Felicidades! Ahora puede acceder a todos sus sitios web. A partir de ahora, podrás subir los datos y servirlos desde diferentes sitios web.
Como habrás notado, hemos utilizado la misma dirección IP (es decir, 192.168.225.22) para alojar dos sitios web diferentes (http://ostechnix1.lan y http://ostechnix2.lan). Esto es lo que llamamos alojamiento virtual basado en nombres. Espero que esto ayude. Le mostraré cómo configurar el alojamiento virtual basado en IP en la siguiente guía. Hasta entonces, ¡estad atentos!
Recurso:
- Documentación del host virtual de Apache