Cómo instalar Apache con host virtual en CentOS 8

El servidor web Apache es un servidor web HTTP de código abierto y popular que sigue disfrutando de una gran cuota de mercado en la industria del alojamiento. Viene con muchas características, incluyendo mejoras de módulos, soporte multiprotocolo, configuración simplificada y soporte multilingüe, por nombrar solo algunas.

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

En esta guía, le mostraremos cómo instalar el servidor web Apache en CentOS 8 y RHEL 8 con un entorno de Host Virtual. En el momento de escribir este tutorial, la última versión de Apache es Apache 2.2.43.

Instalación del servidor web Apache

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

$ sudo dnf update

Una vez completada 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
Verify Apache Version

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, ejecute el comando systemctl.

$ sudo systemctl start httpd

Para confirmar si el servicio está en ejecución, ejecute.

$ sudo systemctl status httpd
Verify Apache Service Status

Desde la salida, el estado ‘activo‘ en verde indica que el servidor web Apache está en funcionamiento.

Para disipar cualquier duda de que el servidor web está en funcionamiento, solicite una página de prueba a Apache navegando a la dirección IP o nombre de dominio de su servidor como se muestra.

http://server-ip  

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

$ curl ifconfig.me 
OR
$ curl -4 icanhazip.com
Find CentOS Server IP Address

Cuando navegue a la dirección IP del servidor, debería ver la siguiente página web mostrada.

Check Apache Webpage

Esto es una confirmación segura de que el servidor web está en funcionamiento.

Gestión del servidor web Apache

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

Por ejemplo, para detener Apache, ejecute el siguiente comando:

$ sudo systemctl stop httpd

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

$ sudo systemctl start httpd

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

$ sudo systemctl restart httpd

Reiniciar el servicio suele causar interrupciones en el servicio. Una mejor alternativa es simplemente recargarlo sin interrumpir la conexión.

$ sudo systemctl reload httpd

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

$ sudo systemctl enable httpd

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

$ sudo systemctl disable httpd

Configuración de hosts virtuales de Apache

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

A virtual host is a separate file that contains configurations that allow you to set up a separate domain from the default one. For this guide, we will set up a virtual host for the domain crazytechgeek.info.

El host virtual predeterminado se encuentra en el directorio /var/www/html. Esto funciona solo para un 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 puedes crear un directorio para almacenar archivos de registro.

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

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

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

También, ajuste los permisos del directorio de la raíz del sitio web como se muestra.

$ sudo chmod -R 755 /var/www

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

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

Pulse la tecla 'i' en el teclado y pegue un poco de contenido de ejemplo como se muestra, que se mostrará en el navegador web al probar 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>

Guarda y sale del archivo de configuración.

Con el archivo de índice de muestra y el directorio del sitio creado, ahora puedes proceder y crear el archivo de host virtual. El archivo de host virtual contendrá la configuración del sitio de tu dominio e instruirá a Apache sobre cómo responderá a las solicitudes de los clientes.

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

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

Crea ambos directorios como se muestra.

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

A continuación, modifica el archivo de configuración principal del servidor web Apache e indica a Apache dónde localizar el host virtual dentro del directorio sites-enabled.

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

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

IncludeOptional sites-enabled/*.conf

Guarda y sale.

Ahora crea un archivo de host virtual como se muestra:

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

Pega el contenido a continuación y reemplaza crazytechgeek.info con tu 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>

Guarda y sale del archivo.

Ahora habilita 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

Ajustando los Permisos de SELinux para Hosts Virtuales

CentOS 8 y RHEL 8 vienen con SELinux, que es un módulo de seguridad para fortalecer la seguridad del sistema Linux. Dado que configuraste un directorio de registro personalizado en el paso anterior, necesitas actualizar algunas políticas de SELinux para indicar al servidor web Apache que escriba en el directorio.

Hay 2 enfoques para ajustar las políticas de SELinux de Apache: ajustar las políticas de manera universal y las políticas en un directorio. Se prefiere este último porque es más preferible.

Ajuste de Políticas de SELinux en un Directorio

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

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

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

La salida debería ser similar a lo que tenemos a continuación.

Set SELinux Policies on Apache Log Directory

De la salida, el contexto establecido es httpd_sys_content_t. Esto indica que el servidor web solo puede leer archivos en el directorio de registro. Necesitas cambiar este contexto a httpd_log_t para permitir que Apache genere y agregue entradas de registro al directorio.

Por lo tanto, ejecuta el siguiente comando:Si llegas a obtener el error siguiente “semanage: comando no encontrado“.

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

Si te encuentras con el error “semanage: comando no encontrado”.

Implica que los paquetes que proporcionan el comando semanage no están instalados. Para solucionar este error, necesitas instalar esos paquetes. Pero primero, verifica qué paquetes proporcionan el comando semanage ejecutando:

$ sudo dnf whatprovides /usr/sbin/semanage

La salida nos da el paquete que proporciona semanage, que es policycoreutils-python-utils.

Ahora instala el paquete como se muestra usando el gestor de paquetes DNF.

$ sudo dnf install policycoreutils-python-utils

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

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

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

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

Puedes confirmar los cambios ejecutando nuevamente el comando:

$ sudo ls -dlZ /var/www/crazytechgeek.info/log/
Check SELinux Context Type

Asegúrate de notar que el tipo de contexto ha cambiado a httpd_log_t como se ve en la salida.

Reinicia Apache para que se apliquen los cambios.

$ sudo systemctl restart httpd

Ahora puedes 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ías poder ver dos archivos de registro como se muestra: archivos de registro de error y de solicitud.

Check Apache Log Files

Probando el Host Virtual de Apache

Por último, debes asegurarte de que el servidor web Apache esté sirviendo tu archivo de host virtual. Para hacer esto, abre tu navegador y ve a la dirección IP de tu servidor o nombre de dominio:

http://domain-name
Check Apache Virtual Host for Website

¡Perfecto! Esto indica que todo salió bien y nuestro host virtual se está sirviendo 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 varios archivos de host virtual según considere necesario para acomodar dominios adicionales.

Si desea configurar un stack de alojamiento completo, le recomiendo que instale un stack LAMP en CentOS 8.

Source:
https://www.tecmint.com/install-apache-with-virtual-host-on-centos-8/