---
title: "Cómo instalar y configurar Apache en Ubuntu y Windows"
description: "Guía para instalar el servidor web Apache: paquetes en Ubuntu, instalación manual en Windows, virtual hosts, mod_rewrite y firewall."
url: "https://www.alemasone.com/es/instalar-configurar-apache-ubuntu-windows/"
language: "es"
published: 2024-03-20
updated: 2026-09-19
categories: ["Programación Y Desarrollo"]
translations:
  it: "https://www.alemasone.com/it/installare-apache-ubuntu-windows/"
  en: "https://www.alemasone.com/en/install-configure-apache-ubuntu-windows/"
  fr: "https://www.alemasone.com/fr/installer-configurer-apache-ubuntu-windows/"
  pt: "https://www.alemasone.com/pt/instalar-configurar-apache-ubuntu-windows/"
  de: "https://www.alemasone.com/de/apache-ubuntu-windows-installieren-konfigurieren/"
---

# Cómo instalar y configurar Apache en Ubuntu y Windows

En Ubuntu Apache se instala con un comando y arranca solo. En Windows, en cambio, tienes que descargarlo, descomprimirlo y registrarlo como servicio manualmente, ya que la Apache Software Foundation no distribuye un instalador. La versión estable actual es la 2.4.68, lanzada el 8 de junio de 2026.

[Apache HTTP Server](https://httpd.apache.org/) existe desde 1995 y sigue siendo uno de los servidores web más utilizados: recibe las peticiones del navegador y devuelve las páginas, ya sea solo o junto con PHP y una base de datos. Vamos a ver la instalación en ambos sistemas y luego los elementos que necesitarás justo después: firewall, hosts virtuales y módulos.

## Instalar Apache en Ubuntu

Los comandos funcionan en Ubuntu 26.04 LTS (la última versión con soporte extendido), así como en las versiones LTS anteriores que aún tengan soporte, la 24.04 y la 22.04. Necesitarás permisos de administrador.

1. Actualiza la lista de paquetes e instala el servidor:

   ```bash
   sudo apt update
   sudo apt install apache2
   ```

2. Comprueba que el servicio se haya iniciado:

   ```bash
   sudo systemctl status apache2
   ```

   Si lees `active (running)` todo está correcto. Si no, inícialo con `sudo systemctl start apache2`.

3. Abre el navegador en `http://localhost`: debería aparecer la página predeterminada «Apache2 Default Page». Si el servidor es otra máquina, necesitarás su dirección IP, que puedes obtener con `hostname -I` (normalmente es la primera de la lista), para escribirla en el navegador como `http://indirizzo-ip`.

   ![Página «Apache2 Ubuntu Default Page» abierta en el navegador tras la instalación](pagina-predefinita-apache-ubuntu.png "Si ves esta página, el servidor está instalado y escuchando")

Los comandos que usarás con más frecuencia de aquí en adelante son cuatro:

```bash
sudo systemctl start apache2      # avvia
sudo systemctl stop apache2       # ferma
sudo systemctl restart apache2    # riavvia
sudo systemctl reload apache2     # ricarica la configurazione senza interrompere le connessioni
```

Tras realizar un cambio en la configuración, usa `reload`: las peticiones en curso no se interrumpirán.

Apache se inicia solo al encender el equipo. Si no quieres esto, desactívalo con `sudo systemctl disable apache2` y vuelve a activarlo con `sudo systemctl enable apache2`.

### El firewall UFW

En Ubuntu, el firewall se llama UFW y hay que configurarlo para indicar qué puertos dejar abiertos. Apache registra automáticamente tres perfiles:

```bash
sudo ufw app list
```

La lista muestra `Apache` (solo puerto 80), `Apache Secure` (solo 443) y `Apache Full` (ambos). Yo abro directamente `Apache Full`, porque tarde o temprano añadirás el certificado HTTPS; si por ahora solo necesitas HTTP, usa `'Apache'`:

```bash
sudo ufw allow 'Apache Full'
sudo ufw enable
sudo ufw status
```

> **Cuidado con SSH.** Si trabajas en un [servidor remoto vía SSH](/es/instalar-configurar-ssh-ubuntu-seguro/), autoriza la conexión SSH **antes** de activar el firewall usando `sudo ufw allow OpenSSH`. Activar UFW sin esa regla cerrará el puerto por el que estás conectado y te dejará fuera del servidor.

### Dónde están los archivos

| Ruta | Contenido |
|----------|-----------|
| `/var/www/html` | Los archivos del sitio predeterminado |
| `/etc/apache2/apache2.conf` | Configuración principal |
| `/etc/apache2/ports.conf` | Los puertos en los que Apache se queda escuchando (80, y 443 con SSL) |
| `/etc/apache2/sites-available/` | Hosts virtuales disponibles |
| `/etc/apache2/sites-enabled/` | Hosts virtuales activos (enlaces a los anteriores) |
| `/var/log/apache2/access.log` | Registro de acceso (access log) |
| `/var/log/apache2/error.log` | Registro de errores: el primer lugar donde mirar cuando algo falla |

## Instalar Apache en Windows

Para Windows, el proyecto solo distribuye el código fuente y remite a compilaciones hechas por terceros. La más utilizada y actualizada es la de **[Apache Lounge](https://www.apachelounge.com/)**, que aparece en la [página de descargas oficial](https://httpd.apache.org/download.cgi). **Apache Haus**, que verás en muchas guías, no se actualiza desde 2022: no pierdas el tiempo con ella.

> **¿Solo necesitas un entorno de desarrollo?** Si quieres trabajar en local con PHP y MySQL, un paquete completo como Laragon o WampServer te ahorrará todos estos pasos. La instalación manual tiene sentido cuando quieres elegir tú mismo la versión y la configuración, entender cómo funciona el servidor o mantenerlo encendido de forma permanente.

1. Libera el puerto 80. Si tienes activado [IIS](/es/instalar-certificado-ssl-windows-lets-encrypt/) (el servidor web de Microsoft incluido en las ediciones Pro), desactívalo desde **Activar o desactivar las características de Windows** desmarcando la casilla de **Internet Information Services**. Más abajo encontrarás cómo descubrir qué otro programa está ocupando el puerto.

2. Instala el **Visual C++ Redistributable** requerido por la compilación que hayas elegido: se indica en la página de descargas y es la causa más frecuente de errores al arrancar.

3. Descarga el archivo ZIP de 64 bits y extrae la carpeta `Apache24` en `C:\`, para tener así `C:\Apache24`. Es la ruta que espera la configuración predeterminada.

4. Abre `C:\Apache24\conf\httpd.conf` con un editor de texto. Si lo has descomprimido en otro sitio, corrige la variable `SRVROOT` al principio del archivo (que es la base que usan todas las demás directivas), siempre usando barras normales:

   ```apache
   Define SRVROOT "c:/Apache24"
   ```

   Ya que estás ahí, quita el comentario delante de `ServerName` y escribe `ServerName localhost:80`: así evitarás el aviso AH00558 en cada arranque.

5. Abre el Símbolo del sistema **como administrador** y comprueba la configuración:

   ```bat
   cd C:\Apache24\bin
   httpd.exe -t
   ```

   La respuesta esperada es `Syntax OK`. Si hay un error, el mensaje indicará el archivo y la línea que debes corregir.

6. Registra Apache como servicio de Windows para que arranque solo al encender el equipo:

   ```bat
   httpd.exe -k install
   ```

7. Inicia el servicio y comprueba en `http://localhost`:

   ```bat
   httpd.exe -k start
   ```

Para gestionarlo más adelante: `httpd.exe -k stop` lo detiene, `httpd.exe -k restart` lo reinicia, `httpd.exe -k uninstall` elimina el servicio. También lo encontrarás entre los servicios de Windows (`services.msc`) con el nombre **Apache2.4**: haciendo doble clic puedes elegir si quieres que se inicie automáticamente o de forma manual. En modo manual, lo arrancas con `net start Apache2.4` desde un símbolo del sistema como administrador.

La instalación también incluye `ApacheMonitor.exe`, un pequeño icono en la zona de notificación para arrancar y detener el servidor sin tener que abrir la consola.

**Si el puerto 80 ya está ocupado**

En Windows, el puerto 80 suele estar ocupado por otros programas: IIS, Skype en versiones antiguas o algunos servicios del sistema. Para descubrir quién lo está usando, usa un símbolo del sistema con privilegios de administrador:

```bat
netstat -aon | findstr :80
```

El último número de la línea es el ID del proceso, que puedes buscar en el Administrador de tareas, en la pestaña **Detalles**. Puedes cerrar ese programa o cambiar Apache a otro puerto modificando `httpd.conf`:

```apache
Listen 8080
```

En ese caso, el sitio responderá en `http://localhost:8080`.

### Mover los archivos del sitio

Básicamente, Apache sirve los archivos de `C:\Apache24\htdocs`. Si prefieres guardar los sitios en otro disco, por ejemplo para facilitar las copias de seguridad, cambia tanto en `httpd.conf` como en `DocumentRoot` el bloque `<Directory>` que le sigue:

```apache
DocumentRoot "D:/Siti"
<Directory "D:/Siti">
```

Luego coloca un archivo `index.html` en la carpeta, reinicia el servicio y recarga `http://localhost`.

### ¿Y en macOS?

macOS tiene una versión de Apache preinstalada, pero está desactualizada. Es mejor instalar una nueva con [Homebrew](https://brew.sh/):

```bash
brew install httpd
brew services start httpd
```

Los archivos de configuración se encuentran en `/opt/homebrew/etc/httpd/` en los Mac con Apple Silicon y el servidor responde por defecto en el puerto 8080.

## Virtual Hosts: varios sitios en el mismo servidor

Un host virtual le indica a Apache qué carpeta servir según el nombre del sitio solicitado. Conviene usarlo incluso para un solo sitio, ya que así mantienes la configuración separada de la predeterminada.

### En Ubuntu

1. Crea la carpeta del sitio y asigna los permisos:

   ```bash
   sudo mkdir -p /var/www/esempio.test/public_html
   sudo chown -R $USER:$USER /var/www/esempio.test/public_html
   ```

2. Crea el archivo `/etc/apache2/sites-available/esempio.test.conf` con este contenido:

   ```apache
   <VirtualHost *:80>
       ServerName esempio.test
       ServerAlias www.esempio.test
       DocumentRoot /var/www/esempio.test/public_html

       <Directory /var/www/esempio.test/public_html>
           Options -Indexes +FollowSymLinks
           AllowOverride All
           Require all granted
       </Directory>

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

3. Activa el sitio, desactiva el predeterminado y recarga:

   ```bash
   sudo a2ensite esempio.test.conf
   sudo a2dissite 000-default.conf
   sudo apache2ctl configtest
   sudo systemctl reload apache2
   ```

4. Para probarlo localmente, añade la línea `127.0.0.1 esempio.test` al archivo `/etc/hosts`.

La directiva `AllowOverride All` es la que permite que los archivos `.htaccess` funcionen; sin ella, las reglas de reescritura en las subcarpetas se ignorarán.

### En Windows

El mecanismo es el mismo, pero los host virtuales están en `conf/extra/httpd-vhosts.conf`, que primero hay que habilitar quitando el comentario a la línea correspondiente en `httpd.conf`:

```apache
Include conf/extra/httpd-vhosts.conf
```

Luego define los hosts con la misma sintaxis vista antes, usando rutas al estilo de Windows (`c:/siti/esempio/public_html`), y añade la correspondencia en el archivo `C:\Windows\System32\drivers\etc\hosts`, que debe abrirse con un editor ejecutado como administrador.

## Activar mod_rewrite y otros módulos

`mod_rewrite` reescribe las direcciones: lo usan las URLs amigables de WordPress, el enrutamiento de los frameworks PHP y cualquier redirección escrita en un archivo `.htaccess`. Por defecto está desactivado.

En Ubuntu:

```bash
sudo a2enmod rewrite
sudo a2enmod headers
sudo a2enmod ssl
sudo systemctl restart apache2
```

En Windows se modifica `httpd.conf`, quitando el comentario delante de las líneas de los módulos:

```apache
LoadModule rewrite_module modules/mod_rewrite.so
LoadModule headers_module modules/mod_headers.so
```

En ambos casos, `mod_rewrite` solo funciona si también existe `AllowOverride All` en el bloque `<Directory>` de la carpeta del sitio. Cuando las reglas no funcionan, suele ser porque falta precisamente eso.

Para ver la lista de módulos activos: `apache2ctl -M` en Ubuntu, `httpd.exe -M` en Windows.

## Cuando algo no funciona

**Apache no arranca.** Prueba la configuración con `apache2ctl configtest` o `httpd.exe -t`: el error indicará el archivo y la línea. En Windows, comprueba que hayas instalado el Visual C++ Redistributable requerido.

**Error 403 Forbidden.** Permisos de carpeta o falta la directiva `Require all granted` en el bloque `<Directory>`. En Ubuntu, los archivos deben ser legibles por el usuario `www-data`.

**Las reglas de reescritura se ignoran.** El módulo no está activo o `AllowOverride` está configurado como `None`.

**Aparece la página predeterminada en lugar del sitio.** El host virtual no se ha activado, o el nombre en el archivo `hosts` no coincide con el escrito en `ServerName`.

En cualquier caso, lo primero que debes revisar es el registro de errores: `/var/log/apache2/error.log` en Ubuntu, `C:\Apache24\logs\error.log` en Windows.

## Preguntas frecuentes

### ¿Qué es mejor, Apache o Nginx?

Depende de la carga y de lo que necesites servir. [Nginx](https://nginx.org/) gestiona mejor muchas conexiones simultáneas consumiendo poco, y es el más usado en sitios de alto tráfico. Apache es más sencillo para principiantes, permite la configuración por carpeta con los archivos `.htaccess` (Nginx no) y es el que encontrarás en la mayoría de hostings compartidos. A menudo se usan juntos: Nginx delante y Apache detrás.

### ¿Cómo añado soporte para PHP?

En Ubuntu es un solo comando: `sudo apt install php libapache2-mod-php`, seguido de un reinicio del servicio. En Windows hay que descargar PHP aparte en su versión «Thread Safe» y conectarlo a Apache añadiendo las líneas `LoadModule` y `PHPIniDir` en `httpd.conf`, asegurándote de usar una compilación de 64 bits como la de Apache.

### ¿Tengo que abrir los puertos en el router para que me puedan encontrar desde internet?

Sí, para ser visible desde fuera debes redirigir los puertos 80 y 443 hacia tu ordenador. Piénsalo bien antes: un servidor expuesto debe mantenerse actualizado y controlado. Si solo quieres mostrarle un sitio a alguien, es más prudente usar un túnel temporal o un hosting sencillo.

### ¿Cómo actualizo Apache en Windows?

Detén el servicio con `httpd.exe -k stop` y haz una copia de `httpd.conf`, de la carpeta `conf` y de los archivos del sitio. Luego extrae la nueva versión sobre la antigua sin sobrescribir tu configuración, comprueba con `httpd.exe -t` y reinicia. El servicio registrado seguirá siendo el mismo, no hace falta reinstalarlo.

### ¿Cómo activo el HTTPS?

En un servidor público, la vía estándar es [Let's Encrypt](https://letsencrypt.org/) con la herramienta [Certbot](https://certbot.eff.org/), que obtiene el certificado y configura Apache automáticamente. En local no necesitas una autoridad de certificación: basta con un certificado autofirmado. El navegador lo marcará como no seguro, pero aun así puedes probar el sitio en HTTPS.

### ¿Cuál es la diferencia entre `restart` y `reload`?

`restart` detiene y reinicia el proceso, cortando las conexiones en curso. `reload` hace que se vuelva a leer la configuración permitiendo que terminen las peticiones ya iniciadas: en un servidor en producción, después de un cambio, usa esta opción.
