Cómo instalar el servidor Web Apache en CentOS 7

Introducción

El servidor HTTP Apache es el servidor web más utilizado en el mundo. Proporciona muchas funciones potentes, incluidos módulos cargables dinámicamente, soporte de medios robusto y una amplia integración con otro software popular.

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

Requisitos

Usted necesitará lo siguiente para completar esta guía:

  • Un usuario que no es root con privilegios sudo configurados en su servidor, configure siguiendo la guía de configuración inicial del servidor para CentOS 7.
  • Un firewall básico configurado siguiendo la guía de Pasos Adicionales Recomendados para los nuevos servidores CentOS 7.

Paso 1-Instalación de Apache

Apache está disponible en los repositorios de software predeterminados de CentOS, lo que significa que puede instalarlo con el administrador de paquetes yum.

Como usuario sudo no root configurado en los prerrequisitos, actualice el índice de paquetes local de Apache httpd para reflejar los últimos cambios de desarrollo:

  • sudo yum update httpd

Una vez actualizados los paquetes, instale el paquete Apache:

  • sudo yum install httpd

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

Si completó la guía de Pasos Recomendados Adicionales para los Nuevos servidores CentOS 7 mencionada en la sección requisitos previos, habrá instalado firewalld en su servidor y necesitará abrir el puerto 80 para permitir que Apache sirva solicitudes a través de HTTP. Si aún no lo ha hecho, puede hacerlo activando el servicio firewalld‘s http con el siguiente comando:

  • sudo firewall-cmd --permanent --add-service=http

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

  • sudo firewall-cmd --permanent --add-service=https

A continuación, vuelva a cargar el firewall para poner en práctica estas nuevas reglas:

  • sudo firewall-cmd --reload

Después de que el firewall se vuelva a cargar, estará listo para iniciar el servicio y comprobar el servidor web.

Paso 2: Comprobar el servidor web

Apache no se inicia automáticamente en CentOS una vez que se completa la instalación. Deberá iniciar el proceso de Apache manualmente:

  • sudo systemctl start httpd

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

  • sudo systemctl status httpd

Verá un active estado cuando el servicio se esté ejecutando:

Output
Redirecting to /bin/systemctl status httpd.service● httpd.service - The Apache HTTP Server Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled) Active: active (running) since Wed 2019-02-20 01:29:08 UTC; 5s ago Docs: man:httpd(8) man:apachectl(8) Main PID: 1290 (httpd) Status: "Processing requests..." CGroup: /system.slice/httpd.service ├─1290 /usr/sbin/httpd -DFOREGROUND ├─1291 /usr/sbin/httpd -DFOREGROUND ├─1292 /usr/sbin/httpd -DFOREGROUND ├─1293 /usr/sbin/httpd -DFOREGROUND ├─1294 /usr/sbin/httpd -DFOREGROUND └─1295 /usr/sbin/httpd -DFOREGROUND...

Como puede ver en esta salida, el servicio parece haberse iniciado correctamente. Sin embargo, la mejor manera de probar esto es solicitar una página de Apache.

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

Escriba esto en el símbolo del sistema de su servidor:

  • hostname -I

Este comando mostrará todas las direcciones de red del host, por lo que obtendrá algunas direcciones IP separadas por espacios. Puedes probar cada uno en tu navegador web para ver si funciona.

Alternativamente, puede usar curl para solicitar su IP desde icanhazip.com, lo que le proporcionará su dirección IPv4 pública como se ve desde otra ubicación en Internet:

  • curl -4 icanhazip.com

Cuando tenga la dirección IP de su servidor, introdúzcala en la barra de direcciones de su navegador:

http://your_server_ip

Verá la página web Apache CentOS 7 predeterminada:

Página Apache predeterminada para CentOS 7

Esta página indica que Apache está funcionando correctamente. También incluye información básica sobre archivos Apache importantes y ubicaciones de directorios. Ahora que el servicio está instalado y en ejecución, ahora puede usar diferentes comandos systemctl para administrar el servicio.

Paso 3-Administrar el proceso de Apache

Ahora que tiene su servidor web en funcionamiento, repasemos algunos comandos de administración básicos.

Para detener su servidor web, escriba:

  • sudo systemctl stop httpd

Para iniciar el servidor web cuando se detenga, escriba:

  • sudo systemctl start httpd

Para detener y luego iniciar el servicio de nuevo, escriba:

  • sudo systemctl restart httpd

Si simplemente están haciendo cambios de configuración, Apache a menudo puede recargar sin soltar conexiones. Para hacer esto, use este comando:

  • sudo systemctl reload httpd

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

  • sudo systemctl disable httpd

Para volver a habilitar el servicio para que se inicie al arrancar, escriba:

  • sudo systemctl enable httpd

Apache se iniciará automáticamente cuando el servidor se inicie de nuevo.

La configuración predeterminada de Apache permitirá que su servidor aloje un solo 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 usar el servidor web Apache, puede usar hosts virtuales (similares a los bloques de servidor en Nginx) para encapsular 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. Para obtener más información sobre cómo configurar un nombre de dominio con DigitalOcean, consulte nuestra Introducción a DigitalOcean DNS.

Apache en CentOS 7 tiene un bloque de servidor habilitado de forma predeterminada que está configurado para servir documentos desde el directorio /var/www/html. Si bien esto funciona bien para un solo sitio, puede volverse difícil de manejar si aloja varios sitios. En lugar de modificar /var/www/html, creará una estructura de directorios dentro del sitio /var/www para el sitio example.com, dejando /var/www/html como el directorio predeterminado a servir si una solicitud de cliente no coincide con ninguna otra sitios.

Cree el directorio html para example.com de la siguiente manera, usando la bandera -p para crear los directorios padres necesarios:

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

Cree un directorio adicional para almacene archivos de registro para el sitio:

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

A continuación, asigne la propiedad del directorio html con la variable ambiental $USER:

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

Asegúrese de que su raíz web tenga la conjunto de permisos predeterminados:

  • sudo chmod -R 755 /var/www

Next, create a sample index.html page using vi or your favorite editor:

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

Press i to switch to INSERT mode and add the following sample HTML to the file:

/var/www/example.com/html/index.html
<html> <head> <title>Welcome to Example.com!</title> </head> <body> <h1>Success! The example.com virtual host is working!</h1> </body></html>

Save and close the file by pressing ESC, typing :wq, and pressing ENTER.

Con el directorio de su sitio y el archivo de índice de muestra en su lugar, está casi listo para crear los archivos de host virtual. Los archivos de host virtual especifican la configuración de sus sitios separados e indican al servidor web Apache cómo responder a varias solicitudes de dominio.

Antes de crear sus hosts virtuales, deberá crear un directorio sites-available para almacenarlos. También creará el directorio sites-enabled que le dice a Apache que un host virtual está listo para servir a los visitantes. El directorio sites-enabled contiene enlaces simbólicos a los hosts virtuales que queremos publicar. Cree ambos directorios con el siguiente comando:

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

A continuación, le dirá a Apache que busque hosts virtuales en el directorio sites-enabled. Para lograr esto, edite el archivo de configuración principal de Apache y agregue una línea que declare un directorio opcional para archivos de configuración adicionales:

  • sudo vi /etc/httpd/conf/httpd.conf

Agregue esta línea al final del archivo:

IncludeOptional sites-enabled/*.conf

Guarde y cierre el archivo cuando haya terminado de añadir esa línea. Ahora que tiene sus directorios de host virtual en su lugar, creará su archivo de host virtual.

Comience creando un nuevo archivo en el directorio sites-available:

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

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

/etc/httpd/sites-available/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 indica 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 de host virtual, los habilitará para que Apache sepa servirlos a los visitantes. Para ello, cree un enlace simbólico para cada host virtual en el directorio sites-enabled :

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

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

Paso 5-Ajuste de permisos de SELinux para Hosts Virtuales (Recomendado)

SELinux está configurado para funcionar con la configuración predeterminada de Apache. Dado que configuró 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, necesita actualizar las políticas de SELinux para permitir que Apache escriba en los archivos necesarios. SELinux aporta una mayor seguridad a su entorno CentOS 7, por lo que no se recomienda desactivar completamente el módulo del núcleo.

Hay diferentes maneras de establecer políticas basadas en 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: universalmente y en un directorio específico. Ajustar las políticas en los directorios es más seguro y, por lo tanto, es el enfoque recomendado.

Ajustar universalmente las políticas de Apache

Establecer universalmente la política de Apache le indicará a SELinux que trate todos los procesos de Apache de forma idéntica utilizando el booleano httpd_unified. Aunque este enfoque es más conveniente, no le dará el mismo nivel de control que un enfoque que se centra en una directiva de archivos o directorios.

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

  • sudo setsebool -P httpd_unified 1

El comando setsebool cambia los valores booleanos de SELinux. El indicador -P actualizará el valor de tiempo de arranque, haciendo que este cambio persista en los reinicios. httpd_unified es el booleano que le dirá a SELinux que trate todos los procesos de Apache como del mismo tipo, por lo que lo habilitó con un valor de 1.

Ajustar las políticas de Apache en un directorio

Configurar individualmente los permisos de SELinux para el directorio /var/www/example.com/log 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 es directivas de configuración universal, deberá configurar manualmente el tipo de contexto para cualquier nuevo directorio de registros especificado en las configuraciones de host virtual.

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

  • sudo ls -dZ /var/www/example.com/log/

Este comando muestra e imprime el contexto SELinux del directorio. Verá una salida similar a la siguiente:

Output
drwxr-xr-x. root root unconfined_u:object_r:httpd_sys_content_t:s0 /var/www/example.com/log/

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

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

A continuación, utilice el comando restorecon para aplicar estos cambios y hacer que persistan a lo largo de los reinicios:

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

El indicador -R ejecuta este comando recursivamente, lo que significa que actualizará cualquier archivo existente para usar el nuevo contexto. El indicador -v mostrará los cambios de contexto realizados por el comando. Verá la siguiente salida confirmando los cambios:

Output
restorecon reset /var/www/example.com/log context unconfined_u:object_r:httpd_sys_content_t:s0->unconfined_u:object_r:httpd_log_t:s0

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

  • sudo ls -dZ /var/www/example.com/log/

La salida refleja el tipo de contexto actualizado:

Output
drwxr-xr-x. root root unconfined_u:object_r:httpd_log_t:s0 /var/www/example.com/log

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

Paso 6-Probando el Host Virtual (Recomendado)

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

  • sudo systemctl restart httpd

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

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

verás que Apache fue capaz de crear el error.log y requests.log archivos especificados en la configuración del host virtual:

Output
-rw-r--r--. 1 root root 0 Feb 26 22:54 error.log-rw-r--r--. 1 root root 0 Feb 26 22:54 requests.log

Ahora que usted tiene su host virtual configurar y SELinux permisos actualizados, Apache se sirven ahora su nombre de dominio. Puede probar esto navegando a http://example.com , donde debería ver algo como esto:

¡Éxito! Las example.com ¡el host virtual está funcionando!

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

Conclusión

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

Si desea crear una pila de aplicaciones más completa, puede consultar este artículo sobre cómo configurar una pila de LÁMPARAS en CentOS 7.

Deja una respuesta

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