6. Servidor web Apache
Ya tenemos preparada nuestra máquina Debian y conocemos el papel de un servidor web dentro de una arquitectura web. En este apartado vamos a instalar Apache HTTP Server, comprobar que funciona y publicar nuestro primer contenido.
Trabajaremos desde la terminal de Debian y realizaremos comprobaciones tanto desde la propia máquina virtual como desde el navegador de la máquina anfitriona.
Apache será el primer servicio web que pondremos en funcionamiento.
El recorrido que vamos a seguir es:
instalar → comprobar el servicio → acceder desde Debian → acceder desde el anfitrión → publicar contenido → detener y comprobar
6.1. Instalación de Apache
En Debian, Apache se distribuye mediante el paquete apache2. No necesitamos descargar manualmente un instalador: utilizaremos APT, que obtendrá el paquete y sus dependencias desde los repositorios configurados en Debian.
Podemos consultar el paquete disponible para Debian estable en:
Antes de instalar cualquier paquete actualizamos la información de los repositorios:
sudo apt update
Podemos comprobar que Apache está disponible:
apt search apache2
Instalamos el servidor:
sudo apt install apache2
APT mostrará los paquetes que necesita instalar y pedirá confirmación antes de continuar.
Cuando termine, podemos comprobar la versión instalada:
/usr/sbin/apache2ctl -v

apache2ctl es una herramienta de administración incluida con Apache en Debian.
La opción -v muestra la versión del servidor instalada. La versión concreta puede cambiar con las actualizaciones de Debian, por lo que no debemos esperar necesariamente el mismo número de versión que aparece en una captura realizada en otro momento.
6.2. Administrar el servicio Apache
En Debian utilizamos systemd para administrar muchos de los servicios del sistema. Apache se registra con el nombre de servicio apache2.
Comprobar el estado
Ejecutamos:
sudo systemctl status apache2
Si el servidor está funcionando encontraremos una línea similar a:
Active: active (running)

Podemos salir de la pantalla de systemctl status pulsando q.
Operaciones básicas
Los comandos que utilizaremos con mayor frecuencia son:
| Acción | Comando |
|---|---|
| Consultar el estado. | sudo systemctl status apache2 |
| Iniciar Apache. | sudo systemctl start apache2 |
| Detener Apache. | sudo systemctl stop apache2 |
| Reiniciar Apache. | sudo systemctl restart apache2 |
| Recargar la configuración sin detener completamente el servicio. | sudo systemctl reload apache2 |
restart y reload no son exactamente lo mismorestart detiene y vuelve a iniciar el servicio.
reload pide a Apache que vuelva a leer su configuración intentando mantener el servicio activo.
Más adelante, cuando modifiquemos configuraciones del servidor, utilizaremos uno u otro según el cambio realizado.
Antes de aplicar cambios de configuración podemos comprobar su sintaxis con:
sudo apache2ctl configtest
Si la sintaxis básica es correcta obtendremos:
Syntax OK
En documentación antigua podemos encontrar comandos como:
service apache2 start
service apache2 stop
Siguen pudiendo funcionar por compatibilidad en muchos sistemas Debian, pero en estos apuntes utilizaremos systemctl, ya que Debian utiliza systemd como sistema de inicio y administración de servicios.
6.3. Comprobar que Apache responde
Que el proceso esté en estado active (running) es una primera comprobación, pero también debemos verificar que el servidor responde a peticiones HTTP.
Desde la propia máquina Debian
Apache escucha de forma predeterminada peticiones HTTP en el puerto 80.
Podemos acceder utilizando:
http://localhost
o:
http://127.0.0.1
Como ya tenemos instalado Lynx, realizamos la comprobación desde la terminal:
lynx http://localhost
Si Apache funciona correctamente veremos el contenido de la página web que está publicando.
Para salir de Lynx podemos pulsar q y confirmar la salida.

Desde la máquina anfitriona
Ahora vamos a comprobar que Apache es accesible desde otro equipo de nuestra red.
Consultamos primero la dirección IP de Debian:
ip -br a
Supongamos que la máquina virtual tiene la dirección:
192.168.1.134
En el navegador de la máquina anfitriona escribiríamos:
http://192.168.1.134
Debemos sustituir la IP del ejemplo por la dirección real de nuestra máquina virtual.

localhost depende del equipo desde el que accedemosDentro de Debian:
http://localhost
apunta a la propia máquina Debian.
En el navegador de la máquina anfitriona, localhost apunta al anfitrión.
Para acceder desde el anfitrión a Apache instalado en Debian debemos utilizar la dirección IP de la máquina virtual.
Comprobar el puerto
Podemos comprobar que existe un proceso escuchando en el puerto 80 con:
sudo ss -ltnp | grep ':80'
ss permite consultar conexiones y puertos de red.
En este caso filtramos la salida para localizar el puerto 80, que es el puerto habitual de HTTP.
6.4. Publicar nuestro primer contenido
Apache necesita saber dónde se encuentran los archivos que debe publicar.
En la configuración predeterminada de Debian, el sitio inicial utiliza como DocumentRoot:
/var/www/html
El DocumentRoot es el directorio desde el que Apache sirve los archivos del sitio web.
Podemos representarlo así:

Examinar el directorio
Entramos en él:
cd /var/www/html
Comprobamos su contenido:
ls -l
Tras una instalación predeterminada encontraremos un documento de inicio proporcionado por el paquete de Apache.
Sustituir la página inicial
Para la práctica vamos a eliminar el archivo index.html existente:
sudo rm /var/www/html/index.html
Creamos uno nuevo:
sudo nano /var/www/html/index.html
Escribimos únicamente:
Hola, soy Tu nombre, he configurado mi primer servidor web Apache
Guardamos el archivo y salimos del editor.
En Nano:
Ctrl + Oguarda el archivo.Enterconfirma el nombre.Ctrl + Xcierra el editor.
Podemos comprobar el contenido:
cat /var/www/html/index.html
Y volver a acceder desde Lynx:
lynx http://localhost
También actualizamos el navegador de la máquina anfitriona:
http://IP_DE_DEBIAN
Ahora ambos clientes deben mostrar el contenido que acabamos de crear.

index.html si escribimos solo la IP?Cuando solicitamos /, Apache busca un documento de índice configurado para ese directorio.
Uno de los nombres habituales es index.html.
Por eso:
http://IP_DE_DEBIAN/
puede mostrar el contenido de:
/var/www/html/index.html
sin que tengamos que escribir el nombre del archivo en la URL.
6.5. Detener Apache y comprobar qué ocurre
Hasta ahora hemos accedido al servidor mientras el servicio estaba activo. Vamos a comprobar qué sucede si Apache deja de estar en ejecución.
Detenemos el servicio:
sudo systemctl stop apache2
Comprobamos su estado:
sudo systemctl status apache2
Ahora intentamos acceder de nuevo desde el navegador de la máquina anfitriona:
http://IP_DE_DEBIAN
La página ya no debería cargarse porque no hay un servidor Apache atendiendo las peticiones HTTP en ese puerto.
La máquina Debian puede seguir encendida, tener dirección IP y responder en la red, pero Apache puede estar detenido.
Son dos comprobaciones diferentes:
conectividad con la máquina ≠ disponibilidad del servicio web

Volvemos a iniciar Apache para continuar trabajando:
sudo systemctl start apache2
Comprobamos:
sudo systemctl status apache2
Dónde está la configuración de Apache
En esta unidad no vamos a administrar todavía Apache en profundidad, pero debemos localizar sus elementos principales.
En Debian encontraremos:
| Ruta | Función |
|---|---|
/etc/apache2/ | Directorio principal de configuración. |
/etc/apache2/apache2.conf | Archivo principal de configuración. |
/etc/apache2/ports.conf | Configuración relacionada con los puertos de escucha. |
/etc/apache2/sites-available/ | Definiciones de sitios disponibles. |
/etc/apache2/sites-enabled/ | Sitios que están habilitados. |
/var/www/html/ | DocumentRoot del sitio predeterminado. |
/var/log/apache2/ | Registros de acceso y errores. |
En esta unidad nos interesa instalar, iniciar, detener y comprobar el servidor.
La administración de sitios, módulos, configuración avanzada, seguridad y otros aspectos de Apache se trabajarán con mayor profundidad en la unidad dedicada a la administración de servidores web.
Apache y contenido dinámico
Apache puede participar también en aplicaciones dinámicas.
Un ejemplo clásico es la plataforma LAMP:
- Linux.
- Apache.
- MariaDB/MySQL.
- PHP.
En ese caso, Apache actúa como servidor web dentro de una plataforma más amplia. No necesitamos instalar LAMP en esta unidad.
Comprueba que puedes realizar sin ayuda estas operaciones:
- Instalar Apache con APT.
- Consultar el estado del servicio.
- Iniciar, detener, reiniciar y recargar Apache.
- Acceder a Apache desde Debian con Lynx.
- Acceder desde la máquina anfitriona mediante la IP de Debian.
- Localizar
/var/www/html. - Crear y publicar un
index.html. - Explicar por qué la web deja de responder al detener el servicio.
6.6. Para saber más
Si quieres ampliar los conceptos y comandos utilizados en este apartado, puedes consultar:
- Apache HTTP Server — documentación oficial.
- Paquete
apache2de Debian estable. apache2ctl— manual de Debian.systemctl— manual de Debian.
Estos recursos son complementarios y no es necesario estudiarlos en profundidad para seguir la unidad.