Instalar Apache en Ubuntu: sitio y virtual host

Índice de contenido
  1. Revisa quién utiliza los puertos
  2. Instala y comprueba el servicio
  3. Crea un sitio estático de prueba
  4. Habilita, valida y prueba el dominio
  5. Diagnóstico y vuelta atrás
  6. Preguntas frecuentes
    1. ¿Apache ejecutará PHP después de instalarlo?
    2. ¿Por qué funciona con --resolve pero falla en el navegador?
    3. ¿Necesito habilitar rewrite para cualquier sitio?
  7. En pocas palabras
  8. Conclusión
  9. Fuentes y documentación

Instalar Apache en Ubuntu es un primer paso para servir páginas web. El trabajo importante viene después: decidir qué dominio atiende, desde qué carpeta lee los archivos y cómo comprobar que una modificación no rompe otros sitios.

Esta guía utiliza paquetes de Ubuntu y un sitio HTML sencillo. Los comandos se plantean para una máquina de práctica con acceso sudo. No configuran PHP ni convierten automáticamente el servidor en una instalación de WordPress.

Revisa quién utiliza los puertos

Antes de instalar, identifica si hay otro servidor web o un contenedor escuchando en 80 y 443:

sudo ss -ltnp '( sport = :80 or sport = :443 )'

Si encuentras Nginx, un proxy o una aplicación, determina su función. Detenerlo sin revisar puede interrumpir otros dominios. Apache y Nginx pueden convivir utilizando direcciones o puertos distintos, o mediante un proxy definido expresamente.

Comprueba también cómo recuperarías el acceso si falla una regla de red. El firewall del proveedor y el del sistema son capas independientes.

Instala y comprueba el servicio

sudo apt update
sudo apt install apache2 curl
sudo systemctl enable --now apache2
systemctl is-active apache2
curl -I http://127.0.0.1/

Una respuesta HTTP local demuestra que existe un servidor atendiendo esa petición. Todavía no verifica DNS, acceso exterior ni el contenido del futuro dominio.

Si UFW ya está activo y el servidor debe recibir tráfico web público, revisa sus perfiles antes de permitir el de Apache. No actives un firewall nuevo sin conservar el acceso administrativo.

sudo ufw status verbose
sudo ufw app info 'Apache Full'
sudo ufw allow 'Apache Full'

Abrir 443 no crea un certificado ni configura un sitio HTTPS.

Crea un sitio estático de prueba

El directorio pertenece a root y Apache solo necesita leerlo. Esto evita conceder al proceso web permisos de escritura sobre todo el contenido.

sudo install -d -m 0755 /var/www/ejemplo/public
printf '%s\n' '<h1>Sitio de prueba Apache</h1>' | sudo tee /var/www/ejemplo/public/index.html
sudo chmod 0644 /var/www/ejemplo/public/index.html
sudo nano /etc/apache2/sites-available/ejemplo.conf

Guarda este virtual host. Sustituye ejemplo.com por un dominio que controles antes de publicarlo:

<VirtualHost *:80>
    ServerName ejemplo.com
    DocumentRoot /var/www/ejemplo/public

    <Directory /var/www/ejemplo/public>
        Options -Indexes
        AllowOverride None
        Require all granted
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/ejemplo-error.log
    CustomLog ${APACHE_LOG_DIR}/ejemplo-access.log combined
</VirtualHost>

AllowOverride None resulta adecuado para este HTML estático. Una aplicación que utilice .htaccess puede necesitar permisos de configuración concretos y módulos adicionales. Activar AllowOverride All en todas las carpetas no es un requisito general.

Habilita, valida y prueba el dominio

sudo a2ensite ejemplo.conf
sudo apache2ctl configtest
sudo apache2ctl -S

Solo si configtest termina correctamente, recarga:

sudo systemctl reload apache2
curl --resolve ejemplo.com:80:127.0.0.1 http://ejemplo.com/

La opción --resolve permite probar el nombre sin cambiar DNS. Debe aparecer el contenido del archivo creado. La lista de virtual hosts ayuda a detectar nombres repetidos y qué sitio responderá cuando ninguna coincidencia sea exacta.

No deshabilites el sitio predeterminado por costumbre: revisa primero si está atendiendo tráfico. Para que el dominio funcione desde internet, sus registros A y, cuando corresponda, AAAA deben dirigir al servidor correcto.

Diagnóstico y vuelta atrás

Ante un 403, revisa permisos de todos los directorios del recorrido y las reglas Require. No lo soluciones con chmod 777. Ante una página inesperada, compara ServerName, cabecera Host y salida de apache2ctl -S.

sudo tail -n 50 /var/log/apache2/ejemplo-error.log
sudo journalctl -u apache2 --since '15 minutes ago'

Si el cambio provoca problemas, deshabilita únicamente el sitio nuevo con a2dissite ejemplo.conf, valida la configuración y recarga. Conserva los archivos para revisar el error. HTTPS se puede añadir después mediante Certbot; prueba tanto el certificado servido como el mecanismo de renovación.

Preguntas frecuentes

¿Apache ejecutará PHP después de instalarlo?

No necesariamente. Hace falta un manejador PHP compatible, como PHP-FPM o el módulo apropiado, y comprobar su integración. Una página HTML no verifica esa capa.

¿Por qué funciona con --resolve pero falla en el navegador?

Puede haber diferencias de DNS, IPv6, firewall, proxy o caché. La prueba local solo confirma la ruta al servidor y virtual host indicados.

¿Necesito habilitar rewrite para cualquier sitio?

No. Un sitio estático sencillo puede funcionar sin él. Actívalo cuando la aplicación o las reglas de reescritura realmente lo necesiten.

En pocas palabras

Un servicio activo y una página de bienvenida solo confirman una parte del recorrido. Un sitio necesita archivos legibles, virtual host correcto, resolución del dominio y comprobaciones desde dentro y fuera del servidor.

Conclusión

Conserva una configuración pequeña y comprueba cada cambio antes de recargar. Cuando el sitio HTTP responda en el dominio previsto, configura HTTPS y verifica también su renovación.

Para continuar, revisa Cómo instalar Ubuntu desde una USB: paso a paso y Cómo instalar Docker en Ubuntu 24.04: guía práctica paso a paso.

Fuentes y documentación

Documentación de ubuntu.com.

Documentación de httpd.apache.org.

Documentación de httpd.apache.org.

Subir

Descubre más de Sergio Caballero

Suscríbete ahora para seguir leyendo y obtener acceso al archivo completo.

Continuar leyendo