1. Preparación del entorno
Ahora es el momento de unir todo. Hoy desplegaremos un servidor con varios hosts virtuales y les conectaremos HTTPS. Vamos a probar, depurar y configurar todo hasta el final.
Nuestra tarea
En este proyecto desplegaremos dos sitios en un único servidor web:
- example.com
- test.com
Para cada sitio configuraremos un host virtual, conectaremos HTTPS y además mostraremos los pasos de depuración y verificación del funcionamiento. ¿Listo? ¡Vamos allá!
Preparación
Antes de empezar, asegurémonos de que todo está configurado correctamente:
Ya tienes instalado un servidor web (Nginx o Apache).
Si usas Nginx:
sudo apt-get update sudo apt-get install nginxO Apache:
sudo apt-get update sudo apt-get install apache2
El paquete Certbot para trabajar con SSL está instalado.
Para Nginx:
sudo apt-get install certbot python3-certbot-nginxPara Apache:
sudo apt-get install certbot python3-certbot-apache
Tienes acceso al servidor donde están configurados los DNS para los dominios example.com y test.com, o puedes usar
/etc/hostspara pruebas.
2. Configuración del directorio para cada sitio
Comencemos creando los directorios y archivos para nuestros sitios.
Paso 1: Crear carpetas para los sitios
sudo mkdir -p /var/www/example.com
sudo mkdir -p /var/www/test.com
Paso 2: Crear archivos HTML de prueba
Vamos a crear un archivo HTML simple para cada sitio:
example.com
sudo nano /var/www/example.com/index.html
Contenido:
<!DOCTYPE html>
<html>
<head>
<title>¡Bienvenido a example.com!</title>
</head>
<body>
<h1>Este es example.com</h1>
<p>¡Bienvenido a example.com! ¡El sitio está activo y seguro con SSL!</p>
</body>
</html>
test.com
sudo nano /var/www/test.com/index.html
Contenido:
<!DOCTYPE html>
<html>
<head>
<title>¡Bienvenido a test.com!</title>
</head>
<body>
<h1>Este es test.com</h1>
<p>¡Bienvenido a test.com! ¡El sitio está funcionando y seguro con SSL!</p>
</body>
</html>
3. Configuración de hosts virtuales
Vamos a crear un archivo de configuración separado para cada sitio.
Paso 1: Configuración para Nginx
example.com
sudo nano /etc/nginx/sites-available/example.com
Contenido:
server {
listen 80;
server_name example.com www.example.com;
root /var/www/example.com;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
test.com
sudo nano /etc/nginx/sites-available/test.com
Contenido:
server {
listen 80;
server_name test.com www.test.com;
root /var/www/test.com;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
Activamos la configuración:
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
sudo ln -s /etc/nginx/sites-available/test.com /etc/nginx/sites-enabled/
Reiniciamos el servidor:
sudo nginx -t
sudo systemctl reload nginx
Paso 2: Configuración para Apache
example.com
sudo nano /etc/apache2/sites-available/example.com.conf
Contenido:
<VirtualHost *:80>
ServerName example.com
ServerAlias www.example.com
DocumentRoot /var/www/example.com
<Directory /var/www/example.com>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
test.com
sudo nano /etc/apache2/sites-available/test.com.conf
Contenido:
<VirtualHost *:80>
ServerName test.com
ServerAlias www.test.com
DocumentRoot /var/www/test.com
<Directory /var/www/test.com>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
Activamos las configuraciones:
sudo a2ensite example.com.conf
sudo a2ensite test.com.conf
sudo systemctl reload apache2
4. Configuración de HTTPS para sitios web
Ahora conectaremos SSL para ambos sitios utilizando Let’s Encrypt.
sudo certbot --nginx
# o para Apache:
sudo certbot --apache
El proceso te pedirá elegir para qué sitios emitir certificados. Escoge example.com y test.com. Certbot actualizará automáticamente la configuración de los servidores.
5. Comprobación del funcionamiento de los sitios
Después de completar la configuración, visita tus sitios:
Deberías ver las páginas HTML creadas. Asegúrate de que el navegador muestre "Seguro" (Secure) en la barra de direcciones.
6. Depuración y comprobación
Si algo salió mal, revisa los logs:
Para Nginx:
sudo tail -f /var/log/nginx/error.logPara Apache:
sudo tail -f /var/log/apache2/error.log
O verifica la disponibilidad usando curl:
curl -I http://example.com
curl -I https://example.com
7. Renovación de certificados
Certbot actualiza automáticamente los certificados usando cron del sistema. Para comprobarlo, puedes ejecutarlo manualmente:
sudo certbot renew --dry-run
Así, paso a paso, hemos configurado un servidor web con soporte para múltiples sitios y HTTPS. Acabas de recorrer todo el camino desde un servidor vacío hasta uno funcionando con hosts virtuales y SSL. Ahora tu servidor está listo para mostrarle al mundo sus sitios. ¿A poco no está genial?
GO TO FULL VERSION