Cómo instalar Nginx en Fedora 30

En esta entrada veremos cómo instalar Nginx en Fedora 30 paso a paso, de modo que puedas usar uno de los servidores web más rápidos y ligeros de los que compiten contra el viejo Apache en tu servidor o VPS Fedora. Con esta guía aprenderás a instalar y configurar Nginx, con servidores virtuales y seguridad SSL.

Antes de instalar Nginx en Fedora 30

Necesitarás unos mínimos requisitos para seguir los pasos de esta guía de instalación de Nginx en Fedora 30:

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

Supongo que si estás leyendo esto es porque ya estás en condiciones de empezar con el trabajo, así que vamos a ponernos manos a la obra.

Cómo instalar Nginx en Fedora 30

Para instalar Nginx en Fedora 30 usaremos el repositorio oficial del sistema, por lo que actualizaremos las listas de paquetes:

~$ sudo yum update

Y ahora sí, instalamos el paquete nginx, junto con todas sus dependencias:

~$ sudo yum install -y nginx

En unos instantes se descargarán e instalarán todos los paquetes necesarios.

Cómo iniciar Nginx en Fedora 30

El servicio que acabamos de instalar se llama nginx y por defecto ni se activa ni queda en funcionamiento, como podemos comprobar con systemctl status:

~$ systemctl status nginx
● nginx.service - The nginx HTTP and reverse proxy server
   Loaded: loaded (/usr/lib/systemd/system/nginx.service; disabled; vendor preset: disabled)
   Active: inactive (dead)

Para activar el servicio y que inicie con Fedora en cada arranque del sistema emplearemos el comando systemctl enable:

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

Finalmente, para iniciar el servicio usaremos el comando systemctl start:

~$ sudo systemctl start nginx

Ahora ya podemos comprobar que el servicio nginx está activo:

~$ systemctl status nginx
● nginx.service - The nginx HTTP and reverse proxy server
   Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor preset: disabled)
   Active: active (running) since Wed 2020-08-19 15:30:10 CEST; 20s ago
  Process: 878 ExecStartPre=/usr/bin/rm -f /run/nginx.pid (code=exited, status=0/SUCCESS)
  Process: 879 ExecStartPre=/usr/sbin/nginx -t (code=exited, status=0/SUCCESS)
  Process: 880 ExecStart=/usr/sbin/nginx (code=exited, status=0/SUCCESS)
 Main PID: 881 (nginx)
    Tasks: 2 (limit: 1135)
   Memory: 2.4M
   CGroup: /system.slice/nginx.service
           ├─881 nginx: master process /usr/sbin/nginx
           └─882 nginx: worker process

... fedora30.local.lan systemd[1]: Starting The nginx HTTP and reverse proxy server...
... fedora30.local.lan nginx[879]: nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
... nginx[879]: nginx: configuration file /etc/nginx/nginx.conf test is successful
... systemd[1]: Started The nginx HTTP and reverse proxy server.

Vamos a comprobarlo desde un navegador en otra máquina de la red local:

como instalar nginx en fedora 30
Nginx en Fedora 30 parece que no acepta conexiones externas

No ha funcionado, ¿la razón?… El firewall de Fedora 30.

Cómo configurar el firewall de Fedora para Nginx

Vamos a añadir los servicios http y https como excepciones del firewall de Fedora:

~$ sudo firewall-cmd --permanent --add-service={http,https}

Aplicaremos los cambios recargando la configuración del firewall:

~$ sudo firewall-cmd --reload

Y ahora probamos de nuevo a acceder desde el navegador de otra máquina:

instalar nginx en fedora 30
Ahora sí funciona

Ya tenemos el servidor web Nginx funcionando y sirviendo contenido desde Fedora.

Cómo configurar Nginx en Fedora 30

A la hora de configurar Nginx en Fedora 30 debemos tener en cuenta que la ruta de los archivos de configuración está en /etc/nginx/.

El archivo de configuración principal es /etc/nginx/nginx.conf.

Cada vez que hagamos cambios en la configuración de Nginx estos no se activarán hasta que recarguemos la configuración:

~$ sudo systemctl reload nginx

Achivos de registro de eventos o logs

Los archivos de registro se encuentran en /var/log/nginx/. Siempre que las cosas no vayan como esperas y no sepas a qué se debe, echa un vistazo a las últimas líneas de estos archivos.

Ruta de archivos web

La ruta configurada por defecto para alojar sitios web en el sistema es /usr/share/nginx/. Concretamente, la página web por defecto está en /usr/share/nginx/html/.

Servidores virtuales (virtual hosts) de Nginx en Fedora 30

Si vas a configurar servidores virtuales para tu servidor Nginx obviamente necesitarás tener dominios registrados y apuntados a tu servidor Fedora 30. En esta guía configuraremos un servidor virtual para el subdominio fedora30.comoinstalar.me.

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

Vamos a crear la configuración necesaria, empezando por un directorio donde se guardarán los archivos de configuración de cada servidor virtual.

Este directorio lo situaremos dentro de la carpeta de configuración de Nginx:

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

Dentro de esta carpeta crearemos un archivo con extensión .conf por cada servidor virtual. Para que Nginx lea estos archivos, se lo indicaremos en su configuración, editando el archivo principal:

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

Buscaremos dentro del bloque server una directiva include que ya se encarga de cargar otros archivos de configuración:

http {
...
    # Load modular configuration files from the /etc/nginx/conf.d directory.
    # See http://nginx.org/en/docs/ngx_core_module.html#include
    # for more information.
    include /etc/nginx/conf.d/*.conf;
...

Justo a continuación de esa línea podemos añadir otra directiva include para tener en cuenta el directorio de configuraciones de servidores virtuales que acabamos de crear:

...
    # Load modular configuration files from the /etc/nginx/conf.d directory.
    # See http://nginx.org/en/docs/ngx_core_module.html#include
    # for more information.
    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites.d/*.conf;
...

Antes de configurar el primer servidor virtual, vamos a crear una página web de prueba. Creamos una carpeta donde residirán las páginas y archivos del sitio web:

$ sudo mkdir /usr/share/nginx/fedora30.comoinstalar.me

Y creamos un archivo index.html de prueba, para tener un contenido básico:

$ sudo nano /usr/share/nginx/fedora30.comoinstalar.me/index.html

Como contenido de este archivo, vale cualquier cosa que nos sirva para hacer la prueba:

<h1>fedora30.comoinstalar.me</h1>

Ya podemos empezar a configurar el servidor virtual para este sitio web. Editaremos su archivo de configuración en el directorio que creamos para servidores virtuales:

$ sudo nano /etc/nginx/sites.d/fedora30.comoinstalar.me.conf

El contenido mínimo sería este:

server {
        listen 80;
        listen [::]:80;

        server_name fedora30.comoinstalar.me;

        root /usr/share/nginx/fedora30.comoinstalar.me/;
        index index.html;

        location / {
                try_files $uri $uri/ =404;
        }

        error_log /var/log/nginx/fedora30.comoinstalar.me-error.log;
        access_log /var/log/nginx/fedora30.comoinstalar.me-access.log main;
}

Esta configuración es muy sencilla, se basa en un bloque server que contiene directivas y otros bloques. Veamos qué son:

listen

La primera línea indica que escucha peticiones IPv4 en el puerto 80, y la segunda es igual, pero sobre IPv6.

server_name

Aquí especificas el dominio o subdominio al que responde el servidor virtual.

root

La ruta de los archivos y documentos web del sitio.

index

Identifica el archivo que actuará como página por defecto dentro de las carpetas web del sitio. Normalmente el index.html, index.php, etc.

location

Este bloque permite aplicar una serie de configuraciones a localizaciones dentro del sitio. En este ejemplo, en la ruta principal se prueba la URL a la que se quiere acceder en primer lugar como fichero, en su defecto como directorio y si falla esto, se devolverá un error 404 (not found).

logs

La ubicación de los archivos de registro del servidor virtual, tanto el de errores como el de acceso.

Cómo iniciar el nuevo servidor virtual

Para activar la nueva configuración, recargamos el servicio nginx:

$ sudo systemctl reload nginx

Y para comprobar si funciona, accedemos desde el navegador utilizando como URL el dominio que hemos configurado:

como instalar y configurar nginx en fedora 30

Funciona justo como esperábamos.

HTTPS en servidores virtuales de Nginx en Fedora

Para añadir acceso SSL por protocolo HTTPS, debemos tener instalados los certificados SSL asociados al dominio que estamos configurando.

Si aún no has conseguido los certificados SSL para el dominio que te interese, puedes hacerlo a través de servicios profesionales como Namecheap:

SSL Certificate for just $8.88 with Namecheap

Configuraremos el acceso a estos certificados en el archivo de configuración del servidor virtual, añadiendo algunas líneas:

server {
        listen 80;
        listen [::]:80;
        listen 443 ssl;
        listen [::]:443 ssl;

        server_name fedora30.comoinstalar.me;

        ssl_certificate /etc/ssl/certs/fedora30.comoinstalar.me/cert.pem;
        ssl_certificate_key /etc/ssl/certs/fedora30.comoinstalar.me/privkey.pem;

        root /usr/share/nginx/fedora30.comoinstalar.me/;
        index index.html;

        location / {
                try_files $uri $uri/ =404;
        }

        error_log /var/log/nginx/fedora30.comoinstalar.me-error.log;
        access_log /var/log/nginx/fedora30.comoinstalar.me-access main;
}

Hemos añadido un par de directivas listen para usar SSL en el puerto 443 (por IPv4 e IPv6) y las sentencias correspondientes a la ubicación de los certificados SSL.

Recargamos de nuevo la configuración del servidor y accedemos, esta vez usando HTTPS en lugar de HTTP:

como configurar nginx en fedora 30

Y ya tenemos el servidor virtual accesible también por HTTPS.

Servir contenido desde los directorios de usuario con Nginx en Fedora 30

Es posible, sobre todo en ambientes con varios usuarios, querer que Nginx pueda servir contenido web desde el directorio personal de nuestro usuario de Fedora 30, para facilitar la gestión de los archivos sin tener que usar sudo, por ejemplo.

En este caso podríamos crear una carpeta htdocs, public_html o el nombre que prefieras en tu directorio personal:

~$ mkdir public_html

Un primer problema con el que nos encontramos es que el directorio personal sólo tiene permisos de acceso exclusivo para el propietario, ni siquiera los tiene para el grupo:

~$ ll ..
total 0
drwx------. 5 chacho chacho 128 ago 19 15:03 chacho

Por tanto tendríamos que permitir lectura y ejecución para terceros u otros usuarios, donde se incluiría el usuario nginx:

~$ chmod o+rx .

Si consultamos los permisos de nuevo, veremos que ahora sí otros usuarios podrán acceder a nuestro directorio personal en modo lectura:

~$ ll ..
total 0
drwx---r-x. 5 chacho chacho 128 ago 19 15:03 chacho

Sólo nos faltará definir con el comando semanage un contexto de lectura para el servicio web en la carpeta que acabamos de crear, así que nos aseguraremos de disponer de semanage instalando el paquete policycoreutils-python-utils si no lo tenemos ya:

~$ sudo yum install -y policycoreutils-python-utils

Definimos el contexto:

~$ sudo semanage fcontext -a -t httpd_sys_content_t "/home/chacho/public_html(.*)?"

Y lo aplicamos con restorecon:

~$ sudo restorecon /home/chacho/public_html/

Conclusión

Ya sabes cómo instalar Nginx en Fedora 30, así que si estás pensando en configurar tu VPS Fedora para mucho tráfico o aplicaciones web pesadas, es una gran alternativa a Apache.

Si tienes dudas, sugerencias, errores o consultas, déjame un comentario.

¡Apoya este sitio!

¿Pensabas que instalar y configurar Nginx en Fedora 30 sería un dolor de cabeza? ¡Pues acabas de comprobar que no es así! Si estás tan contento de haberlo conseguido que te gustaría contribuir mínimamente al mantenimiento de este sitio, y puedes hacerlo invitándonos a un café:

 

O dejando 1 $ de propina en PayPal:

¡Gracias!

Valora esta entrada

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

2 comentarios en «Cómo instalar Nginx en Fedora 30»

    • ¡Hola, Tito! Se trata de un tema de permisos de acceso y SELinux. Acabo de añadir la configuración necesaria al final del artículo, échale un vistazo.

      Responder

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