Instalar Apache (HTTPD) en RHEL 8 y CentOS 8

RHEL 8 sigue ofreciendo Apache HTTP Server («httpd») como servidor web instalable a través de sus repositorios oficiales. La versión base utilizada en los paquetes precompilados para la versión 8 de este sistema operativo es la 2.4.37. Desgraciadamente, la versión de Apache httpd 2.5 todavía no está incluída en soporte de Red Hat ni ninguno de sus productos.

Vamos a ver los pasos de instalación, configuración y control del servidor web.

Instalación de Apache HTTPD

Podríamos instalar una versión más actual apache compilando fuentes, pero ese no es el objetivo de esta entrada. Aquí queremos usar la versión precompilada ofrecida por RHEL y CentOS a través de sus repositorios oficiales. Esto nos garantiza poder mantener el servicio actualizado y parcheado junto con el resto de paquetes ofrecidos por el fabricante, es rápido y seguro.

Primero revisamos qué versión de httpd hay disponible, podemos usar el comando dnf o yum, en el fondo es lo mismo:

# dnf info httpd
# yum info httpd

En este caso, vemos que la versión disponible es la 2.4.37 como ya comentábamos anteriormente:

[root@localhost ~]# dnf info httpd
Updating Subscription Management repositories.
Red Hat Enterprise Linux 8 for x86_64 - AppStream (RPMs)     886 kB/s | 7.0 MB     00:08
Red Hat Enterprise Linux 8 for x86_64 - BaseOS (RPMs)        605 kB/s | 3.7 MB     00:06
Last metadata expiration check: 0:00:01 ago on Sat 18 May 2019 09:14:40 AM CEST.
Available Packages
Name         : httpd
Version      : 2.4.37
Release      : 11.module+el8.0.0+2969+90015743
Arch         : x86_64
Size         : 1.4 M
Source       : httpd-2.4.37-11.module+el8.0.0+2969+90015743.src.rpm
Repo         : rhel-8-for-x86_64-appstream-rpms
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.

La instalación es sencilla, añadid el parámetro install a yum o dnf seguido del paquete:

# dnf install httpd
# yum install httpd

Si no utilizáis el parámetro -y (recomendable no utilizarlo), probablemente tendréis que confirmar la instalación de HTTPD y sus dependencias así como la importación de llaves GPG de los repositorios, os dejo la salida completa de la ejecución:

[root@localhost ~]# dnf install httpd
Updating Subscription Management repositories.
Last metadata expiration check: 0:01:08 ago on Sat 18 May 2019 09:14:40 AM CEST.
Dependencies resolved.
=============================================================================================
 Package            Arch   Version                    Repository                        Size
=============================================================================================
Installing:
 httpd              x86_64 2.4.37-11.module+el8.0.0+2969+90015743
                                                      rhel-8-for-x86_64-appstream-rpms 1.4 M
Installing dependencies:
 apr                x86_64 1.6.3-9.el8                rhel-8-for-x86_64-appstream-rpms 125 k
 apr-util           x86_64 1.6.1-6.el8                rhel-8-for-x86_64-appstream-rpms 105 k
 httpd-tools        x86_64 2.4.37-11.module+el8.0.0+2969+90015743
                                                      rhel-8-for-x86_64-appstream-rpms 101 k
 httpd-filesystem   noarch 2.4.37-11.module+el8.0.0+2969+90015743
                                                      rhel-8-for-x86_64-appstream-rpms  34 k
 mod_http2          x86_64 1.11.3-2.module+el8.0.0+2969+90015743
                                                      rhel-8-for-x86_64-appstream-rpms 156 k
 mailcap            noarch 2.1.48-3.el8               rhel-8-for-x86_64-baseos-rpms     39 k
 redhat-logos-httpd noarch 80.7-1.el8                 rhel-8-for-x86_64-baseos-rpms     25 k
Installing weak dependencies:
 apr-util-openssl   x86_64 1.6.1-6.el8                rhel-8-for-x86_64-appstream-rpms  27 k
 apr-util-bdb       x86_64 1.6.1-6.el8                rhel-8-for-x86_64-appstream-rpms  25 k
Enabling module streams:
 httpd                     2.4

Transaction Summary
=============================================================================================
Install  10 Packages

Total download size: 2.0 M
Installed size: 5.5 M
Is this ok [y/N]: y
Downloading Packages:
(1/10): apr-util-openssl-1.6.1-6.el8.x86_64.rpm               17 kB/s |  27 kB     00:01
(2/10): apr-util-bdb-1.6.1-6.el8.x86_64.rpm                   15 kB/s |  25 kB     00:01
(3/10): apr-1.6.3-9.el8.x86_64.rpm                            68 kB/s | 125 kB     00:01
(4/10): apr-util-1.6.1-6.el8.x86_64.rpm                      215 kB/s | 105 kB     00:00
(5/10): httpd-tools-2.4.37-11.module+el8.0.0+2969+90015743.x 116 kB/s | 101 kB     00:00
(6/10): httpd-filesystem-2.4.37-11.module+el8.0.0+2969+90015  41 kB/s |  34 kB     00:00
(7/10): mod_http2-1.11.3-2.module+el8.0.0+2969+90015743.x86_ 241 kB/s | 156 kB     00:00
(8/10): redhat-logos-httpd-80.7-1.el8.noarch.rpm              65 kB/s |  25 kB     00:00
(9/10): mailcap-2.1.48-3.el8.noarch.rpm                       68 kB/s |  39 kB     00:00
(10/10): httpd-2.4.37-11.module+el8.0.0+2969+90015743.x86_64 1.0 MB/s | 1.4 MB     00:01
---------------------------------------------------------------------------------------------
Total                                                        527 kB/s | 2.0 MB     00:03
warning: /var/cache/dnf/rhel-8-for-x86_64-appstream-rpms-9d3886b51bb367d7/packages/apr-util-openssl-1.6.1-6.el8.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID fd431d51: NOKEY
Red Hat Enterprise Linux 8 for x86_64 - AppStream (RPMs)     4.9 MB/s | 5.0 kB     00:00
Importing GPG key 0xFD431D51:
 Userid     : "Red Hat, Inc. (release key 2) <security@redhat.com>"
 Fingerprint: 567E 347A D004 4ADE 55BA 8A5F 199E 2F91 FD43 1D51
 From       : /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
Is this ok [y/N]: y
Key imported successfully
Importing GPG key 0xD4082792:
 Userid     : "Red Hat, Inc. (auxiliary key) <security@redhat.com>"
 Fingerprint: 6A6A A7C9 7C88 90AE C6AE BFE2 F76F 66C3 D408 2792
 From       : /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
Is this ok [y/N]: y
Key imported successfully
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Preparing        :                                                                     1/1
  Installing       : apr-1.6.3-9.el8.x86_64                                             1/10
  Running scriptlet: apr-1.6.3-9.el8.x86_64                                             1/10
  Installing       : apr-util-bdb-1.6.1-6.el8.x86_64                                    2/10
  Installing       : apr-util-1.6.1-6.el8.x86_64                                        3/10
  Running scriptlet: apr-util-1.6.1-6.el8.x86_64                                        3/10
  Installing       : apr-util-openssl-1.6.1-6.el8.x86_64                                4/10
  Installing       : httpd-tools-2.4.37-11.module+el8.0.0+2969+90015743.x86_64          5/10
  Installing       : redhat-logos-httpd-80.7-1.el8.noarch                               6/10
  Installing       : mailcap-2.1.48-3.el8.noarch                                        7/10
  Running scriptlet: httpd-filesystem-2.4.37-11.module+el8.0.0+2969+90015743.noarch     8/10
  Installing       : httpd-filesystem-2.4.37-11.module+el8.0.0+2969+90015743.noarch     8/10
  Installing       : mod_http2-1.11.3-2.module+el8.0.0+2969+90015743.x86_64             9/10
  Installing       : httpd-2.4.37-11.module+el8.0.0+2969+90015743.x86_64               10/10
  Running scriptlet: httpd-2.4.37-11.module+el8.0.0+2969+90015743.x86_64               10/10
  Verifying        : apr-util-openssl-1.6.1-6.el8.x86_64                                1/10
  Verifying        : apr-util-bdb-1.6.1-6.el8.x86_64                                    2/10
  Verifying        : apr-1.6.3-9.el8.x86_64                                             3/10
  Verifying        : apr-util-1.6.1-6.el8.x86_64                                        4/10
  Verifying        : httpd-tools-2.4.37-11.module+el8.0.0+2969+90015743.x86_64          5/10
  Verifying        : httpd-filesystem-2.4.37-11.module+el8.0.0+2969+90015743.noarch     6/10
  Verifying        : mod_http2-1.11.3-2.module+el8.0.0+2969+90015743.x86_64             7/10
  Verifying        : httpd-2.4.37-11.module+el8.0.0+2969+90015743.x86_64                8/10
  Verifying        : mailcap-2.1.48-3.el8.noarch                                        9/10
  Verifying        : redhat-logos-httpd-80.7-1.el8.noarch                              10/10
Installed products updated.

Installed:
  httpd-2.4.37-11.module+el8.0.0+2969+90015743.x86_64
  apr-util-openssl-1.6.1-6.el8.x86_64
  apr-util-bdb-1.6.1-6.el8.x86_64
  apr-1.6.3-9.el8.x86_64
  apr-util-1.6.1-6.el8.x86_64
  httpd-tools-2.4.37-11.module+el8.0.0+2969+90015743.x86_64
  httpd-filesystem-2.4.37-11.module+el8.0.0+2969+90015743.noarch
  mod_http2-1.11.3-2.module+el8.0.0+2969+90015743.x86_64
  mailcap-2.1.48-3.el8.noarch
  redhat-logos-httpd-80.7-1.el8.noarch

Complete!

Con esto ya tenemos instalado el servidor web Apache.

Configuración de Apache

La instalación a través de yum/dnf nos deja el servicio HTTPD completamente funcional, sólo es necesario iniciar el servicio y ubicar nuestros archivos web en la ruta /var/www/html. La instalación de PHP, backends SQL o configuraciones avanzadas las podéis ver en otros artículos de esta misma web. Tened en cuenta las siguientes rutas por defecto de la instalación:

  • Logs de Apache: /var/log/httpd
  • Directorio de configuración: /etc/httpd
  • Archivo de configuración global: /etc/httpd/conf/httpd.conf
  • Directorio de archivos de configuración extra: /etc/httpd/conf.d/

Arranque, parada y control del servicio httpd

Todo el control del servicio lo haremos con systemctl, si tenéis un conocimiento básico de la gestión de servicios desde RHEL/CentOS 7 no tendréis mayor dificultad.

Iniciar Apache HTTPD

Siempre como root, ejecutar el siguiente comando:

# systemctl start httpd

Parar Apache HTTPD

Siempre como root, ejecutar el siguiente comando:

# systemctl stop httpd

Verificar el estado de Apache HTTPD

Siempre como root, ejecutar el siguiente comando:

# systemctl status httpd

Mostrará tanto el estado de servicio y tiempo de ejecución a nivel de systemctl como otros datos importantes: PID principal del servicio, ID de páginas man, memoria en uso, configuración de cgroups y últimas entradas del log. Os dejo una muestra:

[root@localhost conf]# 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 2019-05-18 09:23:47 CEST; 1s ago
     Docs: man:httpd.service(8)
 Main PID: 9890 (httpd)
   Status: "Started, listening on: port 80"
    Tasks: 213 (limit: 12543)
   Memory: 24.1M
   CGroup: /system.slice/httpd.service
           ├─9890 /usr/sbin/httpd -DFOREGROUND
           ├─9891 /usr/sbin/httpd -DFOREGROUND
           ├─9892 /usr/sbin/httpd -DFOREGROUND
           ├─9893 /usr/sbin/httpd -DFOREGROUND
           └─9894 /usr/sbin/httpd -DFOREGROUND

May 18 09:23:47 localhost.localdomain systemd[1]: Starting The Apache HTTP Server...
May 18 09:23:47 localhost.localdomain httpd[9890]: AH00558: httpd: Could not reliably determ>
May 18 09:23:47 localhost.localdomain httpd[9890]: Server configured, listening on: port 80
May 18 09:23:47 localhost.localdomain systemd[1]: Started The Apache HTTP Server.

Con esta información ya disponéis de una instalación básica del servicio web Apache (HTTPD) en RHEL 8 y CentOS 8. Recordad que si tenéis activo firewalld tendréis que establecer una política de firewall que permita el tráfico, ya sea por HTTP/TCP 80 ó HTTP/TCP 443 (SSL) ¡Suerte!

# firewall-cmd --zone=public --add-service=http
# firewall-cmd --zone=public --add-service=https