Cómo instalar Apache HTTPD en CentOS Stream 9

Apache HTTP Server (httpd) es uno de los servidores web más populares y robustos disponibles, conocido por su flexibilidad, rendimiento y amplia gama de funciones. Es ampliamente utilizado para alojar sitios web y aplicaciones web. Configurar Apache en CentOS Stream 9 le permite aprovechar sus potentes capacidades para sus necesidades de alojamiento web. Además, proteger su sitio web con un certificado SSL gratuito de Let's Encrypt garantiza que su sitio esté cifrado y sea confiable.

Para instalar el servidor Apache HTTP en CentOS Stream 9 y configurar un certificado SSL Let's Encrypt, siga los pasos descritos en esta guía. Esto le proporcionará una configuración de servidor web segura y eficiente.

Garantizar un sistema CentOS Stream completamente actualizado antes de la instalación de Apache

Antes de proceder con la instalación de Apache en su máquina CentOS Stream, debemos verificar que nuestro sistema esté completamente actualizado. Esto es más que una simple medida de precaución. Actualizar su sistema ayuda a prevenir problemas de compatibilidad y mejora significativamente su estabilidad, seguridad y rendimiento.

Para poner esto en marcha, ejecute el siguiente comando en su terminal:

sudo dnf upgrade --refresh

Este comando activa el mecanismo de actualización, obteniendo e instalando las últimas actualizaciones de software y parches de seguridad de su sistema. Es fundamental permitir que el proceso de actualización concluya por completo antes de continuar con la instalación de Apache. Esto garantiza que su sistema esté en óptimas condiciones, configurado de manera óptima y preparado para ejecutar Apache sin encontrar inconvenientes ni problemas de compatibilidad.

Instale Apache HTTPD mediante el comando DNF

El segundo paso es instalar Apache, o HTTPD, en su sistema CentOS Stream. Este es un proceso sencillo, cortesía del poderoso administrador de paquetes DNF. El administrador de paquetes DNF, o Dandified Yum, simplifica la instalación, actualización y administración de paquetes de software.

Inicie la instalación de Apache (HTTPD) ejecutando el siguiente comando en su terminal:

sudo dnf install httpd

Este comando inicia el mecanismo de instalación y busca e instala todos los componentes necesarios para permitir que Apache (HTTPD) se ejecute en su sistema. El proceso debería finalizar en sólo unos minutos. Luego, tendrás Apache (HTTPD) completamente instalado y listo para usar.

Activación y configuración de Apache HTTPD para ejecutarse al iniciar el sistema

Luego de la instalación exitosa de Apache (HTTPD) en su sistema CentOS Stream, la siguiente acción clave es activar el servicio y configurarlo para que se inicie automáticamente al iniciar el sistema. Apache (HTTPD) siempre está activo y preparado para atender solicitudes web cuando su sistema se enciende.

Si el servicio Apache (HTTPD) no está activo o configurado para ejecutarse de forma predeterminada, use estos comandos en su terminal para iniciar el servicio y asegurarse de que se ejecute al iniciar el sistema:

sudo systemctl start httpd
sudo systemctl enable httpd

El primer comando, sudo systemctl start httpd, activa el servicio Apache (HTTPD), mientras que el segundo comando, sudo systemctl enable httpd, configura el servicio para que se ejecute automáticamente al iniciar el sistema. Al implementar estos dos comandos, garantiza que Apache (HTTPD) esté constantemente accesible y activo, listo para atender las solicitudes web cada vez que se enciende su sistema.

Como alternativa, puedes condensar los dos pasos anteriores en un solo comando:

sudo systemctl enable httpd --now

La opción –now en el comando sudo systemctl enable httpd –now inicia simultáneamente el servicio Apache (HTTPD) y lo configura para que se inicie automáticamente al iniciar el sistema. Este único comando unifica los dos comandos separados de los pasos anteriores, lo que hace que el proceso sea más ágil y eficiente.

Verifique el estado del servicio Apache HTTPD

Finalmente, debemos verificar la implementación y el funcionamiento exitosos de Apache (HTTPD) utilizando el siguiente comando systemctl:

systemctl status httpd

Este comando le proporciona el estado en tiempo real del servicio Apache (HTTPD), incluidos los errores o mensajes que puedan haber surgido. Al examinar el estado del servicio, puede confirmar que Apache (HTTPD) se está ejecutando sin problemas.

Configurar reglas de FirewallD

Después de instalar Apache (HTTPD) en CentOS Stream, es posible que observe que el firewall no incluye reglas preconfiguradas para los puertos estándar 80 y 443. Debe configurar estas reglas de firewall antes de continuar para mejorar la seguridad de su aplicación web.

Configure las reglas del firewall utilizando la herramienta firewall-cmd, la utilidad de administración de firewall predeterminada de CentOS Stream. Las reglas que necesita configurar variarán según los puertos que desee utilizar. Sin embargo, enumeramos todas las opciones críticas en los siguientes pasos.

Apertura de puertos 80 y 443

Ejecutaremos los dos primeros comandos para abrir los puertos 80 y 443. Estos puertos manejan el tráfico HTTP y HTTPS entrante, respectivamente.

Para abrir el puerto 80 o HTTP, ejecute el siguiente comando:

sudo firewall-cmd --permanent --add-port=80/tcp

A continuación, abra el puerto 443, o HTTPS, con el siguiente comando:

sudo firewall-cmd --permanent --add-port=443/tcp

Verificar cambios en el firewall

Después de especificar los puertos a abrir, debemos indicarle al firewall que implemente estos cambios. Haga esto recargando las reglas del firewall usando el siguiente comando:

sudo firewall-cmd --reload

Comprender las implicaciones

Es fundamental tener un profundo conocimiento de las implicaciones de seguridad que conlleva la apertura de puertos en su sistema. Al abrir selectivamente sólo los puertos necesarios, refuerza la defensa de su aplicación web contra el acceso no autorizado y posibles amenazas a la seguridad. Esto subraya por qué es fundamental configurar correctamente las reglas de firewall para su instalación de Apache (HTTPD) en CentOS Stream.

Verificación del acceso HTTPD de Apache

Después de configurar meticulosamente Firewalld, asegúrese de poder acceder a la página de inicio de Apache (HTTPD) a través de su navegador web. Inicie su navegador web favorito y vaya a http://localhost o http://your_server_ip.

Para acceder a través de la IP de su servidor:

http://your_server_ip

Alternativamente, para acceder a través de localhost:

http://localhost

Cuando configure todo con precisión, la página de inicio predeterminada de Apache (HTTPD) lo recibirá. Esta página muestra un mensaje que confirma que el servidor funciona según lo esperado. La página se parecerá a:

Crear y configurar un host virtual

Esta sección profundizará en el aspecto práctico de la creación de un host virtual utilizando Apache (HTTPD), un servidor web flexible conocido por su capacidad para alojar múltiples dominios en un solo servidor. Esta utilidad es análoga al atributo "bloques de servidor" de Nginx. En el tutorial siguiente, ilustraremos cómo formular un host virtual para un dominio determinado, representado como "dominio-ejemplo.com". Naturalmente, sustituirá este dominio de muestra por su nombre de dominio específico.

La creación de hosts virtuales facilita la gestión independiente de las configuraciones para cada dominio. Esto proporciona control sobre varias facetas del entorno de su servidor web, incluida la seguridad, el rendimiento y la configuración personalizada. Esto puede resultar particularmente ventajoso si desea alojar varios sitios web en un solo servidor o mantener configuraciones separadas para distintas secciones de su sitio web. Con Apache (HTTPD), puede diseñar fácilmente hosts virtuales que cumplan con estos requisitos.

Crear y configurar directorios

Comenzar la configuración de su host virtual implica crear un nuevo directorio que sirva como carpeta raíz para su host virtual. El nombre de este directorio normalmente coincide con su nombre de dominio.

Por ejemplo, si su nombre de dominio es "ejemplo.com", generaría un nuevo directorio con el comando:

sudo mkdir /var/www/example.com

Este comando requiere el reemplazo de "ejemplo.com" con su nombre de dominio. Por lo tanto, el directorio albergará archivos y activos asociados con sus hosts virtuales, incluidos archivos HTML, imágenes, scripts y otros recursos.

La configuración de directorios individuales para cada host virtual facilita una clara separación de preocupaciones, lo cual es importante en el contexto de la seguridad y la resolución de problemas.

El nuevo directorio puede requerir propiedad y permisos adecuados para permitir el acceso a Apache (HTTPD). Los siguientes comandos establecen la propiedad y los permisos correctos:

sudo chown -R apache:apache /var/www/example.com
sudo chmod -R 755 /var/www/example.com

Con el nuevo directorio preparado, podemos configurar su servidor virtual.

Creando un archivo index.html

Un editor de texto genera un archivo index.html para su host virtual. Para nuestro tutorial, usaremos el editor de texto nano, aunque puedes elegir el editor de texto que prefieras.

Ejecute el siguiente comando para crear el archivo index.html:

sudo nano /var/www/example.com/index.html

En el editor de texto, comience a crear el contenido para su archivo index.html. Este archivo normalmente sirve como primer punto de contacto para un usuario que visita su sitio web.

He aquí un ejemplo sencillo:

<html>
  <head>
    <title>Example Domain</title>
  </head>
  <body>
    <h1>Welcome to Example Domain</h1>
    <p>This is a sample page for the domain example.com.</p>
  </body>
</html>

Al finalizar el contenido de su archivo index.html, guarde el archivo y salga del editor de texto. En el caso de nano, esto se logra presionando Ctrl + X, Y y Enter.

Configuración de directorios de hosts virtuales

Garantizar la configuración adecuada del directorio para el servidor web Apache garantiza una configuración fluida y organizada. Específicamente, se utilizan los directorios “sitios disponibles” y “sitios habilitados”. Esta configuración refleja la adoptada en Nginx y promueve configuraciones organizadas y accesibles.

Para crear estos directorios, utilice el siguiente comando:

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

Posteriormente, indique a Apache que busque archivos de host virtual en el directorio “/etc/httpd/sites-available”:

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

En el archivo de configuración abierto, agregue la línea "IncludeOptional sites-enabled/*.conf" al final. Esta línea le indica a Apache que incluya todos los archivos de configuración del host virtual en el directorio "sitios habilitados".

IncludeOptional sites-enabled/*.conf

Opcionalmente, es posible que desee comentar "IncludeOptional conf.d/*.conf", deshabilitando la carpeta predeterminada donde Apache busca archivos de host virtual. Esto ayuda a prevenir cualquier posible confusión.

Ejemplo:

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

Para guardar el archivo y salir, use la combinación de teclado CTRL + O, seguida de CTRL + X.

Crear el archivo de configuración del host virtual

A continuación, utilizando su editor de texto, crearemos un archivo de configuración de host virtual en /etc/httpd/sites-available/example.com.conf.

sudo nano /etc/httpd/sites-available/example.com.conf

Complete la información del marcador de posición en el siguiente bloque de configuración con su nombre de servidor, alias de servidor y raíz de documento antes de copiarlo en el archivo de configuración del host virtual ubicado en /etc/httpd/sites-available/example.com.conf.

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    ServerName example_domain
    ServerAlias www.example_domain
    DocumentRoot /var/www/example.com/
</VirtualHost>

Ajuste las directivas del servidor para que se ajusten a sus requisitos específicos.

Paso 5: Modificar los permisos de acceso

Para otorgar acceso público a su servidor, modifique los permisos de acceso para el servicio Apache en el archivo de configuración /etc/httpd/conf/httpd.conf. La configuración predeterminada deniega el acceso. Si descuida este paso, puede encontrar errores HTTP 403 cuando las personas intenten acceder a su sitio web.

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

Agregue el siguiente bloque a su archivo, asegurándose de ajustar el directorio raíz para que coincida con el suyo.

<Directory /var/www/example.com/>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>

Para guardar estos cambios, use la combinación de teclado CTRL+O y salga del editor de texto usando CTRL+X.

Paso 6: habilite el host virtual para Apache en CentOS Stream

Para configurar el host virtual, debes activarlo como paso final. Cree un enlace simbólico desde el directorio de sitios disponibles al directorio de sitios habilitados usando el comando que se proporciona a continuación:

sudo ln -s /etc/httpd/sites-available/example.com.conf /etc/httpd/sites-enabled/

Debe reiniciar el servicio Apache para completar el proceso de activación.

sudo systemctl restart httpd

Después de reiniciar el servicio Apache, abra su navegador web y navegue hasta "HTTP://example_domain". Si no ha registrado un dominio, puede acceder a su sitio web utilizando la dirección IP (local o remota). Si configura todo correctamente, la página de destino que creó en el archivo index.html lo recibirá.

Comandos y consejos adicionales

Directorios y archivos seguros

Configuración de permisos seguros

Usar permisos seguros para archivos y directorios en Apache en CentOS es crucial. A menudo se conceden permisos excesivos, como acceso público completo. Para evitar riesgos de seguridad, se recomienda limitar los permisos. Para directorios, utilice chmod 755 y para archivos, chmod 644. A continuación se muestran los comandos para configurar estos permisos. Recuerde, algunas aplicaciones pueden requerir permisos diferentes, como 777 para phpBB.

  • Para directorios:
sudo find /var/www/example.com/ -type d -exec chmod 755 "{}" \;
  • Para archivos:
sudo find /var/www/example.com/ -type f -exec chmod 644 "{}" \;

Estos comandos reemplazarán /var/www/example.com/ con la ruta del directorio adecuada. Este paso no garantiza una seguridad completa, pero reduce significativamente los riesgos al impedir el acceso público a archivos cruciales.

Asegure Apache con Let's Encrypt SSL

Instalación del certificado SSL Let's Encrypt

Es necesario proteger su servidor Apache con un certificado SSL para obtener conexiones seguras entre cliente y servidor. Let's Encrypt proporciona un certificado SSL automatizado y gratuito. Primero, asegúrese de que el repositorio CRB esté habilitado y que el repositorio EPEL esté instalado. El proceso de instalación varía ligeramente entre CentOS Stream 9 y 8.

Para CentOS Stream 9:
  • Habilitar CRB:
sudo dnf config-manager --set-enabled crb
  • Instalar el repositorio EPEL:
sudo dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm

A continuación, instale mod_ssl y ajustar:

sudo dnf install mod_ssl

Active EPEL en su distribución CentOS Stream y luego instale Snap.

sudo dnf install snapd -y

Después de la instalación, asegúrese de habilitar Snap y del inicio del sistema inmediatamente.

sudo systemctl enable snapd --now

El siguiente paso es instalar el núcleo snap, que se encargará de todas las dependencias necesarias para que se ejecuten los paquetes snap.

sudo snap install core

Cree un enlace simbólico para el directorio snapd.

sudo ln -s /var/lib/snapd/snap /snap

Utilice el siguiente comando de terminal para instalar el paquete instantáneo Certbot.

sudo snap install --classic certbot

Finalmente, cree otro enlace simbólico para el paquete instantáneo Certbot.

sudo ln -s /snap/bin/certbot /usr/bin/certbot

Ejecute Certbot para Apache

Ejecute el siguiente comando en su terminal para generar su certificado SSL usando Certbot.

sudo certbot --dry-run --apache --agree-tos --redirect --hsts --staple-ocsp --email you@example.com -d www.example.com

Para aquellos nuevos en Let's Encrypt, pueden buscar más información sobre la abreviatura en el comando.

  • La opción “–ejecución en seco” le permite ejecutar una prueba del proceso de generación de certificados sin alterar el sistema. Esta opción es valiosa para realizar pruebas.
  • La opción “–apache” es generar un certificado para un servidor web Apache.
  • La opción “–agree-tos” le permite aceptar los términos de servicio de Let's Encrypt, la autoridad certificadora que proporciona el certificado SSL.
  • La opción “–redirect” redirige automáticamente todo el tráfico HTTP a HTTPS.
  • La opción “–hsts” habilita la seguridad de transporte estricta HTTP (HSTS). Esta característica de seguridad ayuda a proteger contra ataques de degradación de protocolo y secuestro de cookies al indicar a los navegadores que solo accedan a su sitio web a través de una conexión HTTPS segura.
  • La opción “–staple-ocsp” habilita el grapado del Protocolo de estado de certificados en línea (OCSP), que verifica el estado de revocación de un certificado SSL sin comunicarse con la autoridad certificadora.
  • Utilice la opción “–email” para especificar la dirección de correo electrónico que desea asociar con el certificado.
  • La opción “-d” especifica el nombre de dominio para el cual generará el certificado. En este ejemplo, el nombre de dominio es "www.example.com".

Alternativamente, puede usar el siguiente comando y seguir las instrucciones paso a paso para una experiencia más accesible.

sudo certbot certonly --apache

Al ejecutar el comando con los parámetros mencionados, está indicando a certbot que cree un certificado SSL para su dominio "www.example.com" y al mismo tiempo incluye las características de seguridad necesarias, como una redirección HTTPS 301 forzada, un encabezado de seguridad de transporte estricto y Grapado OCSP. Es importante tener en cuenta que debes reemplazar la dirección de correo electrónico en el comando con la tuya y también asegurarte de reemplazar el nombre de dominio “www.example.com” con el nombre de dominio que desees.

Configurar SSL en Apache

Después de obtener el certificado SSL, configure su servidor Apache para usarlo. Editar el ssl.conf archivo y agregue las siguientes líneas, reemplazando “ejemplo.com” con su dominio:

sudo nano /etc/httpd/conf.d/ssl.conf

En el archivo de configuración, agregue las siguientes líneas: reemplace "ejemplo.com" con su nombre de dominio.

SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/example.com/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/example.com/chain.pem

Guarde los cambios y reinicie Apache para que la configuración surta efecto.

sudo systemctl restart httpd 

Esta configuración garantiza una comunicación cifrada y segura entre los navegadores y su sitio web.

Automatización de la renovación de certificados

Para mantener el certificado SSL actualizado, configure un trabajo cron para la renovación automática. Pruebe el proceso de renovación con un ensayo:

sudo certbot renew --dry-run

Verifique los temporizadores usando el comando systemctl list-timers y confirme que "snap.certbot.renew.timer" esté presente.

systemctl list-timers snap.certbot.renew.timer

Utilice el comando "systemctl list-timers –all" para ver los temporizadores activos e inactivos en su sistema. Este comando muestra una descripción general de todos los temporizadores, incluido "snap.certbot.renew.timer". El “snap.certbot.renew.timer” garantiza la verificación y renovación automática de su certificado antes de su vencimiento. De esta forma, eliminas preocupaciones sobre el proceso de renovación.

systemctl list-timers --all

Gestión HTTPD de Apache

Con Apache configurado exitosamente en su servidor, aquí hay algunos puntos esenciales que debe recordar para una administración efectiva.

Registros del servidor Apache

Los registros del servidor Apache se almacenan en el directorio /var/log/httpd/. Los nombres de archivo predeterminados para los registros de acceso y errores son access.log y error.log, respectivamente. Sin embargo, es posible cambiar estos nombres en el archivo de configuración del host virtual.

A continuación se muestra un ejemplo de cómo cambiar los registros del servidor Apache en el archivo de configuración del host virtual.

<VirtualHost *:80>
    ServerName www.example.com
    DocumentRoot /var/www/example.com
    
    # Change access log to custom-access.log
    CustomLog /var/log/httpd/custom-access.log combined
    
    # Change error log to custom-error.log
    ErrorLog /var/log/httpd/custom-error.log
</VirtualHost>

Este ejemplo cambia los registros de acceso y errores a custom-access.log y custom-error.log, respectivamente. Puede cambiar los nombres de los archivos de registro al que prefiera y actualizar la ruta correspondiente en el archivo de configuración del host virtual.

Comandos Apache

Estos son algunos de los comandos utilizados con frecuencia al administrar Apache:

Detenga el servidor web Apache:

sudo systemctl stop httpd

Inicie el servidor web Apache:

sudo systemctl start httpd

Reinicie el servidor web Apache:

sudo systemctl restart httpd

Vuelva a cargar el servidor web Apache:

sudo systemctl reload httpd

Deshabilite Apache en el arranque del servidor:

sudo systemctl disable httpd

Habilite Apache en el arranque del servidor:

sudo systemctl enable httpd

Cómo actualizar Apache HTTPD

Para mantener Apache actualizado, ejecute el comando que usa normalmente para verificar si su sistema está actualizado.

sudo dnf update --refresh

Es importante realizar copias de seguridad o crear imágenes de su sistema antes de realizar cualquier actualización, ya que a veces pueden ocurrir errores. El siguiente comando actualizará todos los paquetes del sistema, incluido Apache, y le solicitará que actualice.

Cómo eliminar Apache HTTPD

Para desinstalar Apache de su sistema, utilice el siguiente comando.

sudo systemctl disable httpd --now

Ahora, use el siguiente comando para eliminar Apache por completo.

sudo dnf remove httpd

Los archivos sobrantes pueden persistir en el directorio principal /etc/httpd, así que borremos esa carpeta.

sudo rm -R /etc/httpd/

Conclusión

Con Apache HTTP Server y Let's Encrypt configurados correctamente en su sistema CentOS Stream, su sitio web será sólido y seguro. Actualizar Apache periódicamente y renovar su certificado SSL Let's Encrypt le ayudará a mantener una seguridad y un rendimiento óptimos. Disfrute de la confiabilidad y seguridad que Apache HTTP Server y Let's Encrypt aportan a su entorno de alojamiento web.

Joshua James
Sígueme
Últimas entradas de Joshua James (ver todo)

Deja un comentario