Definir el sistema base (Debian/Ubuntu vs RHEL/Rocky)
Antes de tocar Apache, conviene identificar con precisión la familia de tu distribución porque cambian rutas, nombres de paquetes, servicios y herramientas de administración. En este capítulo trabajaremos con dos familias comunes:
- Debian/Ubuntu: usa
apt, suele llamar al servicioapache2y organiza la configuración en/etc/apache2. - RHEL/CentOS/Rocky: usa
dnf(oyumen sistemas antiguos), suele llamar al serviciohttpdy organiza la configuración en/etc/httpd.
Comprobar distribución, versión y gestor de paquetes
Ejecuta estos comandos para saber exactamente dónde estás:
cat /etc/os-release
uname -r
command -v apt || true
command -v dnf || command -v yum || trueTambién es útil confirmar si el sistema usa systemd (lo normal hoy):
ps -p 1 -o comm=Preparar el entorno para administrar Apache con seguridad
Administrar con seguridad significa: usar acceso remoto controlado (SSH), aplicar el principio de mínimo privilegio (usar sudo en vez de root directo cuando sea posible), y tener herramientas para diagnosticar red/DNS y revisar logs sin improvisar.
1) Acceso y privilegios (SSH/local y sudo)
Verifica cómo estás conectado y si tienes permisos administrativos:
- Escuche el audio con la pantalla apagada.
- Obtenga un certificado al finalizar.
- ¡Más de 5000 cursos para que explores!
Descargar la aplicación
whoami
id
sudo -n true 2>/dev/null && echo "sudo OK" || echo "sudo requiere contraseña o no está permitido"Si vas por SSH, confirma sesión y origen:
echo $SSH_CONNECTION
last -a | headBuenas prácticas rápidas:
- Evita trabajar como
rootde forma permanente; usasudopara acciones puntuales. - Si vas a editar configuración, usa una sesión con
tmuxoscreenpara evitar cortes (opcional pero recomendable).
2) Instalar herramientas esenciales
Estas herramientas cubren edición, descargas HTTP, diagnóstico de red, DNS y revisión de puertos. Instala según tu familia.
Debian/Ubuntu (apt)
sudo apt update
sudo apt install -y vim nano curl wget ca-certificates \
net-tools iproute2 dnsutils \
traceroute tcpdump \
lsof \
openssh-clientRHEL/CentOS/Rocky (dnf)
sudo dnf -y install vim-enhanced nano curl wget ca-certificates \
net-tools iproute bind-utils \
traceroute tcpdump \
lsof \
openssh-clientsNotas útiles:
- DNS:
dnsutils(Debian/Ubuntu) equivale abind-utils(RHEL/Rocky) para tenerdigynslookup. - Puertos:
ssviene coniproute2y suele ser preferible anetstat.
3) Verificación de conectividad (red y salida a Internet)
Antes de instalar o actualizar paquetes, confirma que el servidor tiene conectividad y rutas correctas.
Comprobar IP, gateway y rutas
ip a
ip rProbar conectividad básica
ping -c 2 1.1.1.1
ping -c 2 8.8.8.8Si el ping está bloqueado por políticas, prueba salida TCP/HTTPS con curl:
curl -I https://example.com4) Verificación de DNS y resolución local
Apache depende de DNS en varios escenarios (virtual hosts por nombre, validaciones TLS, integraciones, repositorios). Asegura que el sistema resuelve nombres correctamente y que tu hostname está bien definido.
Comprobar resolvers y estado de systemd-resolved
cat /etc/resolv.conf
( command -v resolvectl && resolvectl status ) || trueProbar resolución DNS
getent hosts example.com
( command -v dig && dig +short example.com ) || trueRevisar hostname y resolución local (hosts)
hostnamectl
cat /etc/hostsEjemplo típico de entrada útil en /etc/hosts (ajusta IP/hostname):
127.0.0.1 localhost
192.0.2.10 web01.midominio.local web01Si tu servidor debe resolver un nombre interno (por ejemplo, web01.midominio.local) y no existe DNS corporativo para ello, /etc/hosts es una solución local rápida. Recuerda que no escala para muchos servidores.
Estructura de directorios relevante para Apache
Para administrar Apache con confianza, necesitas ubicar tres cosas: document root (contenido), configuración (archivos que definen el servicio) y logs (diagnóstico). Las rutas cambian según la distribución, y además pueden estar personalizadas.
Rutas típicas por familia
| Elemento | Debian/Ubuntu | RHEL/CentOS/Rocky |
|---|---|---|
| Servicio | apache2 | httpd |
| Config principal | /etc/apache2/apache2.conf | /etc/httpd/conf/httpd.conf |
| Directorios de configuración | /etc/apache2/sites-available, /etc/apache2/sites-enabled, /etc/apache2/conf-available, /etc/apache2/conf-enabled, /etc/apache2/mods-available, /etc/apache2/mods-enabled | /etc/httpd/conf.d, /etc/httpd/conf.modules.d |
| Document root típico | /var/www/html | /var/www/html |
| Logs | /var/log/apache2 | /var/log/httpd |
| Usuario/grupo del proceso | www-data | apache |
Cómo identificar rutas reales en tu servidor
Incluso si conoces las rutas típicas, confirma la configuración efectiva. Estos comandos te ayudan a descubrirla sin adivinar.
1) Localizar el binario y el servicio
command -v apache2 || command -v httpd
systemctl list-unit-files | grep -E 'apache2|httpd' || true2) Ver rutas de configuración y parámetros compilados
En Debian/Ubuntu:
apache2 -VEn RHEL/Rocky:
httpd -VBusca en la salida valores como SERVER_CONFIG_FILE y HTTPD_ROOT.
3) Encontrar el DocumentRoot y los VirtualHosts
Una forma práctica es buscar directivas clave:
sudo grep -R "^DocumentRoot" -n /etc/apache2 2>/dev/null || true
sudo grep -R "^DocumentRoot" -n /etc/httpd 2>/dev/null || truePara localizar definiciones de VirtualHost (útil para saber qué archivos se cargan):
sudo grep -R "<VirtualHost" -n /etc/apache2 2>/dev/null || true
sudo grep -R "<VirtualHost" -n /etc/httpd 2>/dev/null || true4) Identificar logs activos
Los logs se definen con ErrorLog y CustomLog. Localízalos así:
sudo grep -R "^ErrorLog" -n /etc/apache2 2>/dev/null || true
sudo grep -R "^CustomLog" -n /etc/apache2 2>/dev/null || true
sudo grep -R "^ErrorLog" -n /etc/httpd 2>/dev/null || true
sudo grep -R "^CustomLog" -n /etc/httpd 2>/dev/null || trueY revisa en tiempo real (ajusta la ruta):
sudo tail -f /var/log/apache2/error.log
sudo tail -f /var/log/httpd/error_logComprobaciones operativas antes de administrar Apache
Esta lista te ayuda a confirmar que el entorno está listo para instalar, configurar y levantar Apache sin sorpresas.
Lista de comprobación (checklist)
- Acceso por SSH/local: puedes entrar al servidor y mantener la sesión estable (idealmente con claves SSH y sin depender de una sola terminal).
- Permisos de administrador:
sudofunciona para instalar paquetes, editar/etcy gestionar servicios. - Puertos disponibles: no hay conflictos en
80/443(u otros que planees usar). - Firewall activo y reglas claras: sabes si está activo y qué puertos permite; puedes abrir/cerrar puertos de forma controlada.
Comprobar puertos en uso (80/443)
sudo ss -ltnp | grep -E ':(80|443)\b' || echo "80/443 libres (o sin permisos para ver procesos)"
sudo lsof -iTCP -sTCP:LISTEN -P -n | grep -E ':(80|443)\b' || trueComprobar firewall (según distribución)
En RHEL/Rocky suele usarse firewalld:
sudo systemctl is-active firewalld && sudo firewall-cmd --list-all || echo "firewalld no activo"
sudo firewall-cmd --get-active-zones 2>/dev/null || trueEn Debian/Ubuntu es común ufw (si está instalado):
command -v ufw && sudo ufw status verbose || echo "ufw no instalado o no disponible"Si necesitas una verificación rápida de filtrado a nivel kernel:
sudo nft list ruleset 2>/dev/null | head || true
sudo iptables -S 2>/dev/null | head || true