¿Qué es el servidor virtual de Apache?
Alojamiento virtual le permite ejecutar múltiples sitios web desde un solo servidor físico o servidor privado virtual. Hay dos tipos de servidores virtuales en Apache:
- Alojamiento virtual basado en IP – cada sitio web individual en el servidor Apache utiliza una dirección IP única y diferente.
- Hosts virtuales basados en nombres – le permite agregar múltiples dominios usando una sola dirección IP.
Este tutorial le muestra cómo configurar Apache Virtual Hosts en un sistema Ubuntu 18.04.
Requisitos previos
- Línea de comando/ventana de terminal
- Usuario con root o sudo privilegios
- Un dominio que apunta a una IP de servidor público
- Servidor web Apache en Ubuntu instalado, configurado y activo
- Cortafuegos activado
Configurar múltiples dominios en una sola IP
Apache Virtual Host le permite maximizar sus recursos al configurar un sitio web. Con este poderoso software, puede usar un solo servidor y una sola dirección IP para alojar varios dominios diferentes.
Antes de poder configurar Apache Virtual Hosts, debe instalar el servidor web Apache. Para hacerlo, ejecute el comando:
sudo apt-get install apache2
Si tiene problemas para configurar el servidor web, consulte nuestro tutorial detallado sobre la instalación de Apache en Ubuntu.
Cómo configurar un host virtual basado en nombres
Basado en el nombre El alojamiento virtual permite al cliente informar el nombre de host al servidor, como un elemento del encabezado HTTP. Esta característica significa que una máquina puede albergar varios sitios web que comparten la misma dirección IP.
Paso 1:crear una estructura de directorio
Cada host virtual debe tener un directorio para almacenar datos de host virtual. Cree directorios y una estructura de directorios en la siguiente ubicación /var/www . En nuestro ejemplo, hemos creado phxnap1.com y phxnap2.com directorios, uno para cada nombre de dominio.
1. Ingrese el siguiente comando y reemplace el dominio de ejemplo con sus nombres de dominio:
sudo mkdir -p /var/www/phxnap1.com/public_html
sudo mkdir -p /var/www/phxnap2.com/public_html
Dentro de los directorios, también creamos public_html . Estos directorios van a almacenar archivos de sitios web para los dominios.
2. A continuación, cree un ejemplo index.html página para cada dominio, usando nano o tu editor de texto favorito. Comience con el primer dominio:
nano /var/www/phxnap1.com/public_html/index.html
3. Agregue el siguiente código HTML de muestra:
<html>
<head>
<title>Welcome to phoenixNAP 1!</title>
</head>
<body>
<h1>Well done! Everything seems to be working on your first domain!</h1>
</body>
</html>
4. Guarde y salga del archivo.
5. A continuación, cree una página de muestra para el segundo dominio:
nano /var/www/phxnap2.com/public_html/index.html
6. Agregue las siguientes líneas al archivo:
<html>
<head>
<title>Welcome to phoenixNAP 2!</title>
</head>
<body>
<h1>Well done! Everything seems to be working on your second domain!</h1>
</body>
</html>
7. Guarde y salga del segundo archivo HTML.
8. Para evitar cualquier problema de permisos, modifique la propiedad del directorio raíz de su documento a www-data . El comando chown es útil en este caso:
sudo chown –R www-data:www-data /var/www/phxnap1.com
sudo chown –R www-data:www-data /var/www/phxnap2.com
Ahora ha cambiado con éxito la propiedad del directorio al usuario de Apache .
Paso 2:Cree un archivo de configuración de host virtual
Los archivos de configuración de Apache Virtual Host se almacenan en /etc/apache2/sites-available directorio.
1. Para crear un archivo de configuración básica para su primer dominio, ingrese la información del dominio en el comando:
sudo nano /etc/apache2/sites-available/phxnap1.com.conf
2. Agregue el siguiente bloque de configuración para crear un archivo de configuración básico. Este ejemplo usa el primer dominio de prueba, phxnap1.com . Asegúrese de ingresar el dominio correcto para su sitio web:
<VirtualHost *:80>
ServerAdmin [email protected]
ServerName phxnap1.com
ServerAlias www.phxnap1.com
DocumentRoot /var/www/phxnap1.com/public_html
ErrorLog ${APACHE_LOG_DIR}/phxnap1.com-error.log
CustomLog ${APACHE_LOG_DIR}/phxnap1.com-access.log combined
</VirtualHost>
- Nombre del servidor – representa el dominio
- Alias del servidor – representa todos los demás dominios, como los subdominios
- Raíz del documento – el directorio utilizado por Apache para servir archivos de dominio
- Registro de errores, Registro personalizado – designa la ubicación de los archivos de registro
No hay un formato establecido. Sin embargo, nombrar sus archivos de configuración según el nombre de dominio es una "práctica recomendada".
4. Una vez que haya editado el archivo de configuración para el primer dominio, repita el proceso para el resto. En nuestro caso, ejecutaremos:
sudo nano /etc/apache2/sites-available/phxnap2.com.conf
5. Luego, agregue el bloque de configuración como en el ejemplo anterior, asegurándose de cambiar los valores para phxnap2.com :
<VirtualHost *:80>
ServerAdmin [email protected]
ServerName phxnap2.com
ServerAlias www.phxnap2.com
DocumentRoot /var/www/phxnap2.com/public_html
ErrorLog ${APACHE_LOG_DIR}/phxnap2.com-error.log
CustomLog ${APACHE_LOG_DIR}/phxnap2.com-access.log combined
</VirtualHost>
Paso 3:habilite los archivos de configuración del host virtual
Para habilitar el archivo de host virtual, cree un enlace simbólico desde el archivo de host virtual al directorio de sitios habilitados. Apache2 lee este archivo cuando mira fijamente.
1. Utilice el ayudante de a2ensite para habilitar el archivo de host virtual con el comando:
sudo a2ensite phxnap1.com
La salida aparecerá como:
2. Repita el proceso para el segundo dominio escribiendo:
sudo a2ensite phxnap2.com
3. Luego, verifique que la sintaxis del archivo de configuración sea correcta usando el comando:
sudo apachectl configtest
El mensaje en la terminal confirmará que la sintaxis es correcta:“Syntax OK”
4. Reinicie Apache2 para que se apliquen los cambios:
sudo systemctl restart apache2
5. Lo único que queda por hacer es ir a un navegador web y acceder a sus sitios web. Basado en index.html archivo que creamos anteriormente, debería aparecer el mensaje apropiado para cada dominio.
phxnap1.com
phxnap2.com
Paso 4:configurar el cortafuegos (opcional)
Modifique la configuración de su firewall para mejorar la seguridad creando una regla para habilitar SSH en Ubuntu:
sudo ufw allow OpenSSH
Agregue las reglas para permitir el acceso a Apache.
sudo ufw allow in “Apache Full”
A continuación, habilite el cortafuegos.
sudo ufw enable
Si ve un mensaje que dice "El comando puede interrumpir las conexiones SSH existentes". Presiona y
. Si el cortafuegos funciona correctamente, debería ver "El cortafuegos está activo y habilitado al iniciar el sistema".