Apache HTTP Server (Apache) es uno de los software de servidor web multiplataforma gratuitos y de código abierto más populares, lanzado bajo los términos de la Licencia Apache 2.0.
Apache es popular como parte de la configuración LAMP, siendo la A en el acrónimo. La funcionalidad del servidor apache se puede ampliar con los muchos módulos disponibles.
Requisitos previos:
- Servidor Centos 8 actualizado
- Acceso raíz al servidor (o usuario con acceso sudo)
- Cortafuegos configurado para permitir el tráfico a los puertos 80 y 443
Instalación de Apache
Asegúrese de que los paquetes estén actualizados:
sudo dnf -y update
Apache está disponible en los repositorios de software predeterminados de CentOS 8 como httpd
. Puede verificar información al respecto usando este comando:
sudo dnf info httpd
Deberías ver algo similar a esto:
$ sudo dnf info httpd
CentOS Linux 8 - AppStream 20 MB/s | 8.8 MB 00:00
CentOS Linux 8 - BaseOS 24 MB/s | 5.6 MB 00:00
Last metadata expiration check: 0:00:01 ago on Sat 28 Aug 2021 01:06:59 PM UTC.
Available Packages
Name : httpd
Version : 2.4.37
Release : 39.module_el8.4.0+778+c970deab
Architecture : x86_64
Size : 1.4 M
Source : httpd-2.4.37-39.module_el8.4.0+778+c970deab.src.rpm
Repository : appstream
Summary : Apache HTTP Server
URL : https://httpd.apache.org/
License : ASL 2.0
Description : The Apache HTTP Server is a powerful, efficient, and extensible
: web server.
Instálelo con este comando:
sudo dnf install -y httpd
Habilitación de http y https en firewalld
Si tiene un firewall en funcionamiento, debe habilitar los puertos http y https con estos comandos:
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
Ahora vuelva a cargar el cortafuegos para que estas nuevas reglas entren en vigor:
sudo firewall-cmd --reload
Iniciando y habilitando el servicio httpd
De forma predeterminada, el servicio no se inicia. Confirme con el siguiente comando:
sudo systemctl status httpd
Salida:
$ sudo systemctl status httpd
● httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled)
Active: inactive (dead)
Docs: man:httpd.service(8)
Inicie el servicio con este comando:
sudo systemctl start httpd
Recibirá un estado activo cuando el servicio se esté ejecutando
Confirme que ahora funciona bien:
$ sudo systemctl status httpd
● httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled)
Active: active (running) since Sat 2021-08-28 13:32:17 UTC; 17s ago
Docs: man:httpd.service(8)
Main PID: 65827 (httpd)
Status: "Running, listening on: port 80"
Tasks: 213 (limit: 23800)
Memory: 28.9M
CGroup: /system.slice/httpd.service
├─65827 /usr/sbin/httpd -DFOREGROUND
├─65828 /usr/sbin/httpd -DFOREGROUND
├─65829 /usr/sbin/httpd -DFOREGROUND
├─65830 /usr/sbin/httpd -DFOREGROUND
└─65831 /usr/sbin/httpd -DFOREGROUND
Aug 28 13:32:17 test-app-server systemd[1]: Starting The Apache HTTP Server...
Aug 28 13:32:17 test-app-server httpd[65827]: AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using fe80::8fc:23ff:fe51:cc>
Aug 28 13:32:17 test-app-server systemd[1]: Started The Apache HTTP Server.
Aug 28 13:32:17 test-app-server httpd[65827]: Server configured, listening on: port 80
Lo anterior confirma que Apache está funcionando bien ahora.
Para confirmar que se puede acceder al servicio, diríjase a la siguiente URL para ver si puede obtener la página httpd:
http://server_ip
Si no conoce el servidor, use el siguiente comando en su terminal:
curl -4 icanhazip.com
Una vez que visite esa página, si todo funciona bien, debería ver la página predeterminada de Apache como en la siguiente captura de pantalla:
Para asegurarse de que el servicio siempre se inicie al arrancar, use este comando systemctl:
sudo systemctl enable httpd
Configuración de servidores virtuales
Con Apache, es posible alojar múltiples sitios en el mismo servidor donde se ejecuta Apache. Esto siempre se puede lograr utilizando varios dominios, cada uno de los cuales representa un sitio que aloja el servidor.
Los hosts virtuales Apache son similares a los bloques de servidores Nginx. Cada host virtual tendrá detalles de configuración para un solo host. Puede tener tantos servidores virtuales como desee.
En este ejemplo, usaremos el dominio site1.citizix.com
para el host virtual, pero tenga la libertad de usar el dominio de su elección. Tenga en cuenta que el DNS del dominio que se utilizará ya debe estar configurado para apuntar a la dirección IP del servidor.
Confírmelo con:
dig -t A site1.citizix.com
Crear directorio y contenido de muestra
La página predeterminada de apache está configurada como un host virtual predeterminado que sirve contenido desde /var/www/html
. Es una buena práctica crear el directorio de su sitio en /var/www
directorio ya que es una mejor práctica servir desde allí.
Vamos a crear un directorio para nuestro sitio con el siguiente comando:
sudo mkdir /var/www/site1.citizix.com
Vamos a crear un index.html
simple página para servir desde nuestro sitio. Necesitará vim instalado para que esto funcione, si no, use este comando:
sudo dnf install -y vim
Edite el archivo:
sudo vim /var/www/site1.citizix.com/index.html
Agregar contenido al archivo:
<html>
<head>
<title>Hello from Citizix Site1!</title>
</head>
<body>
<h1>Hey!</h1>
<p>This is citizix site1. Welcome here.</p>
</body>
</html>
Finalmente, asegurémonos de que el usuario actual sea el propietario del directorio del sitio:
sudo chown -R $USER:$USER /var/www/site1.citizix.com
Creación de alojamiento virtual
Los archivos de host virtual de Apache especifican la configuración de cada sitio y le indican al servidor web Apache cómo responder a varias solicitudes de dominio.
Las configuraciones de Apache se almacenarán en el directorio /etc/httpd/conf.d/
. Vamos a crear una configuración para nuestro sitio:
sudo vim /etc/httpd/conf.d/site1.citizix.com.conf
Agrega el siguiente contenido:
<VirtualHost *:80>
ServerName site1.citizix.com
ServerAlias site1.citizix.com
DocumentRoot /var/www/site1.citizix.com
ErrorLog /var/log/httpd/site1.citizix.com.error.log
CustomLog /var/log/httpd/site1.citizix.com.requests.log combined
</VirtualHost>
Esto le dirá a Apache lo siguiente:
ServerName
y ServerAlias:nombre del host para servirDocumentRoot
– dónde encontrar directamente la raíz que contiene los documentos web de acceso públicoErrorLog
– dónde almacenar los registros de errores para este sitioCustomLog
– dónde almacenar los registros de solicitudes para este sitio en particular
Guarde y cierre el archivo cuando haya terminado
Prueba del servidor virtual
Ahora que la configuración está en su lugar, debemos probar que todo funciona como se esperaba.
Primero reinicie apache para recargar la configuración:
sudo systemctl restart httpd
Enumere el contenido del /var/log/httpd/
directorio para ver si Apache creó los archivos de registro:
Si todo está bien, debería ver un resultado similar a este:
# ls /var/log/httpd/
access_log error_log site1.citizix.com.error.log site1.citizix.com.requests.log
Si todo está bien, Apache ahora servirá su nombre de dominio. Puede probar esto navegando a http://site1.citizix.com
, donde debería ver algo como esto:
La captura de pantalla anterior confirma que el host virtual se configuró correctamente y sirve contenido.
Si necesita alojar varios otros sitios, repita los pasos anteriores para los sitios que desee.
Conclusión
Logramos instalar y configurar el servidor web Apache en las instrucciones anteriores en Centos 8 Server.