GNU/Linux >> Tutoriales Linux >  >> Debian

Cómo instalar y configurar Apache con Let's Encrypt TLS/SSL en Debian 11 Bullseye

Apache , también conocido como servidor Apache HTTP, ha sido una de las aplicaciones de servidor web más utilizadas a nivel mundial durante las últimas décadas. Es un software de aplicación web gratuito y de código abierto mantenido por la Apache Software Foundation . Apache proporciona algunas funciones potentes con módulos cargables dinámicamente, fácil integración con otro software y manejo de archivos estáticos, entre otras funciones populares.

En el siguiente tutorial, aprenderá cómo instalar el servidor web Apache en Debian 11 Bullseye.

Requisitos

  • SO recomendado: Diana de Debian 11
  • Cuenta de usuario: Una cuenta de usuario con privilegios sudo o acceso raíz (comando su) .

Actualización del sistema operativo

Actualice su Debian 11 Bullseye sistema operativo para asegurarse de que todos los paquetes existentes estén actualizados:

sudo apt update && sudo apt upgrade

Acceso raíz o Sudo

De forma predeterminada, cuando crea su cuenta al inicio con Debian en comparación con otras distribuciones, no recibe automáticamente el estado de sudoers. Debe tener acceso a la contraseña raíz para usar el comando su o visite nuestro tutorial sobre cómo agregar un usuario a Sudoers en Debian.

El tutorial usará el comando sudo y asumiendo que tiene estado sudo . Si no ha configurado un usuario sudo, use el siguiente comando para iniciar sesión en la raíz para continuar.

su

Método 1. Instalar Apache desde el repositorio de Debian

La primera opción para instalar Apache es usar el repositorio predeterminado de Debian. Esto es más práctico para la mayoría de los usuarios ya que es muy estable y seguro.

Para instalar Apache, abre tu terminal y ejecuta el siguiente comando:

sudo apt install apache2 -y

A continuación, verifique que la instalación se haya realizado correctamente mediante la verificación de la versión de compilación de Apache:

sudo apache2 --version

Ejemplo de salida:

Server version: Apache/2.4.51

Verifique si Apache2 se está ejecutando correctamente usando el siguiente systemctl comando:

systemctl status apache2

Ejemplo de salida si todo está bien:

Método 2. Instale Apache más reciente desde el repositorio de Ondřej Surý

De forma predeterminada, Apache está disponible en los repositorios de software de Debian. , por lo que es fácil de instalar. Sin embargo, como muchos saben con Debian, a menudo puede faltar lo que es actual, no tanto por los riesgos de seguridad. Aún así, faltan las funciones y mejoras más nuevas.

Se recomienda a los usuarios que deseen la última versión de Apache que instalen la versión de Apache 2 de Ondřej Surý. , que es el más actualizado y prediseñado con módulos más utilizados.

Primero, si no tiene curl instalado, use el siguiente comando:

sudo apt install curl -y

Para agregar el Repositorio, use el siguiente comando en su terminal:

curl -sSL https://packages.sury.org/apache2/README.txt | sudo bash -x

Actualiza tu repositorio para reflejar el nuevo cambio:

sudo apt upgrade

Ahora que ha instalado el repositorio de Apache y actualizó la lista de repositorios, instale Apache2 con lo siguiente:

sudo apt install apache2 -y

La instalación instalará todas las dependencias necesarias.

Una vez instalado, confirme la versión ejecutando el siguiente comando:

apache2 -v

Ejemplo de salida:

Server version: Apache/2.4.51

Tenga en cuenta que ambos repositorios tienen la misma versión en el momento del tutorial debido a una actualización URGENTE de CVE. Normalmente, el repositorio de Ondřej Surý está por delante del Debian 11 predeterminado en todo momento.

Verifique si Apache2 se está ejecutando correctamente usando el siguiente systemctl comando:

systemctl status apache2

Ejemplo de salida si todo está bien:

Opcional:configurar el cortafuegos UFW para Apache

Los usuarios de Debian que hayan instalado UFW deberán ajustar las reglas de UFW para permitir el acceso externo a los puertos web predeterminados. Afortunadamente, durante la instalación, Apache se registra con UFW para proporcionar algunos perfiles que se pueden usar para habilitar o deshabilitar el acceso, lo que facilita y agiliza la configuración.

De forma predeterminada, UFW no está instalado. Si desea instalar UFW, ejecute el siguiente comando en su terminal:

sudo apt install ufw -y

A continuación, habilite UFW. Cuando habilite el firewall, denegará todas las entradas y permitirá todas las salidas de forma predeterminada.

sudo ufw enable

Primero, enumere los perfiles de aplicación para ver los perfiles de Apache que están disponibles con el siguiente comando:

sudo ufw app list

Ejemplo de salida:

Available applications:
  Apache
  Apache Full
  Apache Secure

De la salida anterior, tiene tres opciones de perfil para elegir. Para desglosarlo, Apache se ejecuta en el puerto 80 (HTTP), Apache Secure se ejecuta en el puerto 443 (HTTPS) y Apache Full es una combinación de permitir ambos. El más común es Apache Full o Apache Secure.

Para el tutorial, dado que no hemos configurado SSL, habilitaremos el perfil (Apache) con el siguiente comando:

sudo ufw allow 'Apache'

Ejemplo de salida:

Rule added
Rule added (v6)

Como se indicó anteriormente, se agregaron reglas para IPV4 e IPV6. Más adelante, puede deshabilitar este perfil y habilitar solo seguro o deshabilitar la regla de Apache y usar la regla completa de Apache en su lugar.

Verificar servidor web Apache

Ahora que instaló y configuró el firewall UFW, es hora de probar para ver si se puede acceder a Apache 2 y funciona correctamente solicitando una página.

Puede acceder a la página de destino predeterminada de Apache para verificar si el software se ejecuta correctamente a través de la dirección IP de su servidor. Para averiguarlo, si no lo sabe, use el siguiente comando a continuación:

hostname -I

Debería recuperar la dirección IP interna en la que se encuentra el servidor como ejemplo:

###EXAMPLE ONLY###
192.168.50.15 

Puede obtener de 2 a 3 resultados. Pruebe cada uno hasta que encuentre la dirección IP correcta.

Si necesita su dirección IP pública (externa), use el siguiente comando en su lugar:

curl -4 icanhazip.com

Es posible que deba instalar el paquete CURL si falta. Para hacer esto, ejecute el siguiente comando:

sudo apt install curl -y

Una vez que tenga la dirección IP de su servidor, abra su navegador de Internet favorito e ingrese lo siguiente:

http://your_server_ip

Debería obtener la siguiente página en su navegador de Internet:

Enhorabuena, ha instalado el servidor web Apache 2 y actualmente está funcionando.

El siguiente paso es configurar hosts virtuales.

Crear o configurar hosts virtuales para Apache

Con el servidor web Apache, puede crear hosts virtuales para administrar configuraciones para más de un dominio que se ejecuta en un solo servidor. Si ha usado Nginx antes, es el equivalente a los bloques de servidor. En el siguiente ejemplo, el tutorial creará un dominio ejemplo-dominio.com que reemplazará con su nombre de dominio.

De forma predeterminada, Apache en Debian 11 tiene habilitado un bloque de servidor que está configurado para entregar documentos desde /var/www/html directorio. Si está operando un sitio web, puede modificar este bloque de servidor para adaptarlo al suyo. Sin embargo, si aloja varios sitios web, debe crear una nueva estructura de directorios para sus distintos dominios.

Crear o configurar directorios

En primer lugar, deje /var/www/html directorio intacto como el directorio predeterminado, luego cree un nuevo directorio, por ejemplo-domain.com, como se muestra a continuación:

sudo mkdir /var/www/example_domain

El siguiente paso es asignar la propiedad del directorio con la variable de entorno $USER:

sudo chown -R $USER:$USER /var/www/example_domain

Por lo general, los permisos de raíz web deben configurarse correctamente y puede verificarlos con el comando -ls l :

ls -l /var/www/example_domain

Ejemplo de salida:

drwxr-xr-x 2 joshua joshua 4096 Oct 10 11:46 example_domain

Como puede ver, tenemos el permiso de drwxr-xr-x, que es el equivalente a chmod 755 . Si no tiene este conjunto de permisos, ejecute el siguiente comando:

sudo chmod -R 755 /var/www/example_domain

Ahora cree una página de muestra index.html usando su editor de texto favorito. El tutorial usará nano como se muestra a continuación:

sudo nano /var/www/example_domain/index.html

En el archivo, copia y pega el siguiente código:

<html>
    <head>
        <title>Welcome to Website!</title>
    </head>
    <body>
        <h1>Success! The virtual host is working! You did not mess it up.</h1>
    </body>
</html>

Guarda el archivo (CTRL+O) , luego salga (CTRL+X) .

Crear servidor virtual

Ahora que ha creado una página de destino y ha establecido la propiedad y los permisos correctos. Ahora puede proceder a crear un archivo de host virtual. De forma predeterminada, todos los archivos de host virtual deberán estar ubicados en /etc/apache2/sites-disponible/ directorio.

Primero, use su editor de texto favorito para crear un archivo de configuración ubicado en /etc/apache2/sites-disponible/example_domain.conf como a continuación:

sudo nano /etc/apache2/sites-available/example_domain.conf

Ahora, copie y pegue lo siguiente en el archivo de bloque de configuración, tenga en cuenta que debe reemplazar su ServerName, ServerAlias, y Raíz del documento con el tuyo:

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    ServerName example_domain
    ServerAlias www.example_domain
    DocumentRoot /var/www/example_domain
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Tenga en cuenta que no olvide cambiar las directivas del servidor requeridas por las suyas propias.

Guarde el archivo de configuración usando (CTRL+O) y sal con (CTRL+X) .

Habilitar servidor virtual

Ahora que tiene listo el archivo de configuración de su host virtual, es hora de habilitarlo. Con Apache, a diferencia de Nginx, donde crearía un enlace simbólico usando el comando ln -s, Apache usa sus herramientas, como se muestra en el tutorial a continuación:

Primero, deshabilite el archivo de bloqueo del servidor instalado predeterminado existente 000-default.conf con el comando a2dissite:

sudo a2dissite 000-default.conf

Ahora habilite su archivo de host virtual con el a2ensite comando:

sudo a2ensite example_domain.conf

Ahora, como la mayoría de las aplicaciones de servidor web, Apache tiene una ejecución en seco función. Antes de ponerlo en marcha, pruebe su archivo de configuración usando el siguiente comando:

sudo apache2ctl configtest

Si todo funciona correctamente, el resultado del ejemplo debería ser:

Syntax OK

Ahora reinicie el servidor web Apache para hacer que su nuevo host virtual esté activo con el siguiente comando:

sudo systemctl restart apache2

Apache debería estar publicando actualmente la página de destino que creó para su nuevo dominio. Para probar esto, abra su navegador de Internet y escriba su nombre de dominio HTTP://example_domain donde debería obtener la siguiente página de destino que creó en el archivo index.html:

Felicitaciones, ha creado con éxito su host virtual y lo ha hecho funcionar correctamente en su dominio.

Apache seguro con el certificado SSL gratuito de Let's Encrypt

Idealmente, le gustaría ejecutar su Apache en HTTPS usando un certificado SSL . La mejor manera de hacerlo es usar Let's Encrypt, una autoridad de certificación gratuita, automatizada y abierta dirigida por el Grupo de Investigación de Seguridad de Internet (ISRG) sin fines de lucro .

Primero, instale el paquete certbot de la siguiente manera:

sudo apt install python3-certbot-apache -y

Una vez instalado, ejecute el siguiente comando para iniciar la creación de su certificado:

sudo certbot --apache --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d www.example.com

Esta es la configuración ideal que incluye forzar redireccionamientos HTTPS 301, encabezado Strict-Transport-Security y grapado OCSP. Solo asegúrese de ajustar el correo electrónico y el nombre de dominio a sus requisitos.

Ahora su URL será https://www.example.com en lugar de HTTP://www.example.com .

Tenga en cuenta que si utiliza la antigua URL HTTP , se redirigirá automáticamente a HTTPS .

Gestión del servicio Apache

Ahora que tiene Apache ejecutándose correctamente en su servidor, algunas notas clave de administración son las siguientes.

Registros del servidor Apache

Los registros del servidor Apache se pueden encontrar en el directorio /var/log/apache2/ con acceso.log y error.log siendo respetuosamente los nombres predeterminados de acceso y error dados. Esto se puede cambiar a otros nombres en su archivo de configuración de host virtual en el futuro.

Comandos de Apache

Los siguientes comandos que sin duda usarás en tu gestión del día a día al trabajar con Apache. Algunos de los más comunes son:

Para detener el servidor web Apache:

sudo systemctl stop apache2

Para iniciar el servidor web Apache:

sudo systemctl start apache2

Para reiniciar el servidor web Apache:

sudo systemctl restart apache2

Para recargar el servidor web Apache (Para cambios menores que no requieren reiniciar) :

sudo systemctl reload apache2

Para deshabilitar Apache en el arranque del servidor:

sudo systemctl disable apache2

Para iniciar Apache en el arranque del servidor (Habilitado automáticamente en la instalación) :

sudo systemctl enable apache2

Cómo actualizar Apache

Para actualizar Apache en el futuro, esto se hace con el comando que usó para verificar si su sistema está actualizado. Tenga en cuenta que siempre cree copias de seguridad o imágenes si tiene un servicio Apache que ejecuta servicios críticos. Por lo general, es bastante seguro actualizar, pero a veces pueden ocurrir errores como cualquier actualización de software.

Para actualizar Apache, use el siguiente comando:

sudo apt upgrade

Si hay una actualización de Apache disponible, use el comando:

sudo apt upgrade

Cómo eliminar (desinstalar) Apache

Para eliminar Apache si ya no lo usa, puede hacerlo con el siguiente comando:

sudo apt autoremove apache2 --purge

Este comando también eliminará las dependencias no utilizadas que venían con la instalación.


Debian
  1. Cómo instalar y configurar Drupal con Apache en Debian 9

  2. Cómo instalar Joomla con Apache y Lets Encrypt SSL en Debian 10

  3. Cómo instalar Drupal con Apache y Lets Encrypt SSL en Debian 11

  4. Cómo instalar Let's Encrypt en Ubuntu 20.04 con Apache

  5. Cómo instalar Let's Encrypt SSL con Apache en Debian 11

Cómo instalar y configurar Apache con Let's Encrypt TLS/SSL en Ubuntu 20.04

Cómo instalar Nginx con Let's Encrypt TLS/SSL en Ubuntu 20.04

Cómo instalar y configurar Apache (httpd) con Let's Encrypt TLS/SSL en AlmaLinux 8

Cómo instalar Let's Encrypt SSL con Apache en CentOS 7

Cómo instalar Let's Encrypt SSL en Ubuntu con Apache

Cómo instalar Apache con Let's Encrypt SSL en Ubuntu 20.04 LTS