El alojamiento virtual es un método para alojar múltiples sitios web en un solo servidor. Hay dos tipos de alojamiento virtual: alojamiento virtual basado en nombres y alojamiento virtual basado en IP. El alojamiento virtual basado en IP es una técnica para aplicar diferentes directivas según la dirección IP y el puerto en el que se recibe una solicitud. Puede asignar una IP separada para cada dominio en un solo servidor utilizando alojamiento virtual basado en IP. En su mayoría, esto se usa para alojar diferentes sitios web en diferentes puertos o IP.
Aquí vamos a alojar “www.ipvhost1.com” en la IP “192.168.1.227”, “www.ipvhost2.com” en la IP “192.168.1.228” y “www.portvhost.com” en la IP “192.168.1.228” con puerto 8080.
Requisitos
- SO: Servidor Ubuntu 14.04 con Apache instalado
- Dirección IP1: 192.168.1.227
- Dirección IP2: 192.168.1.228
- Dominio: www.ipvhost1.com
- Dominio: www.ipvhost2.com
- Dominio: www.portvhost.com
Cree múltiples direcciones IP en una sola interfaz de red
Para configurar el alojamiento virtual basado en IP, debe tener más de una dirección IP asignada a su máquina Linux. La configuración de varias direcciones IP en una sola interfaz de red se denomina alias de IP. El alias de IP es muy útil si solo tiene una tarjeta de interfaz de red.
Para hacer esto, debe editar el archivo «/etc/network/interfaces».
sudo nano /etc/network/interfaces
Agregue las siguientes líneas:
auto eth0 iface eth0 inet static address 192.168.1.227 netmask 255.255.255.0 gateway 192.168.1.1 dns-nameservers 8.8.8.8 auto eth0:1 iface eth0:1 inet static address 192.168.1.228 netmask 255.255.255.0
Guarde y cierre el archivo, luego reinicie el servicio de red para que estos cambios surtan efecto.
sudo /etc/init.d/networking restart sudo ifup eth0:1
Configurar varias instancias de Apache
De forma predeterminada, Apache escucha en el puerto 80. Para el alojamiento virtual basado en puertos, debe indicarle a Apache que escuche la IP «192.168.1.227» y «192.168.1.228» en el puerto 80 y la IP «192.168.1.228» en el puerto 8080.
Para configurar varios puertos, debe editar «/etc/apache2/ports.conf».
sudo nano /etc/apache2/ports.conf
Agregue la siguiente línea:
Listen 192.168.1.227:80 Listen 192.168.1.228:80 Listen 192.168.1.228:8080
Guarde y cierre el archivo, luego reinicie Apache para que estos cambios surtan efecto.
sudo /etc/init.d/apache2 restart
Crear directorios virtuales
Primero, debe crear una estructura de directorios que contenga las páginas web. Este directorio se conoce como DocumentRoot para el dominio.
Cree tres directorios para los sitios web «www.ipvhost1.com», «www.ipvhost2.com» y «www.portvhost.com» en el directorio DocumentRoot predeterminado de Apache.
sudo mkdir -p /var/www/html/www.ipvhost1.com sudo mkdir -p /var/www/html/www.ipvhost2.com sudo mkdir -p /var/www/html/www.portvhost.com
Cree páginas web de prueba para cada host virtual
Cree un archivo «index.html» para cada sitio web que identifique IP y puertos específicos.
Cree un archivo index.html para el host virtual «www.ipvhost1.com».
sudo nano /var/www/html/www.ipvhost1.com/index.html
Agrega el siguiente contenido.
<html> <head> <title>www.ipvhost1.com</title> </head> <body> <h1>The ipvhost1.com ip virtual host is working!</h1> </body> </html>
Guarde y cierre el archivo cuando haya terminado.
Cree un archivo «index.html» para el host virtual «www.ipvhost2.com».
sudo nano /var/www/html/www.ipvhost2.com/index.html
Agrega el siguiente contenido.
<html> <head> <title>www.ipvhost2.com</title> </head> <body> <h1>The ipvhost2.com ip virtual host is working!</h1> </body> </html>
Guarde y cierre el archivo cuando haya terminado.
Cree un archivo «index.html» para el host virtual «www.portvhost.com».
sudo nano /var/www/html/www.portvhost.com/index.html
Agrega el siguiente contenido.
<html> <head> <title>www.portvhost.com</title> </head> <body> <h1>The portvhost.com port virtual host is working!</h1> </body> </html>
Guarde y cierre el archivo cuando haya terminado.
Configuración de propiedad y permisos
De forma predeterminada, el servicio Apache se ejecuta como un usuario de «www-data» en Ubuntu. Debe cambiar la propiedad de estos tres directorios virtuales a «www-data» para que Apache pueda leer y escribir datos.
Para hacer esto, ejecute:
sudo chown -R www-data:www-data /var/www/html/www.ipvhost1.com sudo chown -R www-data:www-data /var/www/html/www.ipvhost2.com sudo chown -R www-data:www-data /var/www/html/www.portvhost.com
Además, debe asegurarse de que el directorio raíz web de Apache (/var/www/html) sea legible para que todos puedan leer archivos de él.
sudo chmod -R 755 /var/www/html
Crear archivos de host virtual
De forma predeterminada, Apache viene con un archivo de host virtual predeterminado llamado «000-default.conf». Primero debe deshabilitar este archivo de host virtual.
Para hacer esto, ejecute el siguiente comando.
sudo a2dissite 000-default.conf
El siguiente paso es crear un archivo de configuración de host virtual para cada sitio web. El nombre de cada archivo de configuración debe terminar en “.conf”.
Cree un archivo de host virtual para el sitio web «www.ipvhost1.com».
sudo nano /etc/apache2/sites-available/www.ipvhost1.com.conf
Agrega el siguiente contenido.
<VirtualHost 192.168.1.227:80> ServerAdmin admin@ipvhost1.com ServerName www.ipvhost1.com DocumentRoot /var/www/html/www.ipvhost1.com ErrorLog ${APACHE_LOG_DIR}/www.ipvhost1.com_error.log CustomLog ${APACHE_LOG_DIR}/www.ipvhost1.com_access.log combined </VirtualHost>
Guarde y cierre el archivo.
Cree un archivo de host virtual para el sitio web «www.ipvhost2.com».
sudo nano /etc/apache2/sites-available/www.ipvhost2.com.conf
Agrega el siguiente contenido.
<VirtualHost 192.168.1.228:80> ServerAdmin admin@ipvhost2.com ServerName www.ipvhost2.com DocumentRoot /var/www/html/www.ipvhost2.com ErrorLog ${APACHE_LOG_DIR}/www.ipvhost2.com_error.log CustomLog ${APACHE_LOG_DIR}/www.ipvhost2.com_access.log combined </VirtualHost>
Guarde y cierre el archivo.
Cree un archivo de host virtual para el sitio web «www.portvhost.com».
sudo nano /etc/apache2/sites-available/www.portvhost.com.conf
Agrega el siguiente contenido.
<VirtualHost 192.168.1.228:8080> ServerAdmin admin@portvhost.com ServerName www.portvhost.com DocumentRoot /var/www/html/www.portvhost.com ErrorLog ${APACHE_LOG_DIR}/www.portvhost.com_error.log CustomLog ${APACHE_LOG_DIR}/www.portvhost.com_access.log combined </VirtualHost>
Guarde y cierre el archivo.
Después de crear los archivos de host virtual, debe habilitar los hosts virtuales.
Puedes hacer esto ejecutando.
sudo a2ensite www.ipvhost1.com.conf sudo a2ensite www.ipvhost2.com.conf sudo a2ensite www.portvhost.com.conf
Finalmente, reinicie el servicio Apache.
sudo /etc/init.d/apache2 restart
Prueba de hosts virtuales
Ahora es el momento de probar IP Virtualhost. En una computadora, abra su navegador web y navegue a las URL «https://192.168.1.227:80» y «https://192.168.1.228:80». Debería ver páginas de demostración de muestra para alojamiento virtual basado en IP que se ven así:
De manera similar, para probar Port Virtualhost, abra su navegador web y navegue a la URL «https://192.168.1.228:8080». Debería ver una página de demostración de muestra para el alojamiento virtual basado en puertos que se ve así:
Conclusión
En esta publicación, mostré el procedimiento paso a paso para crear y habilitar un host virtual basado en IP y puerto en el servidor web Apache. Puede configurar fácilmente muchos dominios en el mismo servidor.