como instalar apache en fedora 29

Cómo Instalar Apache en Fedora 30

En esta entrada vamos a ver cómo instalar Apache en Fedora 30 paso a paso, y así tener en nuestro sistema el servidor web más popular de Internet. Además, configuraremos servidores virtuales y certificados SSL para el protocolo HTTPS.

Antes de instalar Apache en Fedora 30

Para seguir esta guía de instalación de Apache en Fedora necesitarás cumplir estos requisitos:

  • Un sistema Fedora 30 actualizado.
  • Acceso como root o usuario con permisos de sudo.
  • Conexión a Internet.

Para las configuraciones avanzadas necesitas dominios que apunten al servidor Fedora (pueden ser reales o locales) y un certificado SSL para el acceso seguro.

Como seguramente estás deseando empezar ya, ¡vamos al asunto!

Instalar Apache en Fedora 30

Para instalar Apache en Fedora lo haremos a través de los propios repositorios de la distribución. Por tanto, el primer paso será actualizar el sistema:

~$ sudo yum -y update

Con el sistema actualizado, ya podemos instalar el paquete httpd mediante yum:

~$ sudo yum -y install httpd

En unos instantes se descarga e instala Apache junto con sus dependencias. Sin embargo, el servicio no arranca en este momento ni con el inicio del sistema. Tendremos que activarlo manualmente.

Cómo activar e iniciar Apache en Fedora

Para activar el servidor web Apache y que así inicie con el sistema tendremos que usar systemctl:

~$ sudo systemctl enable httpd
Created symlink /etc/systemd/system/multi-user.target.wants/httpd.service → /usr/lib/systemd/system/httpd.service.
~$

Solucionado esto vamos ahora a iniciar Apache:

~$ sudo systemctl start httpd

Cómo comprobar el estado de Apache en Fedora

En este momento ya está funcionando el servidor web, como podríamos comprobar con systemctl status:

~$ systemctl status httpd
● httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor prese>
   Active: active (running) since Thu 2019-03-28 12:14:40 CET; 4min 42s ago
     Docs: man:httpd.service(8)
 Main PID: 29073 (httpd)
   Status: "Running, listening on: port 80"
    Tasks: 213 (limit: 1141)
   Memory: 14.8M
   CGroup: /system.slice/httpd.service
           ├─29073 /usr/sbin/httpd -DFOREGROUND
           ├─29074 /usr/sbin/httpd -DFOREGROUND
           ├─29075 /usr/sbin/httpd -DFOREGROUND
           ├─29076 /usr/sbin/httpd -DFOREGROUND
           └─29077 /usr/sbin/httpd -DFOREGROUND

mar 28 12:14:39 fedora30.local systemd[1]: Starting The Apache HTTP Server...
mar 28 12:14:40 fedora30.local httpd[29073]: Server configured, listening on: p>
mar 28 12:14:40 fedora30.local systemd[1]: Started The Apache HTTP Server.
lines 1-18/18 (END)

Parece que todo funciona perfectamente, así que es el momento de intentar acceder desde un navegador en otra máquina usando la dirección IP del servidor Fedora o cualquier dominio que apunte a esa IP:

como instalar apache en fedora 30
Ooooopsss… ¡No funciona Apache en Fedora!

¿Qué está pasando? ¿Por qué no funciona?

Cómo configurar el firewall en Fedora para permitir Apache

Si no te esperabas este resultado es porque no sabías que Fedora incluye por defecto un firewall activado.

Tendremos que añadir una excepción al firewall que permita las conexiones al servidor Apache. Usaremos para ello el comando firewall-cmd, indicando que el cambio sea permanente y, si lo consideramos oportuno, añadiendo además del protocolo HTTP estándar también el HTTP seguro:

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

Los cambios no entran en vigor de inmediato, ya que es necesario recargar la configuración del firewall:

~$ sudo firewall-cmd --reload
success
~$

Intentamos conectar de nuevo a la página por defecto de Apache:

instalar apache en fedora 30
It works!

Efectivamente, se trataba del firewall, pero ya lo hemos resuelto de forma permanente.

Cómo configurar Apache en Fedora 30

Para configurar Apache en Fedora hemos de tener en cuenta que los archivos de configuración se encuentran en la ruta /etc/httpd/.

El archivo principal de configuración es /etc/httpd/conf/httpd.conf donde, entre otras cosas, podemos ver algunos valores por defecto de la configuración de Apache en Fedora:

  • El usuario y grupo con que se ejecuta Apache es apache y apache, respectivamente.
  • No está permitido el acceso vía web a contenidos fuera de las rutas /var/www/ y /var/www/html/. Para poder ubicar archivos fuera de estas rutas habrá que permitir el acceso explícitamente en la configuración general o particular (servidores virtuales).
  • La configuración de Apache incluye los archivos con extensión .conf ubicados en las rutas /etc/httpd/conf.d/ y /etc/httpd/conf.modules.d/.

Para que cualquier cambio de configuración tenga efecto normalmente es suficiente con recargar la configuración del servicio httpd:

~$ sudo systemctl reload httpd

Aunque en ocasiones, como cuando se incluyen nuevos módulos en la configuración de Apache, es necesario reiniciar el servicio:

~$ sudo systemctl restart httpd

Servidores virtuales (virtual host) en Fedora

Si queremos que Apache en Fedora pueda servir distintas páginas para distintos dominios que apunten al servidor, tendremos que configurar servidores virtuales.

Si todavía no tienes registrados los dominios, te recomiendo Namecheap, el lugar donde registro y renuevo los dominios de mis sitios web, incluido este que estás visitando.

Para configurar servidores virtuales  de Apache en Fedora (Apache virtual hosts) es muy conveniente crear una pequeña infraestructura similar a la que usan las distribuciones basadas en Debian.

1. Crear la estructura de los archivos de configuración

Cada servidor virtual tendrá su configuración particular guardada en su propio archivo.

Por un lado, crearemos una ruta (/etc/httpd/sites-available/) para guardar todos los archivos de configuración de servidores virtuales. Por otro lado crearemos otra ruta (/etc/httpd/sites-enabled/) donde enlazaremos simbólicamente sólo aquellas configuraciones de los servidores virtuales que queramos que estén activos.

Así que el primer paso es crear estas nuevas rutas dentro de la ruta de configuración de Apache:

~$ sudo mkdir /etc/httpd/sites-available /etc/httpd/sites-enabled

2. Incluir la configuración de los servidores

Aunque tengamos varias configuraciones guardadas en sites-available/, hemos dicho que sólo estarán en funcionamiento aquellas que estén presentes (a través de los enlaces) en sites-enabled/.

El siguiente paso, entonces, es indicarle a Apache que cargue las configuraciones de los servidores virtuales activos. Esto lo haremos editando el archivo httpd.conf:

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

Al final del archivo añadiremos una directiva IncludeOptional que se encargará de incluir todos los archivos de configuración presentes en sites-enabled/:

IncludeOptional sites-enabled/*.conf

3. Crear un servidor virtual por defecto

Antes de configurar servidores virtuales, Apache ofrece la página web por defecto a través de cualquier dominio que apunte al servidor Fedora.

Sin configuramos un solo servidor virtual nos encontraremos con el problema de que se comportará como servidor por defecto, mostrando la página web de ese servidor virtual a cualquier petición de dominio que apunte al servidor Fedora pero no tenga un servidor virtual particular configurado.

Puede que este comportamiento no te moleste, pero no es una configuración adecuada. En este caso, lo mejor es configurar como primer servidor virtual el servidor por defecto.

Crearemos un archivo de configuración mínimo, con el nombre 000-default.conf para que sea la primera de todas las configuraciones en cargar.

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

Y el contenido de este archivo puede ser algo tal que así:

<VirtualHost *:80>
</VirtualHost>

Este bloque VirtualHost vacío adoptará los valores por defecto del archivo de configuración principal de Apache, httpd.conf, de modo que mostrará la página web por defecto de Fedora a cualquier petición que no tenga un servidor virtual configurado.

Para activar la configuración del nuevo servidor virtual por defecto enlazaremos adecuadamente su archivo de configuración:

~$ sudo ln -s /etc/httpd/sites-available/000-default.conf /etc/httpd/sites-enabled/000-default.conf

Y recargamos la configuración de Apache:

~$ sudo systemctl reload httpd

Ahora el sistema ya está listo para hacer funcionar servidores virtuales de Apache en Fedora. Lo siguiente es configurar de forma individual cada servidor virtual.

4. Configurar los servidores virtuales personalizados

Es el momento de crear nuestros propios servidores virtuales. Para este ejemplo vamos a tener un par de subdominios apuntando a nuestro servidor Fedora, para los que queremos configurar sus propios servidores virtuales.

Estos subdominios serán vhost1.fedora30.local y vhost2.fedora30.local.

Para vhost1.fedora30.local crearemos la carpeta de documentos dentro de /var/www/, que es la ruta que Apache configura por defecto para alojar archivos web.

Creamos la carpeta:

~$ sudo mkdir /var/www/vhost1.fedora30.local

Y creamos un archivo index.html con un contenido mínimo:

~$ sudo nano /var/www/vhost1.fedora30.local/index.html

Cualquier mensaje o saludo servirá para la prueba.

Ahora crearemos la configuración para este servidor virtual.

~$ sudo nano /etc/httpd/sites-available/vhost1.fedora30.local.conf

Una configuración muy básica sería esta:

<VirtualHost *:80>
        ServerName vhost1.fedora30.local
        DocumentRoot /var/www/vhost1.fedora30.local
        <Directory /var/www/vhost1.fedora30.local>
        </Directory>
        LogLevel info
        ErrorLog /var/log/httpd/vhost1.fedora30.local-error.log
        CustomLog /var/log/httpd/vhost1.fedora30.local-access.log combined
</VirtualHost>

En ServerName indicamos el dominio al que responderá el servidor virtual. DocumentRoot indica la ruta donde se encuentran los archivos web de este servidor. El bloque Directory está vacío, por lo que heredará la configuración por defecto de Apache para /var/www/. Por último, añadimos las rutas de los archivos de registro personalizados para este servidor.

Una vez guardada la configuración, creamos el enlace simbólico necesario para activarla:

~$ sudo ln -s /etc/httpd/sites-available/vhost1.fedora30.local.conf /etc/httpd/sites-enabled/vhost1.fedora30.local.conf

Antes de activar la configuración de este servidor virtual, vamos a crear rápidamente la configuración para vhost2.fedora30.local.

En esta ocasión queremos que los archivos web residan en la carpeta del usuario que mantendrá la web, en lugar de /var/www/. Es una opción que permite a un usuario estar trabajando en sus propios archivos sin necesidad de utilizar el comando sudo constantemente, o solicitar intervención del administrador.

Crearemos la carpeta:

~$ mkdir -p ~/public_html/vhost2.fedora30.local

He creado la carpeta dentro de ~/public_html/ porque tradicionalmente es en esta carpeta donde los usuarios de un sistema Unix/Linux guardan sus proyectos web.

Incluimos un contenido mínimo en la carpeta web:

~$ nano ~/public_html/vhost2.fedora30.local/index.html

Tras haber creado un mensaje de pruebas o añadir el contenido que necesitemos, creamos el archivo de configuración de este segundo servidor virtual:

~$ sudo nano /etc/httpd/sites-available/vhost2.fedora30.local.conf

Y el contenido podría ser algo así:

<VirtualHost *:80>
        ServerName vhost2.fedora30.local
        DocumentRoot /home/usuario/public_html/vhost2.fedora30.local
        <Directory /home/usuario/public_html/vhost2.fedora30.local>
                Require all granted
        </Directory>
        LogLevel info
        ErrorLog /var/log/httpd/vhost2.fedora30.local-error.log
        CustomLog /var/log/httpd/vhost2.fedora30.local-access.log combined
</VirtualHost>

Aparte de indicar sus propios nombre de dominio, carpeta de documentos web y archivos de registro, esta configuración es idéntica a la del servidor virtual anterior, excepto por la inclusión de la directiva Require, ya que por defecto Apache no permite servir documentos fuera de /var/www/, y en este caso pretendemos hacer justamente eso.

Sólo nos quedaría realizar el enlace para activar la configuración:

~$ sudo ln -s /etc/httpd/sites-available/vhost2.fedora30.local.conf /etc/httpd/sites-enabled/vhost2.fedora30.local.conf

Hay que recargar la configuración de Apache:

~$ sudo systemctl reload httpd

Es hora de comprobar nuestros nuevos servidores virtuales. Accederé al servidor Fedora a través de su dirección IP, del dominio fedora30.local, que apunta al servidor pero no tiene servidor virtual configurado, y a través de vhost1.fedora30.local y vhost2.fedora30.local, cuyos servidores virtuales acabamos de configurar:

virtual host apache fedora
Comprobando el funcionamiento de los servidores virtuales

Si analizamos los resultados:

  • Para los accesos a través de dirección IP y del dominio que no tiene un servidor virtual asociado, Apache muestra la web por defecto.
  • El servidor virtual cuyos archivos están en /var/www/, también funciona correctamente.
  • Pero para el dominio cuyos archivos web están en la carpeta del usuario… ¡No funciona! ¿Qué está pasando?

Configurar SELinux en Fedora para Apache

Aunque preventivamente indicamos una directiva Require en el archivo de configuración del servidor virtual para permitir el acceso fuera de /var/www/, esta configuración sólo atañe a Apache.

Fedora es un sistema que viene con la seguridad mejorada SELinux activada por defecto. Esta seguridad, entre otras muchas cosas, no permite realizar determinadas acciones con los archivos del sistema según el contexto.

En este caso, SELinux no tiene problemas en que Apache sirva archivos web desde /var/www/, pero cuando intentamos servirlos desde /home/usuario/ la cosa cambia, ya que este contexto no es aceptado por defecto.

La solución pasa por cambiar el contexto de los archivos web del usuario, mediante el comando chcon:

~$ sudo chcon -Rv --type httpd_sys_content_t /home/usuario/public_html/

Aplicando el cambio de contexto a la carpeta ~/public_html/ SELinux aceptará que su contenido sea servido por Apache.

Sólo nos queda un pequeño detalle, y es que Fedora crea las carpetas de usuario dentro de /home/ con permisos 700, por lo que el resto de usuarios del sistema, Apache incluido, no tienen permiso de lectura de archivos y ejecución de directorios.

Cambiamos los permisos de lectura y acceso a 705:

~$ chmod 705 ~

Se sobreentiende que ~/public_html/ y su contenido sí se han creado con acceso para terceros, en caso contrario también habría que conceder permisos.

Y ahora podemos volver a comprobar el comportamiento de Apache y los servidores virtuales sin necesidad de reiniciar o recargar:

como configurar servidores virtuales apache fedora 30
Comprobando el funcionamiento de los servidores virtuales

Ahora tú decides qué enfoque seguir: trabajar en /var/www/ o realizar configuraciones adicionales.

Configurar seguridad SSL de Apache en Fedora 30

Para trabajar mediante HTTPS con Apache en Fedora necesitamos:

  • Apache trabajando con el módulo SSL.
  • Un certificado SSL para el dominio que queramos usar.
  • Configurar el servidor virtual que se ocupa del dominio correspondiente.

Cómo cargar módulos de Apache en Fedora

Normalmente Apache no viene compilado con la seguridad SSL incluida, sino que esta funcionalidad se puede incluir como módulo independiente.

Además, en las instalaciones básicas de Apache este módulo no se instala junto con el servidor, por lo que necesitaremos descargarlo e instalarlo con yum:

~$ yum -y install mod_ssl

Ya tenemos instalado el módulo SSL. Dentro del directorio /etc/httpd/conf.modules.d/ tenemos un archivo 00-ssl.conf que incluye la directiva de carga del módulo. Como la configuración general de Apache carga las configuraciones de todos los archivos presentes en /etc/httpd/conf.modules.d/, el módulo cargará. Pero eso ocurrirá en el próximo reinicio del servicio httpd:

~$ sudo systemctl restart httpd

Configuración para usar certificados SSL

Los servidores virtuales configurados hasta ahora usan el protocolo HTTP (puerto 80), pero ahora vamos a configurar uno de ellos para que use el protocolo HTTPS (puerto 443).

La configuración es muy sencilla, basta con editar el archivo de configuración del servidor virtual y añadir un segundo bloque VirtualHost que escuche en el puerto 443. Además de cambiar el puerto, hay que añadir las directivas que cargarán los certificados SSL desde las rutas donde los tengamos instalados.

Podemos copiar el primer bloque y hacer los cambios necesarios:

<VirtualHost *:80>
        ServerName vhost1.fedora30.local
        DocumentRoot /home/usuario/public_html/vhost1.fedora30.local
        <Directory /home/usuario/public_html/vhost1.fedora30.local>
                Require all granted
        </Directory>
        LogLevel info
        ErrorLog /var/log/httpd/vhost1.fedora30.local-error.log
        CustomLog /var/log/httpd/vhost1.fedora30.local-access.log combined
</VirtualHost>

<VirtualHost *:443>
        ServerName vhost1.fedora30.local
        DocumentRoot /home/usuario/public_html/vhost1.fedora30.local
        <Directory /home/usuario/public_html/vhost1.fedora30.local>
                Require all granted
        </Directory>

        SSLEngine on
        SSLCertificateFile /etc/letsencrypt/live/vhost1.fedora30.local/cert.pem
        SSLCertificateKeyFile /etc/letsencrypt/live/vhost1.fedora30.local/privkey.pem
        SSLCertificateChainFile /etc/letsencrypt/live/vhost1.fedora30.local/chain.pem

        LogLevel ssl:warn
        ErrorLog /var/log/httpd/vhost1.fedora30.local-error.log
        CustomLog /var/log/httpd/vhost1.fedora30.local-access.log combined
</VirtualHost>

Como puedes ver, la configuración de los dos bloques es prácticamente igual, salvo que una es para el puerto 80 y otra para el puerto 443, y que el segundo bloque activa el módulo SSL cargando los certificados SSL y configura su propio nivel de registro de eventos (LogLevel).

Obviamente, en tu sistema tendrás que cambiar las rutas de las carpetas de archivos web y de los certificados SSL para tus dominios.

Como cualquier otro cambio en la configuración de servidores virtuales, tras guardar los cambios recargamos la configuración de Apache.

Y por fin podremos acceder al servidor Fedora indicando https:// en lugar de http:// en la barra de direcciones del navegador:

certificados ssl apache fedora 30
Acceso mediante HTTPS al servidor Apache en Fedora

Justo como queríamos.

Conclusión

Ahora que ya sabes cómo instalar Apache en Fedora 30 ya puedes empezar a alojar páginas y aplicaciones web en tu servidor Fedora. Podrás alojar tantos como desees y mantenerlos separados gracias a los servidores virtuales de Apache.

¡Apoya este sitio!

¿Feliz porque ya sabes instalar Apache en Fedora? ¿Te has ahorrado un dolor de cabeza configurando Apache? ¿Has ganado en tu pelea con el firewall y la seguridad SELinux de Fedora? Quizás estés tan satisfecho con esta guía que quieras agradecérnoslo con una mínima contribución para el mantenimiento de este sitio… ¡Gracias!

Valora este sitio

1 estrella2 estrellas3 estrellas4 estrellas5 estrellas (1 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