GNU/Linux >> Tutoriales Linux >  >> AlmaLinux

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

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 Apache Web Server en AlmaLinux 8.

Requisitos

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

Actualización del sistema operativo

Actualiza tu AlmaLinux sistema operativo para asegurarse de que todos los paquetes existentes estén actualizados:

sudo dnf update && sudo dnf upgrade -y

El tutorial usará el comando sudo y asumiendo que tiene estado sudo . Para verificar el estado de sudo en su cuenta:

sudo whoami

Ejemplo de salida que muestra el estado de sudo:

[joshua@localhost ~]$ sudo whoami
root

Si no ha configurado una cuenta de usuario sudo y desea hacerlo, visite nuestro tutorial sobre Cómo agregar un usuario a Sudoers en AlmaLinux .

Para usar la cuenta raíz , use el siguiente comando con la contraseña de root para iniciar sesión.

su

Instalar Apache (HTTPD)

Apache, por defecto, está en el flujo de aplicaciones de AlmaLinux 8. 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 dnf install httpd

Ejemplo de salida:

Escribe “Y” , luego presione “TECLA ENTER” para proceder.

A continuación, por defecto Apache (HTTPD) viene deshabilitado y no activado. Primero, inicie el servicio.

sudo systemctl start httpd

Opcionalmente, habilite Apache en el arranque del sistema.

sudo systemctl enable httpd

Ejemplo de salida si tiene éxito:

Created symlink /etc/systemd/system/multi-user.target.wants/httpd.service → /usr/lib/systemd/system/httpd.service.

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

systemctl status httpd

Ejemplo de salida si todo está bien:

Configurar reglas de cortafuegos

No agrega automáticamente reglas de firewall a los puertos estándar 80 o 443 al instalar Apache. Antes de continuar, debe establecer las siguientes reglas, esto dependerá de los puertos que usará, pero se enumeran todas las opciones.

Abrir el puerto 80 o HTTP:

sudo firewall-cmd --permanent --zone=public --add-service=http

Abrir el puerto 443 o HTTPS:

sudo firewall-cmd --permanent --zone=public --add-service=https

Vuelva a cargar el cortafuegos para que los cambios surtan efecto

sudo firewall-cmd --reload

Verificar servidor web Apache

Ahora que lo instaló y configuró, es hora de probar para ver si se puede acceder a Apache 2 y si 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 dnf 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.

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 thanks to Linuxcapable.com</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. De forma predeterminada, será necesario crear y configurar los directorios necesarios.

Primero, haga que los directorios necesarios para los sitios estén disponibles y habilitados. Los usuarios de Nginx también estarán familiarizados con esta configuración.

sudo mkdir /etc/httpd/sites-available
sudo mkdir /etc/httpd/sites-enabled

El siguiente paso que debe hacer es indicar a Apache que busque archivos de host virtual que deberán ubicarse en /etc/httpd/sites-disponible directorio.

Abra el archivo de configuración.

sudo nano /etc/httpd/conf/httpd.conf

Agregue lo siguiente al final del archivo.

IncludeOptional sites-enabled/*.conf

Opcionalmente, puede deshabilitar la carpeta predeterminada en la que Apache busca archivos de hosts virtuales que quizás desee evitar confusiones. Simplemente coloque un comentario junto a IncludeOptional conf.d/*.conf .

Ejemplo:

#IncludeOptional conf.d/*.conf
IncludeOptional sites-enabled/*.conf

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

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

sudo nano /etc/httpd/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 /var/www/example_domain/error.log
    CustomLog /var/www/example_domain/requests.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

El siguiente paso es habilitar el host virtual. Inicialmente, creó dos directorios, sitios-disponibles y habilitado para sitios. Ahora, deberá crear un enlace simbólico a sitios habilitados para activar el host virtual.

Para crear un enlace simbólico, utilice el siguiente ejemplo en su terminal.

sudo ln -s /etc/httpd/sites-available/example_domain.conf /etc/httpd/example_domain.conf

Una vez hecho esto, reinicie el servicio Apache.

sudo systemctl restart httpd

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 EPEL repositorio y el mod_ssl paquete para paquetes y seguridad mejor actualizados.

sudo dnf install epel-release mod_ssl -y

A continuación, instale el paquete certbot de la siguiente manera:

sudo dnf 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 .

Opcionalmente, puede configurar un trabajo cron para renovar los certificados automáticamente. Certbot ofrece una secuencia de comandos que hace esto automáticamente, y primero puede probar para asegurarse de que todo funciona realizando una ejecución en seco.

sudo certbot renew --dry-run

Si todo funciona, abra su ventana crontab usando el siguiente comando de terminal.

sudo crontab -e

A continuación, especifique la hora en que debe renovarse automáticamente. Esto debe verificarse diariamente como mínimo, y si es necesario renovar el certificado, el script no actualizará el certificado. Si necesita ayuda para encontrar un buen momento para configurar, use la herramienta gratuita crontab.guru.

00 00 */1 * * /usr/sbin/certbot-auto renew

Guardar (CTRL+O) luego salga (CTRL+X), y el cronjob se habilitará automáticamente.

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/www/example_domain con custom.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 httpd

Para iniciar el servidor web Apache:

sudo systemctl start httpd

Para reiniciar el servidor web Apache:

sudo systemctl restart httpd

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

sudo systemctl reload httpd

Para deshabilitar Apache en el arranque del servidor:

sudo systemctl disable httpd

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

sudo systemctl enable httpd

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 dnf upgrade

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

sudo dnf upgrade

Cómo eliminar (desinstalar) Apache

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

sudo dnf autoremove httpd

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


AlmaLinux
  1. Cómo instalar WordPress con Apache y Let's Encrypt SSL en Debian 11

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

  3. Cómo instalar Apache con Let's Encrypt en RHEL 8

  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 Let's Encrypt SSL con Lighttpd en CentOS 7

Cómo instalar Nginx con Let's Encrypt SSL en Fedora 35

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

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

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

Cómo proteger Apache con el certificado Let's Encrypt SSL en CentOS 8