Cómo instalar el servidor web Apache en CentOS 8

Introducción

Índice
  1. Introducción
  • Prerrequisitos
  • Paso 1: Instalación de Apache
  • Paso 2: Comprobación del servidor web
  • Paso 3: Gestión del proceso Apache
  • Paso 4: Configuración de hosts virtuales (recomendado)
  • Paso 5: Ajuste de los permisos de SELinux para hosts virtuales (recomendado)
    1. Ajuste de las políticas de Apache de forma universal
    2. Ajuste de las políticas de Apache en un directorio
  • Paso 6: Prueba del host virtual (recomendado)
  • Conclusión
  • El servidor HTTP Apache es el servidor web más utilizado en el mundo. Ofrece muchas funciones potentes, entre ellas módulos que se pueden cargar de forma dinámica, un sólido soporte multimedia y una amplia integración con otros programas populares.

    En esta guía, instalará un servidor web Apache con hosts virtuales en su servidor CentOS 8.

    Prerrequisitos

    Necesitará lo siguiente para completar esta guía:

    • Un usuario no root con privilegios sudo configurados en su servidor, configurado siguiendo la guía de configuración inicial del servidor para CentOS 8.
    • Asegúrese de que se configure un firewall básico siguiendo el Paso 4 de la Configuración inicial del servidor con CentOS 8 (recomendado) en la guía anterior.

    Paso 1: Instalación de Apache

    Apache está disponible dentro de los repositorios de software predeterminados de CentOS, lo que significa que puedes instalarlo con el dnfadministrador de paquetes.

    Como usuario sudo no root configurado en los requisitos previos, instale el paquete Apache:

    1. sudo dnf install httpd

    Después de confirmar la instalación, dnfse instalará Apache y todas las dependencias necesarias.

    Al completar el Paso 4 de la guía de Configuración inicial del servidor con CentOS 8 mencionada en la sección de requisitos previos, ya lo habrá instalado firewallden su servidor para atender solicitudes a través de HTTP.

    Si también planea configurar Apache para servir contenido a través de HTTPS, también querrá abrir el puerto 443habilitando el httpsservicio:

    1. sudo firewall-cmd --permanent --add-service=https

    A continuación, vuelva a cargar el firewall para que estas nuevas reglas surtan efecto:

    1. sudo firewall-cmd --reload

    Una vez recargado el firewall, estará listo para iniciar el servicio y verificar el servidor web.

    Paso 2: Comprobación del servidor web

    Apache no se inicia automáticamente en CentOS una vez que se completa la instalación, por lo que deberá iniciar el proceso de Apache manualmente:

    1. sudo systemctl start httpd

    Verifique que el servicio se esté ejecutando con el siguiente comando:

    1. sudo systemctl status httpd

    Recibirá un activeestado cuando el servicio esté en ejecución:

    Output● httpd.service - The Apache HTTP Server   Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disa   Active: active (running) since Thu 2020-04-23 22:25:33 UTC; 11s ago     Docs: man:httpd.service(8) Main PID: 14219 (httpd)   Status: "Running, listening on: port 80"    Tasks: 213 (limit: 5059)   Memory: 24.9M   CGroup: /system.slice/httpd.service           ├─14219 /usr/sbin/httpd -DFOREGROUND           ├─14220 /usr/sbin/httpd -DFOREGROUND           ├─14221 /usr/sbin/httpd -DFOREGROUND           ├─14222 /usr/sbin/httpd -DFOREGROUND           └─14223 /usr/sbin/httpd -DFOREGROUND...

    Como indica este resultado, el servicio se ha iniciado correctamente. Sin embargo, la mejor forma de comprobarlo es solicitar una página a Apache.

    Puede acceder a la página de inicio predeterminada de Apache para confirmar que el software se está ejecutando correctamente a través de su dirección IP. Si no conoce la dirección IP de su servidor, puede obtenerla de diferentes maneras desde la línea de comandos.

    Escriba qpara volver al símbolo del sistema y luego escriba:

    1. hostname -I

    Este comando mostrará todas las direcciones de red del host, por lo que obtendrá algunas direcciones IP separadas por espacios. Puede probar cada una en su navegador web para determinar si funcionan.

    Alternativamente, puedes usar curlpara solicitar tu IP a icanhazip.com, lo que te dará tu dirección IPv4 pública tal como se lee desde otra ubicación en Internet:

    1. curl -4 icanhazip.com

    Cuando tenga la dirección IP de su servidor, ingrésela en la barra de direcciones de su navegador:

    http://your_server_ip

    Verá la página web predeterminada de Apache CentOS 8:

    Esta página indica que Apache está funcionando correctamente. También incluye información básica sobre archivos y ubicaciones de directorios importantes de Apache.

    Paso 3: Gestión del proceso Apache

    Ahora que el servicio está instalado y funcionando, puedes usar diferentes comandos systemctl para administrarlo.

    Para detener su servidor web, escriba:

    1. sudo systemctl stop httpd

    Para iniciar el servidor web cuando esté detenido, escriba:

    1. sudo systemctl start httpd

    Para detener y volver a iniciar el servicio, escriba:

    1. sudo systemctl restart httpd

    Si simplemente está realizando cambios de configuración, Apache puede volver a cargarse sin interrumpir las conexiones. Para ello, utilice este comando:

    1. sudo systemctl reload httpd

    De forma predeterminada, Apache está configurado para iniciarse automáticamente cuando se inicia el servidor. Si no es esto lo que desea, deshabilite este comportamiento escribiendo lo siguiente:

    1. sudo systemctl disable httpd

    Para volver a habilitar el servicio para que se inicie durante el arranque, escriba:

    1. sudo systemctl enable httpd

    Apache ahora se iniciará automáticamente cuando el servidor se reinicie nuevamente.

    La configuración predeterminada de Apache permitirá que su servidor aloje un único sitio web. Si planea alojar varios dominios en su servidor, deberá configurar hosts virtuales en su servidor web Apache.

    Paso 4: Configuración de hosts virtuales (recomendado)

    Al utilizar el servidor web Apache, puede utilizar hosts virtuales (si está más familiarizado con Nginx, estos son similares a los bloques de servidor) para encapsular los detalles de configuración y alojar más de un dominio desde un solo servidor. En este paso, configurará un dominio llamado example.com, pero debe reemplazarlo con su propio nombre de dominio. Si está configurando un nombre de dominio con DigitalOcean, consulte nuestra Documentación de redes.

    Apache en CentOS 8 tiene un host virtual habilitado de manera predeterminada que está configurado para servir documentos desde el /var/www/htmldirectorio. Si bien esto funciona bien para un solo sitio, puede volverse complicado si está alojando varios sitios. En lugar de modificar /var/www/html, creará una estructura de directorio dentro /var/wwwdel example.comsitio, dejando /var/www/htmlen su lugar como el directorio predeterminado que se servirá si una solicitud de cliente no coincide con ningún otro sitio.

    Cree el htmldirectorio de example.comla siguiente manera, utilizando la -pbandera para crear cualquier directorio padre necesario:

    1. sudo mkdir -p /var/www/example.com/html

    Cree un directorio adicional para almacenar archivos de registro del sitio:

    1. sudo mkdir -p /var/www/example.com/log

    A continuación, asigne la propiedad del htmldirectorio con la $USERvariable ambiental:

    1. sudo chown -R $USER:$USER /var/www/example.com/html

    Asegúrese de que su raíz web tenga los permisos predeterminados establecidos:

    1. sudo chmod -R 755 /var/www

    A continuación, crea una index.htmlpágina de muestra utilizando vitu editor favorito:

    1. sudo vi /var/www/example.com/html/index.html

    Presione ipara cambiar al INSERTmodo y agregar el siguiente HTML de muestra al archivo:

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

    html  head    titleWelcome to Example.com!/title  /head  body    h1Success! The example.com virtual host is working!/h1  /body/html

    Guarde y cierre el archivo presionando ESC, escribiendo :wqy presionando ENTER.

    Una vez que el directorio de su sitio y el archivo de índice de muestra estén listos, ya casi está listo para crear los archivos de host virtual. Los archivos de host virtual especifican la configuración de sus sitios independientes y le indican al servidor web Apache cómo responder a las distintas solicitudes de dominio.

    Antes de crear sus hosts virtuales, deberá crear un sites-availabledirectorio para almacenarlos. También creará el sites-enableddirectorio que le indica a Apache que un host virtual está listo para brindar servicio a los visitantes. El sites-enableddirectorio contendrá enlaces simbólicos a los hosts virtuales que deseamos publicar. Cree ambos directorios con el siguiente comando:

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

    A continuación, deberá indicarle a Apache que busque hosts virtuales en el sites-enableddirectorio. Para ello, edite el archivo de configuración principal de Apache con vi o su editor de texto favorito y agregue una línea que declare un directorio opcional para archivos de configuración adicionales:

    1. sudo vi /etc/httpd/conf/httpd.conf

    Pulse mayúscula Gpara navegar hasta el final del archivo. A continuación, pulse i para cambiar al INSERTmodo y añadir la siguiente línea al final del archivo:

    /etc/httpd/conf/httpd.conf

    ...# Supplemental configuration## Load config files in the "/etc/httpd/conf.d" directory, if any.IncludeOptional conf.d/*.confIncludeOptional sites-enabled/*.conf

    Guarde y cierre el archivo cuando haya terminado de agregar esa línea. Ahora que tiene los directorios del host virtual en su lugar, creará su archivo de host virtual.

    Comience creando un nuevo archivo en el sites-availabledirectorio:

    1. sudo vi /etc/httpd/sites-available/example.com.conf

    Agregue el siguiente bloque de configuración y cambie el example.comdominio a su nombre de dominio:

    /etc/httpd/sitios-disponibles/example.com.conf

    VirtualHost *:80    ServerName www.example.com    ServerAlias example.com    DocumentRoot /var/www/example.com/html    ErrorLog /var/www/example.com/log/error.log    CustomLog /var/www/example.com/log/requests.log combined/VirtualHost

    Esto le indicará a Apache dónde encontrar directamente la raíz que contiene los documentos web de acceso público. También le indicará a Apache dónde almacenar los registros de errores y solicitudes para este sitio en particular.

    Guarde y cierre el archivo cuando haya terminado.

    Ahora que ha creado los archivos del host virtual, deberá habilitarlos para que Apache sepa que debe entregárselos a los visitantes. Para ello, cree un enlace simbólico para cada host virtual en el sites-enableddirectorio:

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

    Su host virtual ya está configurado y listo para ofrecer contenido. Antes de reiniciar el servicio Apache, asegurémonos de que SELinux tenga las políticas correctas para sus hosts virtuales.

    Paso 5: Ajuste de los permisos de SELinux para hosts virtuales (recomendado)

    SELinux es un módulo de seguridad del kernel de Linux que ofrece una mayor seguridad para los sistemas Linux. CentOS 8 viene equipado con SELinux configurado para funcionar con la configuración predeterminada de Apache. Dado que cambió la configuración predeterminada al configurar un directorio de registro personalizado en el archivo de configuración de hosts virtuales, recibirá un error si intenta iniciar el servicio Apache. Para resolver esto, debe actualizar las políticas de SELinux para permitir que Apache escriba en los archivos necesarios.

    Existen diferentes formas de establecer políticas en función de las necesidades de su entorno, ya que SELinux le permite personalizar su nivel de seguridad. Este paso cubrirá dos métodos para ajustar las políticas de Apache: de manera universal y en un directorio específico. Ajustar las políticas en directorios es más seguro y, por lo tanto, es el enfoque recomendado.

    Ajuste de las políticas de Apache de forma universal

    Si se establece la política de Apache de forma universal, se le indicará a SELinux que trate todos los procesos de Apache de forma idéntica mediante el uso del httpd_unifiedvalor booleano. Si bien este enfoque es más conveniente, no le brindará el mismo nivel de control que un enfoque que se centra en una política de archivo o directorio.

    Ejecute el siguiente comando para establecer una política universal de Apache:

    1. sudo setsebool -P httpd_unified 1

    El setseboolcomando cambia los valores booleanos de SELinux. El -Pindicador actualizará el valor de tiempo de arranque, lo que hará que este cambio persista después de los reinicios. httpd_unifiedes el valor booleano que le indicará a SELinux que trate todos los procesos Apache como del mismo tipo, por lo que lo habilitó con un valor de 1.

    Ajuste de las políticas de Apache en un directorio

    La configuración individual de los permisos de SELinux para el directorio le dará más control sobre sus políticas de Apache, pero también puede requerir más mantenimiento. Dado que esta opción no establece políticas de manera universal, deberá configurar manualmente el tipo de contexto para cualquier directorio de registro nuevo especificado en sus configuraciones de host virtual./var/www/example.com/log

    Primero, verifique el tipo de contexto que SELinux le dio al directorio:/var/www/example.com/log

    1. sudo ls -dlZ /var/www/example.com/log/

    Este comando enumera e imprime el contexto SELinux del directorio. Recibirá un resultado similar al siguiente:

    Outputdrwxr-xr-x. 2 root root unconfined_u:object_r:httpd_sys_content_t:s0 6 Apr 23 23:51 /var/www/example.com/log/

    El contexto actual es httpd_sys_content_t, que indica a SELinux que el proceso Apache solo puede leer archivos creados en este directorio. En este tutorial, cambiará el tipo de contexto del directorio a . Este tipo permitirá a Apache generar y adjuntar archivos de registro de aplicaciones web:/var/www/example.com/loghttpd_log_t

    1. sudo semanage fcontext -a -t httpd_log_t "/var/www/example.com/log(/.*)?"

    A continuación, utilice el restoreconcomando para aplicar estos cambios y hacer que persistan después de los reinicios:

    1. sudo restorecon -R -v /var/www/example.com/log

    La -Rbandera ejecuta este comando de forma recursiva, lo que significa que actualizará todos los archivos existentes para utilizar el nuevo contexto. La -vbandera imprimirá los cambios de contexto que realizó el comando. Recibirá la siguiente salida que confirma los cambios:

    OutputRelabeled /var/www/example.com/log from unconfined_u:object_r:httpd_sys_content_t:s0 to unconfined_u:object_r:httpd_log_t:s0

    Puedes enumerar los contextos una vez más para ver los cambios:

    1. sudo ls -dlZ /var/www/example.com/log/

    La salida refleja el tipo de contexto actualizado:

    Outputdrwxr-xr-x. 2 root root unconfined_u:object_r:httpd_log_t:s0 6 Apr 23 23:51 /var/www/example.com/log/

    Ahora que el directorio está usando el tipo, está listo para probar su configuración de host virtual./var/www/example.com/loghttpd_log_t

    Paso 6: Prueba del host virtual (recomendado)

    Una vez que se haya actualizado el contexto de SELinux con cualquiera de los métodos, Apache podrá escribir en el directorio. Ahora puede reiniciar correctamente el servicio Apache:/var/www/example.com/log

    1. sudo systemctl restart httpd

    Enumere el contenido del directorio para ver si Apache creó los archivos de registro:/var/www/example.com/log

    1. ls -lZ /var/www/example.com/log

    Recibirá confirmación de que Apache pudo crear los archivos error.logy requests.logespecificados en la configuración del host virtual:

    Output-rw-r--r--. 1 root root system_u:object_r:httpd_log_t:s0 0 Apr 24 00:06 error.log-rw-r--r--. 1 root root system_u:object_r:httpd_log_t:s0 0 Apr 24 00:06 requests.log

    Ahora que ha configurado su host virtual y actualizado los permisos de SELinux, Apache servirá su nombre de dominio. Puede probar esto navegando a , donde debería ver algo como esto:http://example.com

    Esto confirma que su host virtual está configurado correctamente y que ofrece contenido. Repita los pasos 4 y 5 para crear nuevos hosts virtuales con permisos SELinux para dominios adicionales.

    Conclusión

    En este tutorial, instaló y administró el servidor web Apache. Ahora que tiene instalado su servidor web, tiene muchas opciones para el tipo de contenido que puede ofrecer y las tecnologías que puede usar para crear una experiencia más completa.

    Si desea desarrollar una pila de aplicaciones más completa, puede consultar este artículo sobre cómo configurar una pila LAMP en CentOS 8.

    SUSCRÍBETE A NUESTRO BOLETÍN 
    No te pierdas de nuestro contenido ni de ninguna de nuestras guías para que puedas avanzar en los juegos que más te gustan.

    Deja una respuesta

    Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

    Subir

    Este sitio web utiliza cookies para mejorar tu experiencia mientras navegas por él. Este sitio web utiliza cookies para mejorar tu experiencia de usuario. Al continuar navegando, aceptas su uso. Mas informacion