Búsqueda de sitios web

Cómo instalar Apache con Virtual Host en CentOS 8


El servidor web Apache es un servidor web HTTP popular y de código abierto que continúa disfrutando de una enorme participación de mercado en la industria del hosting. Incluye un montón de funciones que incluyen mejoras de módulos, compatibilidad con múltiples protocolos, configuración simplificada y compatibilidad con varios idiomas, por mencionar sólo algunas.

Lea también: Cómo instalar Nginx en CentOS 8

En esta guía, lo guiaremos a través de la instalación del servidor web Apache en CentOS 8 y RHEL 8 con un entorno de host virtual. Al momento de escribir este tutorial, la última versión de Apache es Apache 2.2.43.

Instalación del servidor web Apache

Para comenzar, primero actualice la lista de paquetes del sistema CentOS 8 o RHEL 8 usando el siguiente comando dnf.

sudo dnf update

Una vez que se complete la actualización, instale el servidor web Apache ejecutando el siguiente comando.

sudo dnf install httpd

Una vez instalado, puede verificar la versión de Apache ejecutando el comando rpm.

rpm -qi httpd

El comando imprime una serie de información como la versión, fecha de lanzamiento, compilación y arquitectura del paquete.

Para iniciar el servicio web Apache HTTP, ejecute el comando systemctl.

sudo systemctl start httpd

Para confirmar si el servicio se está ejecutando, ejecute.

sudo systemctl status httpd

En el resultado, el estado "activo" en verde indica que el servidor web Apache está en funcionamiento.

Para despejar cualquier duda sobre el funcionamiento del servidor web, solicite una página de prueba de Apache navegando por la dirección IP o el nombre de dominio de su servidor como se muestra.

http://server-ip  

Puede obtener la IP de su servidor ejecutando el comando ifconfig. Si tu servidor está alojado en la nube, puedes obtener la IP pública ejecutando el comando curl.

curl ifconfig.me 
OR
curl -4 icanhazip.com

Cuando navega por la dirección IP del servidor, debería aparecer la siguiente página web.

Esta es una confirmación segura de que el servidor web se está ejecutando.

Administrar el servidor web Apache

Con Apache instalado y en ejecución, puede utilizar la herramienta de inspección systemctl para administrar Apache.

Por ejemplo, para detener Apache, ejecute el comando:

sudo systemctl stop httpd

Para iniciar el servicio una vez más, ejecute:

sudo systemctl start httpd

Si ha realizado cambios en alguno de sus archivos de configuración y necesita reiniciar para aplicar los cambios, ejecute el comando:

sudo systemctl restart httpd

Reiniciar el servicio normalmente provoca una interrupción del servicio. Una mejor alternativa es simplemente recargar sin interrumpir la conexión.

sudo systemctl reload httpd

Para iniciar el servidor web Apache automáticamente al iniciar o reiniciar, ejecute el siguiente comando. Esto asegurará que Apache se inicie automáticamente sin su intervención.

sudo systemctl enable httpd

Si elige no iniciar el servicio automáticamente al arrancar, ejecute:

sudo systemctl disable httpd

Configuración de hosts virtuales Apache

De forma predeterminada, el servidor web Apache está configurado para servir o alojar un solo sitio web. Si desea alojar solo un sitio web, este paso no es necesario. Pero en caso de que planee alojar varios dominios en su servidor, deberá configurar los hosts virtuales Apache.

Un host virtual es un archivo separado que contiene configuraciones que le permiten configurar un dominio separado del predeterminado. Para esta guía, configuraremos un host virtual para el dominio crazytechgeek.info.

El host virtual predeterminado se encuentra en el directorio /var/www/html. Esto funciona sólo para un único sitio. Para crear un host virtual separado para nuestro dominio, crearemos otra estructura de directorio dentro del directorio /var/www como se muestra.

sudo mkdir -p /var/www/crazytechgeek.info/html

Además, también puede crear un directorio para almacenar archivos de registro.

sudo mkdir -p /var/www/crazytechgeek.info/log

A continuación, edite los permisos del archivo y utilice la variable de entorno $USER como se muestra.

sudo chown -R $USER:$USER /var/www/crazytechgeek.info/html

Además, ajuste los permisos del directorio webroot como se muestra.

sudo chmod -R 755 /var/www

A continuación, cree un archivo index.html de muestra como se muestra.

sudo vim /var/www/crazytechgeek.info/html/index.html

Presione la letra 'i' en el teclado y pegue un contenido de muestra como se muestra, que se mostrará en el navegador web cuando pruebe el host virtual.

<html>
  <head>
    <title>Welcome to crazytechgeek.info!</title>
  </head>
  <body>
    <h1>Success! The crazytechgeek.info virtual host is up and perfectly working!</h1>
  </body>
</html>

Guarde y salga del archivo de configuración.

Con el archivo de índice de muestra y el directorio del sitio creados, ahora puede continuar y crear el archivo de host virtual. El archivo de host virtual contendrá la configuración del sitio de su dominio e indicará a Apache cómo responderá a las solicitudes de los clientes.

El archivo de host virtual contendrá la configuración del sitio de su dominio e indicará a Apache cómo responderá a las solicitudes de los clientes. Pero para continuar, necesita crear 2 directorios: los directorios sites-available y sites-enabled.

El archivo de host virtual se almacenará en el directorio sites-available, mientras que el directorio sites-enabled contendrá el enlace simbólico al host virtual.

Cree ambos directorios como se muestra.

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

A continuación, modifique el archivo de configuración principal del servidor web Apache e indique a Apache dónde ubicar el host virtual dentro del directorio habilitado para sitios.

sudo vim /etc/httpd/conf/httpd.conf

Agregue la línea como se muestra al final del archivo de configuración.

IncludeOptional sites-enabled/*.conf

Guardar y Salir.

Ahora cree un archivo de host virtual como se muestra:

sudo vim /etc/httpd/sites-available/crazytechgeek.info

Pegue el contenido a continuación y reemplace crazytechgeek.info con su propio nombre de dominio.

<VirtualHost *:80>
    ServerName www.crazytechgeek.info
    ServerAlias crazytechgeek.info
    DocumentRoot /var/www/crazytechgeek.info/html
    ErrorLog /var/www/crazytechgeek.info/log/error.log
    CustomLog /var/www/crazytechgeek.info/log/requests.log combined
</VirtualHost>

Guardar y salir del archivo.

Ahora habilite el archivo de host virtual creando un enlace simbólico en el directorio sites-enabled.

sudo ln -s /etc/httpd/sites-available/crazytechgeek.info.conf /etc/httpd/sites-enabled/crazytechgeek.info.conf

Ajustar los permisos de SELinux para hosts virtuales

CentOS 8 y RHEL 8 se entregan con SELinux, que es un módulo de seguridad para fortalecer la seguridad del sistema Linux. Dado que configuró un directorio log personalizado en el paso anterior, necesita actualizar algunas políticas de SELinux para indicarle al servidor web Apache que escriba en el directorio.

Hay dos enfoques para ajustar las políticas de SELinux Apache: ajustar las políticas universalmente y las políticas en un directorio. Se prefiere este último porque es más preferido.

Ajustar las políticas de SELinux en un directorio

La edición de permisos de SELinux para el directorio de registro le brinda control absoluto sobre las políticas del servidor web Apache. Este método es bastante largo y requiere que configure manualmente el tipo de contexto para directorios adicionales especificados en el archivo de configuración del host virtual.

Antes de comenzar, primero confirme el tipo de contexto asignado al directorio de registro por SELinux:

sudo ls -dlZ /var/www/crazytechgeek.info/log/

El resultado debería ser similar al que tenemos a continuación.

Según el resultado, el contexto establecido es httpd_sys_content_t. Esto indica que el servidor web solo puede leer archivos en el directorio de registro. Debe cambiar este contexto a httpd_log_t para permitir que Apache genere y agregue entradas de registro al directorio.

Por lo tanto, ejecute el comando:

sudo semanage fcontext -a -t httpd_log_t "/var/www/crazytechgeek.info/log(/.*)?"

Si recibe el error debajo de "semanage: comando no encontrado".

Implica que los paquetes que proporcionan el comando semanage no están instalados. Para corregir este error, debe instalar esos paquetes. Pero primero, verifique qué paquetes incluyen el comando semanage ejecutando:

sudo dnf whatprovides /usr/sbin/semanage

El resultado nos proporciona el paquete que proporciona semanage, que es policycoreutils-python-utils.

Ahora instale el paquete como se muestra usando el administrador de paquetes DNF.

sudo dnf install policycoreutils-python-utils

El comando para cambiar el contexto ahora debería funcionar.

sudo semanage fcontext -a -t httpd_log_t "/var/www/crazytechgeek.info/log(/.*)?"

Para guardar los cambios y hacerlos persistentes, ejecute el comando restorecon como se muestra:

sudo restorecon -R -v /var/www/crazytechgeek.info/log

Puede confirmar los cambios ejecutando una vez más el comando:

sudo ls -dlZ /var/www/crazytechgeek.info/log/

Asegúrese de tener en cuenta que el tipo de contexto ha cambiado a httpd_log_t como se ve en el resultado.

Reinicie Apache para que se apliquen los cambios.

sudo systemctl restart httpd

Ahora puede confirmar si Apache está guardando archivos de registro en el directorio de registro enumerando su contenido como se muestra:

ls -l /var/www/crazytechgeek.info/log/

Debería poder ver dos archivos de registro como se muestra: registro de errores y archivos de registro de solicitudes.

Prueba del servidor virtual Apache

Por último, debe asegurarse de que el servidor web Apache esté entregando su archivo de host virtual. Para hacer esto, abra su navegador y vaya a la dirección IP o nombre de dominio de su servidor:

http://domain-name

¡Perfecto! Esto indica que todo salió bien y nuestro servidor virtual está funcionando como se esperaba.

Conclusión

En esta guía, hemos aprendido cómo instalar el servidor web Apache en CentOS 8 y RHEL 8 y también cómo configurar un archivo de host virtual para servir contenido para un dominio adicional. Siéntase libre de configurar múltiples archivos de host virtual como lo considere oportuno para acomodar dominios adicionales.

Si desea configurar una pila de alojamiento completa, le recomiendo que instale una pila LAMP en CentOS 8.