Volver al blog

Instalación del servidor web Apache en CentOS 7

Instalación del servidor web Apache en CentOS 7

Un servidor web almacena, procesa y entrega páginas web a los visitantes del sitio web. Hay bastantes servidores web de código abierto opciones de software, pero el servidor HTTP Apache se considera el servidor web más utilizado en el mundo. Esto se debe a que, además de ser de código abierto, su arquitectura modular permite ampliar sus capacidades mediante la adición de módulos para diferentes propósitos. Como resultado, el servidor web es extremadamente robusto.

Si estás buscando instalar Apache en un sistema CentOS 7, este tutorial es para ti. Además, aprenderás a crear hosts virtuales para que puedas alojar múltiples sitios web en un solo servidor HTTP Apache que se ejecuta en CentOS.

Este es un tutorial detallado que se centra únicamente en la instalación de Apache. Si estabas buscando el tutorial resumido sobre el stack LAMP, tenemos esta guía sobre Cómo instalar Linux, Apache, MySQL, PHP (LAMP) en CentOS 7 que puedes consultar. ¡Ahora, comencemos!

Requisitos previos

Como este es un tutorial práctico, debes tener lo siguiente:

Paso 1: Instalación del servidor HTTP Apache

Puedes encontrar Apache dentro de los repositorios predeterminados de CentOS. Por lo tanto, la instalación es sencilla utilizando el gestor de paquetes yum. Desde la sección de requisitos previos, debes haber iniciado sesión con el usuario no raíz. Ejecuta el siguiente comando en tu terminal para actualizar el índice de paquetes local de Apache httpd:

Una vez que los paquetes estén actualizados, introduce el siguiente comando para instalar Apache:

Confirma la instalación y espera a que yum instale Apache y sus dependencias requeridas.

Si seguiste los pasos del tutorial sobre Configuración de un cortafuegos con FirewallD en CentOS 7 y habilitaste el cortafuegos para el puerto 80, entonces estás listo. Firewalld es el gestor de cortafuegos para CentOS. De lo contrario, puedes habilitar el servicio http (puerto 80) de firewalld introduciendo el siguiente comando:

Si planeas servir tráfico a través de HTTPS seguro, puedes habilitar el servicio https (puerto 443) de firewalld introduciendo el siguiente comando:

Finalmente, debes recargar firewalld para que los cambios surtan efecto. Aquí está el comando para recargar:

En este punto, has instalado y configurado Apache para servir tráfico a través de HTTP, o HTTPS dependiendo de si ejecutaste los comandos anteriores.

Step 2: Confirming that Apache Web Server is Running

En CentOS, el proceso de Apache no se inicia automáticamente después de la instalación. Para iniciar Apache manualmente, introduce el siguiente comando:

Para verificar que el servicio se inició correctamente, comprueba el estado introduciendo el siguiente comando:

Si el servicio se está ejecutando, deberías ver una salida similar a la captura de pantalla de abajo. Observa el estado activo:

httpd status

La salida indica que el servicio se inició correctamente y se está ejecutando. A continuación, también debemos probar que Apache puede servir una página a los usuarios de Internet. Apache viene con una página predeterminada que puedes usar para probar si se puede acceder a tu servidor a través de Internet.

Necesitarás encontrar la dirección IP pública de tu servidor si aún no la tienes. Esta dirección IP es la que usarás en la barra de direcciones de tu navegador para solicitar la página web predeterminada de Apache. Puedes mostrar las direcciones de red del host introduciendo el siguiente comando:

De la lista de direcciones que obtengas, puedes probar cada una en tu navegador para confirmar que funcionan. Opcionalmente, puedes usar curl para obtener su dirección IP de icanhazip.com. El siguiente comando muestra su dirección IP pública tal como se ve desde una computadora en otra ubicación de Internet:

Una vez que tenga la dirección IP pública de su servidor, cópiela y péguela en la barra de direcciones de su navegador:

Su navegador debería cargar la página web predeterminada de Apache en CentOS 7:

web server home page

Si pudo cargar la página web predeterminada de Apache, significa que su servidor está funcionando correctamente. Si se desplaza hacia abajo, podrá ver información básica sobre los archivos de Apache y las ubicaciones de los directorios. Con el servicio instalado y funcionando correctamente, debería poder utilizar los diversos systemctl comandos para administrar el servicio. 

Step 3: Managing the Apache Service

En esta sección, le mostraremos algunos comandos básicos de administración de Apache. Aquí está el comando que detiene el servidor web:

Aquí está el comando para iniciar el servidor web:

A continuación, este es el comando para reiniciar el servidor web (detener e iniciar):

Después de esto, le mostraremos el comando para recargar el servicio Apache. Este comando es necesario cuando simplemente está realizando cambios de configuración. Al recargar, el proceso de Apache aplicará los cambios de configuración sin perder las conexiones, como habría sido el caso si hubiera reiniciado:

Según las configuraciones predeterminadas, Apache se inicia automáticamente cuando el servidor arranca. Si desea cambiar este comportamiento, aquí está el comando para deshabilitar el inicio del servicio en el arranque:

Para volver a habilitar el inicio del servicio en el arranque, ingrese el siguiente comando: 

Paso 4: Configuración de hosts virtuales de Apache

De forma predeterminada, Apache está configurado para alojar y servir un único sitio web. En la mayoría de los casos, querrá que su servidor web sirva y aloje múltiples sitios web. Por ejemplo, es posible que tenga subdominios o que desee configurar una página de blog para el sitio web principal de su empresa/organización. Aquí es donde entran en juego los hosts virtuales de Apache. Los hosts virtuales de Apache le permiten configurar su servidor web para servir múltiples sitios web. Los hosts virtuales de Apache son el equivalente a los bloques de servidor en el servidor Nginx

Para este tutorial, le mostraremos cómo crear un host virtual utilizando example.com como nuestro dominio. Por supuesto, el dominio example.com no funcionará en Internet, por lo que debe reemplazarlo con su dominio real; los pasos son los mismos. 

Cuando instala Apache en CentOS, este instala un host virtual que está configurado para servir contenido desde el directorio /var/www/html. Este diseño funciona bien si está alojando un solo sitio. Sin embargo, queremos poder alojar múltiples sitios. Dejaremos el directorio predeterminado /var/www/html y en su lugar crearemos otro directorio para el dominio example.com dentro de la ubicación /var/www. La razón para dejar el directorio predeterminado es para que se sirva cuando las solicitudes de los clientes no coincidan con ningún otro sitio que haya configurado con hosts virtuales. Además, si desea deshabilitar los hosts virtuales creados, el predeterminado seguirá sirviendo el tráfico. 

Primero, cree un directorio dentro de /var/www para su nombre de dominio. Es libre de elegir el nombre que prefiera. Sin embargo, se recomienda elegir un nombre similar a su dominio para recordarlo fácilmente cuando cree el archivo conf del host virtual. Ingrese el siguiente comando para crear el directorio de ejemplo:

Ingrese el siguiente comando para crear una carpeta adicional que contendrá los archivos de registro para el sitio:

Con los directorios de su sitio web en su lugar, asigne la propiedad del directorio con la variable de entorno $USER utilizando el siguiente comando:

Ejecute el siguiente comando para asegurarse de que su raíz web tenga los permisos predeterminados:

Ahora, cree una página index.html simple usando nano dentro del directorio example ingresando el siguiente comando:

En el editor nano, agregue el siguiente fragmento de código HTML:

Una vez hecho esto, guarde el archivo presionando Ctrl O y presione ENTER. Ahora puede cerrar el editor presionando Ctrl X

Hasta ahora, tenemos el directorio de su sitio y la página web básica para probar el host virtual. A continuación, queremos crear los archivos de configuración del host virtual. Los archivos de host virtual especifican las configuraciones de los distintos sitios que desea alojar en un solo servidor Apache. Dirigen las solicitudes del nombre de dominio establecido a su directorio específico. 

Los archivos de host virtual se almacenan en el directorio /etc/httpd/sites-available. Los archivos de host virtual activados se enlazan simbólicamente desde el directorio /etc/httpd/sites-available al directorio /etc/httpd/sites-enabled . Estos dos directorios no se crean de forma predeterminada en CentOS, por lo que debe crearlos usted mismo. Ingrese el siguiente comando para crear los directorios:

Con los directorios en su lugar, indique a Apache que busque hosts virtuales en el directorio sites-enabled. Para ello, modificará el archivo de configuración principal de Apache. Ingrese el siguiente comando para abrir el archivo en el editor nano:

Queremos agregar una línea que le indique a Apache que busque archivos de configuración adicionales en un directorio opcional. Desplácese hasta la parte inferior del archivo y agregue la siguiente línea al final:

Guarde el archivo presionando Ctrl O y presione ENTER. Ahora puede cerrar el editor presionando Ctrl X. El siguiente paso es crear el archivo de host virtual dentro del directorio sites-available. Ingrese el siguiente comando para crear y abrir el nuevo archivo con el editor nano:

En el archivo abierto, agregue el siguiente bloque de configuración. Recuerde reemplazar nuestro example.com con su nombre de dominio real, y si usó un nombre de directorio diferente en el /var/www/example, actualícelo también de manera adecuada: 

Como puede ver, hemos especificado el nombre de dominio y la raíz del documento donde se encontrarán los archivos que se servirán para este dominio. También hemos especificado la ubicación del registro de errores; esto le ayudará durante la resolución de problemas del servidor. 

Una vez que tengamos nuestro archivo de host virtual dentro del directorio sites-available, el siguiente paso es habilitar el archivo creando un enlace simbólico al directorio sites-enabled . Ingrese el siguiente comando para crear el enlace simbólico: 

Si ha seguido los pasos hasta este punto, su host virtual ahora debería estar listo para servir el contenido de su sitio web. Sin embargo, hay una comprobación más que debe configurar antes de que los hosts virtuales comiencen a funcionar. Trataremos eso a continuación. 

Paso 5: Ajustar los permisos de SELinux para permitir hosts virtuales

Las distribuciones de Linux, incluyendo Fedora, RHEL y CentOS vienen con SELinux por defecto. SELinux (Security Enhanced Linux) es una arquitectura de seguridad para sistemas Linux que restringe y define cómo debe procesar las solicitudes un servidor, y cómo deben interactuar los usuarios con los sockets, puertos de red y directorios esenciales. 

De forma predeterminada, SELinux funcionará con la configuración predeterminada de Apache. Sin embargo, con el host virtual personalizado que creó, que incluye un directorio de registro personalizado, se producirá un error de servicio cuando intente reiniciar el servicio Apache. La solución es modificar las políticas de SELinux para permitir que el servicio Apache escriba en los archivos necesarios. 

SELinux hace de CentOS un servidor altamente seguro. Por lo tanto, no recomendamos desactivarlo por completo. Dado que SELinux le permite personalizar su nivel de seguridad de varias maneras, se recomienda que solo actualice o establezca políticas según las necesidades de su entorno.

Tiene dos opciones para actualizar las políticas de Apache: ya sea Universalmente o por Directorio específico. Actualizar las políticas específicas de un directorio es más seguro. Por lo tanto, es la opción recomendada. 

  • Actualizar las políticas de Apache universalmente

Puede modificar la política de Apache de forma universal, lo que indicará a SELinux que trate todos los procesos de Apache de manera idéntica mediante el uso del httpd_unified booleano. Tenga en cuenta que modificar las políticas de Apache de forma universal no le dará el mismo nivel de control que hacerlo para cada directorio de manera específica. Sin embargo, es más conveniente en lo que respecta al mantenimiento. Ejecute el siguiente comando para actualizar las políticas de Apache de forma universal: 

Definamos qué hacen los valores de este comando:

  • setsebool – actualiza los valores booleanos de SELinux. 
  • -P etiqueta  – actualiza el valor en tiempo de arranque para que este cambio persista tras los reinicios. 
  • httpd_unified  – el valor booleano que indicará a SELinux que trate todos los procesos de Apache como el mismo tipo. El uso del valor 1 lo habilita. 
  • Ajustar las políticas de Apache en un directorio

Si desea más control sobre los directorios, ajustar las políticas de Apache por directorio es el camino a seguir. Sin embargo, conlleva la sobrecarga de requerir más mantenimiento. Esto se debe a que la política no es global. Por lo tanto, deberá establecer manualmente el tipo de contexto para cualquier nuevo directorio de registro que especifique en sus archivos conf de host virtual. 

Antes de actualizar la política, primero verifique el tipo de contexto que SELinux asignó al /var/www/example/log directorio utilizando el siguiente comando:

El comando mostrará algo como lo siguiente, que es básicamente el contexto de SELinux del directorio:

httpd_sys_content_t es el contexto actual, que le indica a SELinux que el proceso de Apache solo tiene permitido leer archivos creados en este directorio. Dado que, a partir de nuestras configuraciones de host virtual, queremos que Apache escriba en los archivos de registro en el /var/www/example/log directorio, modificaremos esta política para permitir que Apache genere y añada contenido a los archivos de registro de la aplicación web. El contexto que permite esto es el httpd_log_t. Aquí está el comando para actualizar el contexto:

Para aplicar los cambios del comando anterior y hacer que persistan tras los reinicios, ejecute el siguiente comando:

Definamos qué hace el comando:

  • restorecon – aplica los cambios y asegura que persistan a través de los reinicios.
  • opción -R – ejecutará el comando de forma recursiva, actualizando cualquier archivo existente para usar el nuevo contexto.
  • opción -v – imprime los cambios de contexto después de que se haya ejecutado el comando. Mostrará algo como esto:
Para ver los cambios de contexto, puede ejecutar el siguiente comando nuevamente:
Debería ver el tipo de contexto actualizado en la salida:
Con las políticas de directorio de SELinux actualizadas para permitir que Apache escriba en el directorio de registro, ahora podemos probar el host virtual. 

Paso 6: Probar la configuración del host virtual

Antes de que podamos probar el host virtual, deberá reiniciar los servicios de Apache. Aquí está el comando para eso:

A continuación, enumere el contenido del directorio de registro utilizando el siguiente comando:

Debería mostrar algo como esto, mostrando que Apache ha creado los archivos de registro: 

list log files web server

Si ha estado siguiendo los pasos hasta este punto, Apache ahora debería poder servir la página HTML de muestra cuando visite su nombre de dominio tal como se define en su archivo de host virtual. Si lo desea, puede repetir los pasos 4 y 5 para configurar dominios adicionales y actualizar sus permisos de SELinux de manera adecuada.

Conclusión

En este tutorial, instalamos Apache, aprendimos cómo actualizar las políticas de SELinux para permitir que Apache escriba en archivos de registro personalizados y, finalmente, probamos nuestra configuración para confirmar que funciona correctamente. Con esta base, debería poder avanzar a partir de ella y ofrecer mejores aplicaciones con experiencias más ricas. 

Si desea explorar una pila web completa, consulte nuestro tutorial sobre cómo instalar la pila LAMP en CentOS 7

¡Feliz computación!

author

Akshay Nagpal

Autor · CloudSigma

Preslav Dobrev es diseñador creativo en CloudSigma, centrado en una identidad empresarial coherente mediante el uso de canales de marketing tradicionales e innovadores. Es experto en fusionar la visión artística con el marketing estratégico para crear narrativas de marca impactantes.

Comentarios

Aún no hay comentarios. Sea el primero.