Cómo instalar Apache en Fedora 31

En este artículo veremos cómo instalar el servidor web Apache en Fedora 31 paso a paso, de modo que en unos minutos tendrás funcionando en tu sistema el servicio web más usado de Internet, listo para servir páginas y aplicaciones desde tu servidor o VPS Fedora.

Antes de instalar Apache en Fedora 31

Si quieres completar esta guía de instalación del servidor web Apache en Fedora 31 necesitarás satisfacer estos requisitos básicos:

  • Un sistema Fedora 31 actualizado.
  • Acceso a consola con root o un usuario con permisos de sudo.
  • Conexión a Internet.

Además, si quieres instalar Apache en tu servidor o VPS Fedora para servir contenido en Internet, y quieres configurar servidores virtuales, necesitarás dominios apuntando al servidor. Si aún no tienes dominios propios, echa un vistazo a las ofertas de Namecheap, el sitio donde registramos nuestro propio dominio:

Cómo instalar Apache en Fedora 31

Para instalar Apache en Fedora 31 usaremos los paquetes procedentes de los repositorios de la propia distribución, así que el procedimiento habitual es actualizar las listas de paquetes (y ya que estamos, los paquetes instalados):

~$ sudo yum update -y

El paquete que buscamos es httpd, que podemos instalar con yum:

~$ sudo yum install -y httpd

Tras la descarga e instalación del paquete y sus dependencias, se crea el nuevo servicio httpd.service, o httpd en versión corta, en nuestro sistema Fedora 31.

Tendremos que habilitar el servicio httpd para que inicie automáticamente con cada arranque de Fedora 31, y también arrancarlo por primera vez de forma manual:

~$ sudo systemctl enable --now httpd

Podremos comprobar el estado del servicio fácilmente con el comando systemctl status httpd:

como instalar el servidor web apache en fedora 31

¿Qué versión de Apache tengo instalada en Fedora 31?

Si quieres saber qué versión de Apache se ha instalado en tu sistema Fedora 31 basta con usar el comando apachectl con el parámetro -v:

~$ apachectl -v
Server version: Apache/2.4.41 (Fedora)
Server built:   Oct  3 2019 00:00:00

Cómo configurar el firewall de Fedora 31 para Apache

Si vas a acceder al servicio web Apache de tu sistema Fedora 31 desde la red, necesitarás añadir alguna regla específica, ya que por defecto el tráfico entrante está bloqueado.

Para permitir el protocolo estándar HTTP (puerto 80/TCP) añadimos esta regla al firewall:

~$ sudo firewall-cmd --permanent --add-service=http

Si además tenemos previsto ofrecer conexiones seguras cifradas con SSL, añadiremos también una regla para el procolo HTTPS (puerto 443/TCP):

~$ sudo firewall-cmd --permanent --add-service=https

Aplicaremos estas reglas recargando la configuración del firewall de Fedora 31:

~$ sudo firewall-cmd --reload

Acceder al servicio Apache en Fedora 31

Para probar el servicio Apache basta con acceder desde un navegador indicando como URL la dirección IP o dominio de la máquina Fedora 31 y obtendremos la página de prueba:

instalar el servidor web apache en fedora 31

Cómo configurar Apache en Fedora 31

Para configurar Apache en Fedora 31 trabajaremos sobre los archivos y carpetas de la ruta /etc/httpd/.

El archivo principal es /etc/httpd/conf/httpd.conf, que a su vez carga configuraciones adicionales de los subdirectorios conf.d/ y conf.modules.d/.

Algunos datos interesantes de la configuración por defecto de Apache en Fedora 31 podrían ser:

  • El usuario y grupo con que corre el servicio es apache.
  • La página web por defecto se aloja en /var/www/html/.
  • El archivo de registro de errores es error_log y el de accesos es access_log. Ambos se guardan en la ruta /var/log/httpd/.

Cualquier cambio que hagamos sobre estos archivos requerirá recargar la configuración del servicio:

~$ sudo systemctl reload httpd

Aunque en ocasiones puede ser necesario reiniciarlo:

~$ sudo systemctl restart httpd

Servidores virtuales de Apache en Fedora 31

Para configurar servidores virtuales de Apache en Fedora 31 seguiremos una aproximación consistente en crear un directorio donde guardaremos archivos separados para la configuración de cada servidor virtual.

Por tanto, crearemos el nuevo directorio:

~$ sudo mkdir /etc/httpd/sites.d/

Y editaremos httpd.conf:

~$ sudo nano /etc/httpd/conf/httpd.conf

Al final del archivo, añadiremos una directiva IncludeOptional que cargará todos los archivos de configuración presentes en este nuevo directorio:

...
IncludeOptional sites.d/*.conf

Guardamos los cambios y recargamos el servicio.

Servidor virtual por defecto

Cuando Apache trabaja con varios servidores virtuales, el primero que cargue lo considera por defecto, por lo que cualquier petición al servidor que no pueda ser atendida por un servidor virtual específico será resuelta por el servidor web por defecto.

La forma de asegurarnos de cuál va a ser el servidor virtual por defecto es crear una configuración simple que se apoye en la configuración por defecto de Apache, y darle un nombre que asegure que se cargue en primer lugar.

Por tanto, crearemos el archivo 000-default.conf:

~$ sudo nano /etc/httpd/sites.d/000-default.conf

Y el contenido será un bloque VirtualHost vacío:

<VirtualHost _default_:80>
</VirtualHost>

Guardamos los cambios y cerramos el archivo. Toda la configuración se tomará de httpd.conf y el resto de archivos de directorios como conf.d/. Sin embargo, si especificas valores en este archivo prevalecerán sobre los valores por defecto.

Ahora basta con que los nombres de los siguientes archivos de configuración de servidores virtuales sean alfabéticamente posteriores a 000-default.conf.

Añadir servidores virtuales

Si tienes un dominio adicional y quieres configurar su servidor virtual tendrás que crear el directorio donde alojar sus archivos web:

~$ sudo mkdir /var/www/dominio.local

Añadiremos un archivo index.html para que exista un mínimo contenido:

~$ sudo nano /var/www/dominio.local/index.html

Como contenido, un simple mensaje:

<h1>Bienvenidos a dominio.local</h1>

Y a continuación creamos el archivo de configuración para el servidor virtual:

~$ sudo nano /etc/httpd/sites.d/dominio.local.conf

La configuración mínima podría ser la siguiente:

<VirtualHost _default_:80>
        ServerName dominio.local
        DocumentRoot /var/www/dominio.local/
        ErrorLog /var/log/httpd/error-dominio.local.log
        CustomLog /var/log/httpd/access-dominio.local.log combined
</VirtualHost>

Donde las directivas usadas significan lo siguiente:

  • VirtualHost es el bloque que encierra la configuración para el servidor virtual.
  • ServerName es el dominio al que responde el servidor virtual.
  • DocumentRoot es el directorio de contenido web.
  • ErrorLog indica la ubicación y nombre del archivo de registro de errores.
  • CustomLog es similar a la anterior, pero para el registro de accesos, con el parámetro combined, que hace referencia a uno de los posibles formatos de registro.

Cualquier valor que no especifiques aquí se tomará de la configuración por defecto.

Guardados los cambios y recargada la configuración de Apache, podemos intentar el acceso al servicio web con todas las direcciones y dominios que apunten al servidor Fedora 31:

como instalar y configurar apache en fedora 31

El servidor virtual por defecto resuelve los accesos por dirección IP y el dominio principal de Fedora 31, mientras que el servidor virtual que acabamos de configurar responde a su propio dominio.

Cómo instalar módulos de Apache en Fedora 31

Para saber qué módulos tiene cargados Apache, puedes consultarlo con el comando httpd -M:

~$ httpd -M
Loaded Modules:
 core_module (static)
 so_module (static)
 http_module (static)
...
 cgid_module (shared)
 http2_module (shared)
 proxy_http2_module (shared)
~$

Si necesitas cargar algún módulo que no esté presente en Fedora 31, lo instalaremos con yum. Por ejemplo, el módulo SSL, que no está en la configuración actual:

~$ sudo yum install -y mod_ssl

Normalmente al instalar un módulo se instala también un archivo de configuración para el mismo en conf.d/, en este caso se instala un archivo ssl.conf.

Configuración SSL para Apache en Fedora 31

Para configurar el protocolo SSL para Apache en Fedora 31 hay que instalar el módulo SSL, como hemos visto en el apartado anterior.

La configuración por defecto de este módulo no funciona, incluso hará fallar el servidor, por lo que la editaremos.

Si estás trabajando con servidores virtuales, dejaremos intacta la primera parte del archivo ssl.conf, como configuración general para el servicio HTTPS, y la segunda parte que es un bloque VirtualHost nos la llevaremos al archivo de configuración del servidor virtual por defecto, 000-default.conf en este tutorial.

Si no trabajas con servidores virtuales, haz todo el trabajo sobre ssl.conf.

Editamos ssl.conf:

~$ sudo nano /etc/httpd/conf.d/ssl.conf

Debemos copiar el bloque VirtualHost y eliminarlo de este archivo, de modo que sólo quedaría esto (obviando los comentarios):

Listen 443 https
SSLPassPhraseDialog exec:/usr/libexec/httpd-ssl-pass-dialog
SSLSessionCache         shmcb:/run/httpd/sslcache(512000)
SSLSessionCacheTimeout  300
SSLRandomSeed startup file:/dev/urandom  256
SSLRandomSeed connect builtin
SSLCryptoDevice builtin

El bloque VirtualHost lo copiaremos en el archivo de configuración del servidor virtual por defecto 000-default.conf:

~$ sudo nano /etc/httpd/sites.d/000-default.conf

Quedaría así:

<VirtualHost _default_:80>
</VirtualHost>

<VirtualHost _default_:443>
ErrorLog logs/ssl_error_log
TransferLog logs/ssl_access_log
LogLevel warn
SSLEngine on
SSLHonorCipherOrder on
SSLCipherSuite PROFILE=SYSTEM
SSLProxyCipherSuite PROFILE=SYSTEM
SSLCertificateFile /etc/pki/tls/certs/localhost.crt
SSLCertificateKeyFile /etc/pki/tls/private/localhost.key
<FilesMatch "\.(cgi|shtml|phtml|php)$">
    SSLOptions +StdEnvVars
</FilesMatch>
<Directory "/var/www/cgi-bin">
    SSLOptions +StdEnvVars
</Directory>
BrowserMatch "MSIE [2-5]" \
         nokeepalive ssl-unclean-shutdown \
         downgrade-1.0 force-response-1.0

CustomLog logs/ssl_request_log \
          "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
</VirtualHost>

Pero este archivo hace referencia a claves y certificados SSL que no existen, así que los crearemos con la herramienta openssl (si no tienes certificados previamente):

~$ sudo openssl req -newkey rsa:2048 -x509 -nodes -days 3650 -out /etc/pki/tls/certs/fedora31.local.crt -keyout /etc/pki/tls/private/fedora31.local.key

Se nos preguntarán ciertos valores que se pueden dejar en blanco, pero es interesante contestar con el dominio principal de la máquina Fedora 31 en el campo «Common Name«:

...
Common Name (eg, your name or your server's hostname) []:fedora31.local
...

Ahora debes editar de nuevo el archivo 000-default.conf para actualizar las rutas de los certificados, que quedarían así:

...
SSLCertificateFile /etc/pki/tls/certs/fedora31.local.crt
SSLCertificateKeyFile /etc/pki/tls/private/fedora31.local.key
...

Algunos certificados firmados por autoridades certificadoras pueden necesitar un archivo chain que se especificaría con la directiva SSLCertificateChainFile.

Guardados los cambios, reiniciamos el servicio:

~$ sudo systemctl restart httpd

Ya podemos acceder al servidor web de Fedora 31 especificando la URL con el protocolo https:// en lugar del http:// habitual:

configurar https para apache en fedora 31

En el caso de usar certificados autofirmados, como en este ejemplo, el navegador nos hará saber que no puede comprobar la autenticidad del certificado.

Dependiendo del navegador, tendremos opciones para poder continuar y acceder al sitio web:

Ya tenemos conexión cifrada.

Para el servidor virtual que configuramos anteriormente el proceso sería similar:

  1. Crear o instalar los certificados y claves específicos para el dominio.
  2. Añadir un bloque VirtualHost para el puerto 443 al archivo de configuración del servidor virtual.
  3. Recargar la configuración de Apache.

Realmente, el bloque SSL adicional puede ser más secillo, de modo que la configuración completa del servidor virtual podría quedar así:

<VirtualHost _default_:80>
        ServerName dominio.local
        DocumentRoot /var/www/dominio.local/
        ErrorLog /var/log/httpd/error-dominio.local.log
        CustomLog /var/log/httpd/access-dominio.local.log combined
</VirtualHost>

<VirtualHost _default_:443>
        ServerName dominio.local
        DocumentRoot /var/www/dominio.local/

        SSLEngine on
        SSLCertificateFile /etc/pki/tls/certs/dominio.local.crt
        SSLCertificateKeyFile /etc/pki/tls/private/dominio.local.key

        ErrorLog /var/log/httpd/error-dominio.local.log
        CustomLog /var/log/httpd/access-dominio.local.log combined
</VirtualHost>

Y tras recargar o reiniciar el servicio, el servidor virtual también será accesible mediante protocolo seguro HTTPS:

Conclusión

Ahora ya sabes cómo instalar y configurar el servidor web Apache en Fedora 31, por lo que puedes empezar a montar el entorno perfecto para servir contenido y aplicaciones web usando tu servidor o VPS Fedora.

En caso de dudas, preguntas, sugerencias, etc. siempre puedes dejar un comentario.

¡Apoya este sitio!

Si te ha resultado útil esta guía de instalación y configuración del servidor web Apache en Fedora 31 y quieres agradecérnoslo, puedes aportar tu granito de arena al mantenimiento de este sitio con una mínima contribución. ¡Gracias!

Valora esta entrada

1 estrella2 estrellas3 estrellas4 estrellas5 estrellas (2 votos, promedio: 5,00 de 5)
Cargando…

Deja un comentario

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies.

ACEPTAR
Aviso de cookies