Hace tiempo ya vimos en un artículo de éste mismo blog cómo instalar un servidor web en la Raspberry Pi bajo el sistema operativo Raspbian. Hoy vamos a ver cómo puedes tener varios dominios en un mismo servidor. Puedes obtener hasta 5 dominios gratuitos en duckdns.org.
Lo primero será irte a la carpeta donde se aloja el contenido del servidor web (/var/www/html) y crear una carpeta por cada dominio. Vamos a suponer que vas a tener alojados los dominios dominio1.com, dominio2.com y dominio3.com. Para ello tendrás que escribir los siguientes comandos en la terminal:
cd /var/www/html sudo mkdir dominio1.com sudo mkdir dominio2.com sudo mkdir dominio3.com
Recuerda cambiar dominio#.com por el nombre de los dominios que vayas a tener. Puedes tener tantos como quieras.
Lo siguiente es configurar el propietario de esas carpetas y sus archivos así como los permisos. Lo puedes hacer con las siguientes instrucciones:
sudo chown -R www-data:www-data dominio1.com sudo chown -R www-data:www-data dominio2.com sudo chown -R www-data:www-data dominio3.com sudo find dominio1.com -type d -print -exec chmod 775 {} \; sudo find dominio2.com -type d -print -exec chmod 775 {} \; sudo find dominio3.com -type d -print -exec chmod 775 {} \; sudo find dominio1.com -type f -print -exec chmod 644 {} \; sudo find dominio2.com -type f -print -exec chmod 644 {} \; sudo find dominio3.com -type f -print -exec chmod 644 {} \;
Ahora tienes que copiar el archivo 000-default.conf con la siguiente instrucción:
sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/dominio1.com.conf
Y editar ese archivo que hemos copiado con:
sudo nano /etc/apache2/sites-available/dominio1.com.conf
Añade en dicho archivo el siguiente contenido modificando lo que consideres oportuno:
<VirtualHost *:80> ServerAdmin administrador@dominio1.com ServerName dominio1.com ServerAlias www.dominio1.com DocumentRoot /var/www/html/dominio1.com ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost>
Realiza la misma acción (copiar el archivo 000-default.conf y modificar el contenido) por cada dominio que vayas a tener alojado.
Ahora tienes que activar los dominios y desactivar el default con:
sudo a2ensite dominio1.com sudo a2ensite dominio2.com sudo a2ensite dominio3.com sudo a2dissite 000-default.conf
Ahora ya solo te queda reiniciar el servicio con:
sudo systemctl reload apache2
Si has seguido todos los pasos ya tendrás varios dominios alojados en un mismo servidor web. Cuando el servidor web reciba una petición sabrá a que carpeta tiene que ir a buscar el archivo en función de la URL que se haya solicitado en el cliente.
En este caso habría que poner en el equipo con el servidor web, tantas líneas en el archivo duckdns.sh como dominios tubieramos? o cada dominio duckdns en un archivo diferente y llamarlos desde cron?
Hola korpetit.
Puedes poner en el archivo duckdns.sh todos los dominios separados por comas y sin espacios.
Lo acabo de probar y funciona.
Quedaría algo así:
echo url="https://www.duckdns.org/update?domains=dominio1,dominio2,dominio3&token=c55o998-3p79-9zpb-y384-d9hbe46i4lp3&ip=" | curl -k -o ~/bin/duck.log -K -
En el caso de querer ssl con certbot habría algún problema con tanto dominio? creo que los arxhivos de configuración de ssl podrían sobreescribirse y andar mal, no?
No hay ningún problema. Yo ahora mismo sólo tengo un dominio configurado y no te puedo decir, pero ha tenido épocas de tener hasta 4 y todos con su certificado SSL creado con certbot y no daba ningún problema. Supongo que se crean en carpetas diferentes y no se sobreescriben. O eso o se crea un solo certificado válido para todos los dominios, porque recuerdo que en el certificado aparecía el nombre de todos los dominios.
Saludos y gracias por pasarte por aquí y comentar.
El problema que encontre es que no funciona cuando existe un index.php
Solo funciona cuando index es .html
Hola Pablo, tienes que tener instalado PHP. Puedes hacerlo siguiendo las instrucciones de https://alexpro.sytes.net/como-instalar-php-en-raspbian/