CÓMO CONFIGURAR APACHE PARA UN DOMINIO

Hace poco cree una aplicación cloud, hecha en php y haciendo self hosting y quiero explicar como configurar el apache.para que el dominio apunte al servidor y a la carpeta correcta:
  1. Supongmos que el dominio es "tudominio.com" y que se tiene la IP estática: "203.0.113.10" y que tenemos linux y apache instalado.
  2. Crear la carpeta donde irá el código del proyecto web, por ejemplo, "/var/www/tudominio/".
  3. Crear el VirtualHost en la ruta "/etc/apache2/sites-available/tudominio.conf". Pegar el código:

    <VirtualHost *:80>
        ServerName tudominio.com
        ServerAlias www.tudominio.com
        DocumentRoot /var/www/tudominio
    
        <Directory /var/www/tudominiol>
       Options Indexes FollowSymLinks
       AllowOverride All
       Require all granted
        </Directory>
    
        ErrorLog ${APACHE_LOG_DIR}/tudominio-error.log
        CustomLog ${APACHE_LOG_DIR}/tudominio-access.log combined
    </VirtualHost>
    
  4. Una vez creado el fichero hay que activar el VirtualHost con los comandos:

    sudo a2ensite tudominio.com.conf
    sudo a2dissite 000-default.conf  # (opcional: desactiva el sitio por defecto)
    sudo systemctl reload apache2
    
  5. Activar las DNS en el proveedor del dominio. Puede tardar hasta 48h en propagarse (normalmente 5-30 min).
  6. Es aconsejable Activar HTTPS por ejemplo con Let’s Encrypt

    sudo apt install certbot python3-certbot-apache -y
    sudo certbot --apache -d tudominio.com -d www.tudominio.com
    
    Es necesario seguir las isntrucciones y elegir "redirigir HTTP → HTTPS".

Problemas comunes

  • Si sale el error "403 Forbidden" se soluciona con "sudo chown -R www-data:www-data /var/www/tudominio".
  • Si sale "Could not reliably determine the server's fully qualified domain name" no hay que hacer nada, no afecta.
  • Si no carga el sitio hay que verificar la DNS con "dig tudominio.com".
  • Si el puerto 80 bloqueado hay que hacer "sudo ufw allow 80" y "sudo ufw allow 443".

Observaciones

En la configuración del VirtualHost se ha puesto:

<VirtualHost *:80>
    ServerName tudominio.com
    ServerAlias www.tudominio.com
    DocumentRoot /var/www/tudominio

    <Directory /var/www/tudominiol>
   Options Indexes FollowSymLinks
   AllowOverride All
   Require all granted
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/tudominio-error.log
    CustomLog ${APACHE_LOG_DIR}/tudominio-access.log combined
</VirtualHost>
Pero se podría poner de la siguiente manera:

<VirtualHost  tudominio.com:80>
    ServerName tudominio.com
    ServerAlias www.tudominio.com
    DocumentRoot /var/www/tudominio

    <Directory /var/www/tudominiol>
   Options Indexes FollowSymLinks
   AllowOverride All
   Require all granted
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/tudominio-error.log
    CustomLog ${APACHE_LOG_DIR}/tudominio-access.log combined
</VirtualHost>
La diferencia es que en la primera opción es buena cuando se tiene una ip y la segunda opción es cuando se tienen varias ips.
Es mejor la primera opción con ips dinámicas, balanceadores contenedores.