En esta entrada te explicamos cómo instalar Apache en Debian 8 Jessie paso a paso, de modo que podrás mostrar uno o más sitios web en tu servidor o VPS Debian gracias a los servidores virtuales, y con seguridad SSL sobre protocolo HTTPS.
Tabla de contenidos
Antes de instalar Apache en Debian 8 Jessie
Si quieres completar esta guía de instalación del servidor web Apache en Debian 8 Jessie, sería interesante cumplir estas mínimas exigencias:
- Una instalación actualizada de Debian 8 Jessie.
- Acceso a línea de comandos con root o un usuario con permisos de sudo.
- Conexión a Internet.
Cómo instalar Apache en Debian 8 Jessie
Vamos a instalar el servidor web Apache en Debian 8 Jessie utilizando los paquetes presentes en los repositorios de la distribución, por lo que el primer paso es actualizar las listas de paquetes disponibles:
~$ sudo apt update
El paquete que necesitamos instalar es apache2, lo que haremos con el comando apt:
~$ sudo apt install -y apache2
Tras la descarga e instalación de Apache y sus dependencias se crea un nuevo servicio en Debian 8, el servicio apache2.service o apache2, que queda activado e iniciado automáticamente tras la instalación. En cualquier momento podemos comprobar el estado del servicio con el comando systemctl status apache2
:
Cómo acceder al servicio web Apache en Debian 8 Jessie
Si realizas las pruebas con un navegador sobre la misma máquina en la que estás realizando la instalación, puedes saltarte la configuración del firewall, pero si el servidor web va a estar disponible para una red local o Internet, es conveniente realizar los siguientes ajustes.
Cómo configurar UFW para Apache en Debian 8
Si en tu sistema Debian 8 Jessie tienes activado el firewall UFW y quieres que el servidor web Apache sea accesible desde la red, será necesario abrir los puertos HTTP y HTTPS. Para el puerto HTTP estándar (80/TCP):
~$ sudo ufw allow http
Y si vas a configurar la seguridad SSL también habrá que abrir el puerto HTTPS seguro (443/TCP):
~$ sudo ufw allow https
Conexión
Podemos acceder al servicio web desde el navegador especificando la dirección IP o el dominio del servidor. En este tutorial trabajamos sobre una máquina accesible en el dominio debian8.local, por lo que podemos usar http://debian8.local como URL:
Versión instalada
Si necesitas saber qué versión de Apache tienes instalada en Debian 8, puedes saberlo mediante el comando sudo apachectl -v
:
~$ sudo apachectl -v Server version: Apache/2.4.10 (Debian) Server built: Sep 30 2019 19:32:08
Cómo configurar Apache en Debian 8 Jessie
Para configurar Apache en Debian 8 trabajaremos sobre los distintos archivos ubicados en la ruta /etc/apache2/. Además del archivo principal, apache2.conf, y otros, encontraremos varios subdirectorios terminados en -available/ y -enabled/ donde se organizan configuraciones personalizadas, de módulos del servidor web y de servidores virtuales. Los archivos que son tenidos en cuenta son los que se encuentran sólo en los directorios -enabled/ y la estrategia suele ser crear el archivo de configuración en un directorio -available/ (según corresponda) y si deseamos activar dicha configuración, crear un enlace simbólico en el subdirectorio -enabled/ relacionado.
Para recargar la configuración de Apache usaremos el parámetro reload del comando systemctl:
~$ sudo systemctl reload apache2
Y para reiniciar el servicio, cuando activemos por ejemplo nuevos módulos, usaremos el parámetro restart del mismo comando:
~$ sudo systemctl restart apache2
Servidores virtuales (virtual host) de Apache en Debian 8
Si quieres tener diferentes sitios web accesibles desde distintos dominios o subdominios sobre el mismo servidor Debian 8, será necesario configurar servidores virtuales de Apache. El servidor por defecto es por sí mismo un servidor virtual que recoge el acceso desde la dirección IP del servidor, el dominio principal del servidor y cualquier otro dominio que apunte a su dirección IP y no tenga configurado un servidor virtual concreto.
Vamos a configurar un servidor virtual de Apache para el dominio ejemplo.local que apunta a la máquina Debian 8 sobre la que estamos trabajando. El primer paso es comprobar que efectivamente este dominio apunta al servidor Debian 8, para lo que podemos probarlo desde un navegador:
Veremos que Apache muestra la página web por defecto del servidor, porque como dijimos antes, el servidor virtual por defecto recoge cualquier petición al servidor que no pertenezca a otro servidor virtual.
Ahora crearemos un contenido de ejemplo para el nuevo servidor virtual, como el directorio de archivos web:
~$ sudo mkdir /var/www/ejemplo.local
Y un archivo HTML con una página web básica que nos ayude a comprobar el funcionamiento del servidor virtual:
~$ sudo nano /var/www/ejemplo.local/index.html
El contenido puede ser algo así:
<h1>Bienvenidos a ejemplo.local</h1>
Guardamos los cambios y cerramos el archivo. Ahora crearemos el archivo de configuración del nuevo servidor virtual, teniendo en cuenta que debe tener la extensión .conf. Como explicamos antes, seguiremos la estrategia de crear el archivo en el subdirectorio -available/ correspondiente, en este caso será sites-available/:
~$ sudo nano /etc/apache2/sites-available/ejemplo.local.conf
El contenido será:
<VirtualHost *:80> ServerName ejemplo.local DocumentRoot /var/www/ejemplo.local CustomLog /var/log/apache2/access-ejemplo.local.log combined ErrorLog /var/log/apache2/error-ejemplo.local.log </VirtualHost>
Guardamos y cerramos el archivo.
La estructura de la configuración es sencilla:
- VirtualHost: El bloque que encierra la configuración del servidor virtual. En ese caso se indica el puerto 80 para el seguro HTTP.
- ServerName: El dominio para el que configuramos el servidor.
- DocumentRoot: El directorio donde residen los archivos del sitio web.
- CustomLog: El registro de accesos al servidor virtual.
- ErrorLog: El registro de errores del servidor virtual.
Ahora crearemos un enlace simbólico de este archivo en la carpeta sites-enabled/ para que sea tenido en cuenta como parte de la configuración de Apache. No es necesario crear el enlace simbólico manualmente, ya que Apache en Debian 8 nos ofrece la herramienta a2ensite:
~$ sudo a2ensite ejemplo.local
Y ya podemos recargar la configuración del servicio para que entre en funcionamiento el nuevo servidor virtual:
~$ sudo systemctl reload apache2
Ahora podemos probar el acceso con la dirección IP o dominio principal del servidor Debian 8 y el dominio para el que hemos creado el servidor virtual:
¡Justo lo que queríamos!
Acceso seguro SSL mediante protocolo HTTPS
Para configurar el acceso seguro mediante protocolo HTTPS necesitamos activar el módulo SSL de Apache, para lo que utilizaremos la herramienta a2enmod:
~$ sudo a2enmod ssl
En esta ocasión es necesario reiniciar el servicio:
~$ sudo systemctl restart apache2
Ahora realizaremos una serie de ajustes ya sea en el servidor virtual por defecto o en los servidores virtuales adicionales, añadiendo un bloque de configuración para el puerto seguro estándar, el 443/TCP, especificando los certificados SSL usados.
Lo ideal sería usar certificados SSL firmados por autoridades certificadoras, algo imprescindible para sitios en Internet, pero para redes locales o sitios en pruebas podremos usar certificados autofirmados creados por nosotros mismos.
Crearemos unos certificados autofirmados para el dominio del servidor virtual que acabamos de configurar:
~$ sudo make-ssl-cert /usr/share/ssl-cert/ssleay.cnf /usr/share/ssl-cert/ejemplo.local.crt
Esta herramienta solicitará el dominio para el que queremos crear el certificado:
Se permitirá el uso de nombres adicionales, lo que puede ser útil si quieres usar el mismo certificado tanto para ejemplo.local como para www.ejemplo.local:
En este caso no vamos a añadir más nombres. Al terminar tendremos el nuevo certificado SSL en la ruta que hayamos especificado.
Ahora vamos a editar el archivo de configuración del servidor virtual:
~$ sudo nano /etc/apache2/sites-available/ejemplo.local.conf
Y añadimos este otro bloque al final del archivo:
... <VirtualHost *:443> ServerName ejemplo.local DocumentRoot /var/www/ejemplo.local SSLEngine on SSLCertificateFile /usr/share/ssl-cert/ejemplo.local.crt CustomLog /var/log/apache2/access-ejemplo.local.log combined ErrorLog /var/log/apache2/error-ejemplo.local.log </VirtualHost>
Guardamos y cerramos el archivo.
Como novedades en este segundo bloque VirtualHost tenemos:
- Indicamos el puerto seguro estándar, el 443, en el encabezado del bloque.
- Añadimos la directiva SSLEngine para activar el cifrado.
- Indicamos el certificado para el cifrado con la directiva SSLCertificateFile.
Recargamos la configuración de Apache para aplicar la nueva configuración:
~$ sudo systemctl reload apache2
Ahora podemos acceder al servidor virtual pero usando el protocolo HTTPS, en este ejemplo https://ejemplo.local sería la nueva URL:
Al tratarse de un certificado autofirmado, dependiendo del navegador nos lo hará saber de una u otra forma, aunque tendremos la posibilidad de aceptar el aviso y continuar con la conexión:
Y accederemos al sitio web, aunque el navegador seguirá indicando el problema con el certificado. Con certificados SSL firmados por autoridades certificadores estos problemas no existirán.
Conclusión
Ahora que sabes cómo instalar Apache en Debian 8 Jessie ya puedes servir páginas web sobre tantos dominios como necesites, usando la característica de servidores virtuales, y cifrando las conexiones con el protocolo seguro HTTPS.
En caso de que te haya surgido alguna duda o pregunta, tengas alguna sugerencia de mejora, quieras notificar un error, etc. puedes dejar un comentario.
Y si esta guía de instalación y configuración de Apache en Debian 8 Jessie te ha servido para empezar a servir páginas web y quieres agradecérmelo, puedes hacerlo dejando 1 $ de propina en PayPal:
O, si te sientes generoso por encima de la media, puedes invitarme a un café:
¡Gracias!