↓Ir al contenido
Alemasone

Cómo instalar y configurar Apache en Ubuntu y Windows

Guía para instalar el servidor web Apache: paquetes en Ubuntu, instalación manual en Windows, virtual hosts, mod_rewrite y firewall.

10 min de lectura Actualizado el
Terminal con los comandos de instalación de Apache junto a la página de bienvenida del servidor
En esta página
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 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:

    sudo apt update
    sudo apt install apache2
    
  2. Comprueba que el servicio se haya iniciado:

    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
    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:

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:

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':

sudo ufw allow 'Apache Full'
sudo ufw enable
sudo ufw status
Cuidado con SSH. Si trabajas en un servidor remoto vía SSH, 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 #

RutaContenido
/var/www/htmlLos archivos del sitio predeterminado
/etc/apache2/apache2.confConfiguración principal
/etc/apache2/ports.confLos 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.logRegistro de acceso (access log)
/var/log/apache2/error.logRegistro 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, que aparece en la página de descargas oficial. 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 (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:

    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:

    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:

    httpd.exe -k install
    
  7. Inicia el servicio y comprueba en http://localhost:

    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:

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:

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:

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:

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:

    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:

    <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:

    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:

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:

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:

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 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 con la herramienta Certbot, 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.

Sigue leyendo