Apuntes redes

No vayas a access.log, donde habitan los monstruos.

Instalación y Configuración de Apache Web Server

Esta guía te llevará paso a paso por la instalación y configuración de Apache HTTP Server en diferentes sistemas operativos, adaptándose a las particularidades de cada plataforma.

Tabla de Contenidos

  1. Introducción a Apache
  2. Diferencias entre sistemas operativos
  3. Instalación en Ubuntu/Debian
  4. Instalación en CentOS/RHEL/Rocky Linux
  5. Instalación en Windows
  6. Instalación en macOS

Introducción a Apache

Apache HTTP Server es uno de los servidores web más populares del mundo, conocido por su estabilidad, flexibilidad y amplio soporte multiplataforma. Es software libre y forma parte del stack LAMP/WAMP (linux/windows, Apache, Misql/Mariadb, PHP).

Características principales

  • Multiplataforma: Linux, Windows, macOS, Unix
  • Modular: Sistema de módulos extensible
  • Configurable: Amplia gama de opciones de configuración
  • Seguro: Múltiples características de seguridad
  • Escalable: Maneja desde sitios pequeños hasta grandes aplicaciones

Diferencias entre Sistemas Operativos

Antes de comenzar la instalación, es importante entender las diferencias clave entre plataformas:

Aspecto Ubuntu/Debian CentOS/RHEL Windows macOS
Nombre del servicio apache2 httpd Apache2.4 httpd
Usuario del servicio www-data apache SYSTEM _www
Directorio de configuración /etc/apache2/ /etc/httpd/ C:\Apache24\conf /usr/local/etc/httpd/
Archivo principal apache2.conf httpd.conf httpd.conf httpd.conf
Document Root /var/www/html /var/www/html C:\Apache24\htdocs /usr/local/var/www
Logs /var/log/apache2/ /var/log/httpd/ C:\Apache24\logs /usr/local/var/log/httpd/
Virtual Hosts sites-available/ conf.d/ conf/extra/ /usr/local/etc/httpd/extra/
Comando habilitar sitio a2ensite editar manual editar manual editar manual
Comando habilitar módulo a2enmod editar manual LoadModule editar manual

Instalación en Ubuntu/Debian: Actualización del sistema

sudo apt update && sudo apt upgrade -y

Instalación de Apache

# Instalar Apache
sudo apt install apache2 -y

# Verificar instalación
apache2 -v

Configuración del firewall

# Permitir tráfico HTTP y HTTPS
sudo ufw allow 'Apache Full'

# Si solo quieres HTTP
sudo ufw allow 'Apache'

# Si solo quieres HTTPS
sudo ufw allow 'Apache Secure'

# Habilitar firewall
sudo ufw --force enable

Gestión del servicio

# Iniciar Apache
sudo systemctl start apache2

# Habilitar inicio automático
sudo systemctl enable apache2

# Verificar estado
sudo systemctl status apache2

# Reiniciar Apache
sudo systemctl restart apache2

# Recargar configuración
sudo systemctl reload apache2

# Detener Apache
sudo systemctl stop apache2

Estructura de directorios en Ubuntu/Debian

/etc/apache2/
├── apache2.conf          # Configuración principal
├── ports.conf            # Configuración de puertos
├── conf-available/       # Configuraciones disponibles
├── conf-enabled/         # Configuraciones habilitadas
├── mods-available/       # Módulos disponibles
├── mods-enabled/         # Módulos habilitados
├── sites-available/      # Sitios disponibles
├── sites-enabled/        # Sitios habilitados
└── envvars              # Variables de entorno

Comandos útiles específicos de Debian/Ubuntu

# Habilitar un sitio
sudo a2ensite nombre_sitio

# Deshabilitar un sitio
sudo a2dissite nombre_sitio

# Habilitar un módulo
sudo a2enmod nombre_modulo

# Deshabilitar un módulo
sudo a2dismod nombre_modulo

# Habilitar una configuración
sudo a2enconf nombre_conf

# Verificar configuración
sudo apache2ctl configtest

# Ver módulos cargados
apache2ctl -M

Instalación en CentOS/RHEL/Rocky Linux: Actualización del sistema

# CentOS 8/Rocky Linux/AlmaLinux
sudo dnf update -y

# CentOS 7
sudo yum update -y

Instalación de Apache

# CentOS 8/Rocky Linux/AlmaLinux
sudo dnf install httpd -y

# CentOS 7
sudo yum install httpd -y

# Verificar instalación
httpd -v

Configuración del firewall

# Permitir HTTP y HTTPS
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https

# Recargar firewall
sudo firewall-cmd --reload

# Verificar reglas
sudo firewall-cmd --list-services

Gestión del servicio

# Iniciar Apache
sudo systemctl start httpd

# Habilitar inicio automático
sudo systemctl enable httpd

# Verificar estado
sudo systemctl status httpd

# Reiniciar Apache
sudo systemctl restart httpd

# Recargar configuración
sudo systemctl reload httpd

# Detener Apache
sudo systemctl stop httpd

Estructura de directorios en CentOS/RHEL

/etc/httpd/
├── conf/
│   ├── httpd.conf        # Configuración principal
│   └── magic
├── conf.d/               # Configuraciones adicionales
├── conf.modules.d/       # Configuración de módulos
├── logs/                 # Enlace simbólico a /var/log/httpd
├── modules/              # Enlace simbólico a módulos
└── run/                  # Archivos de runtime

Comandos útiles específicos de CentOS/RHEL

# Verificar configuración
sudo httpd -t

# Ver módulos compilados
httpd -l

# Ver módulos cargados
httpd -M

# Verificar virtual hosts
httpd -S

Instalación en Windows: Instalación nativa de Apache

Descargar Apache

  1. Visitar Apache Lounge
  2. Descargar la versión apropiada (x64 para sistemas de 64 bits)
  3. Extraer a C:\Apache24\

Instalación como servicio

# Abrir CMD como administrador y navegar a Apache
cd C:\Apache24\bin

# Instalar como servicio
httpd.exe -k install

# Iniciar servicio
httpd.exe -k start

# O usar el administrador de servicios de Windows
net start Apache2.4

Gestión del servicio en Windows

# Iniciar Apache
net start Apache2.4
sc start Apache2.4

# Detener Apache
net stop Apache2.4
sc stop Apache2.4

# Reiniciar Apache
net stop Apache2.4 && net start Apache2.4

# Verificar estado
sc query Apache2.4

Opción 2: XAMPP (Recomendado para desarrollo)

Descargar e instalar XAMPP

  1. Descargar desde Apache Friends
  2. Ejecutar el instalador como administrador
  3. Instalar en C:\xampp\ (ruta por defecto)

Usar XAMPP Control Panel

- Abrir XAMPP Control Panel
- Hacer clic en "Start" junto a Apache
- Verificar que aparezca en verde
- Abrir navegador y visitar http://localhost

Estructura de directorios en Windows

Apache nativo

C:\Apache24\
├── bin\                  # Ejecutables
├── conf\                 # Configuraciones
│   ├── httpd.conf        # Configuración principal
│   └── extra\            # Configuraciones adicionales
├── htdocs\               # Document root
├── logs\                 # Archivos de log
└── modules\              # Módulos de Apache

XAMPP

C:\xampp\
├── apache\
│   ├── bin\
│   ├── conf\
│   │   ├── httpd.conf
│   │   └── extra\
│   └── logs\
├── htdocs\               # Document root
└── php\                  # PHP (incluido)

Instalación en macOS: Opción 1: Homebrew (Recomendado)

# Instalar Homebrew si no está instalado
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

# Instalar Apache
brew install httpd

# Iniciar Apache
brew services start httpd

# Habilitar inicio automático
brew services enable httpd

Opción 2: MacPorts

# Instalar Apache
sudo port install apache2

# Iniciar Apache
sudo port load apache2

Configuración en macOS

# Archivo de configuración
sudo nano /usr/local/etc/httpd/httpd.conf

# Document root por defecto
/usr/local/var/www

# Logs
/usr/local/var/log/httpd/
TOP