¿Cómo instalar NGINX en NetBSD?

NGINX es un servidor web con excelente rendimiento y bajo consumo de memoria. NGINX también puede usarse como proxy reverso (FastCGI, Apache, uWSGI), como proxy para protocolos de correo (IMAP, POP3) y como balanceador de carga.

En este artículo instalaremos NGINX como proxy FastCGI, es decir las peticiones PHP que le hagamos a nuestro servidor web serán redirigidas a un servidor PHP-FPM.

Le puede interesar:

Instalar

# pkgin in nginx
calculating dependencies...done.

2 packages to install:
  nginx-1.19.6 pcre-8.44

0 to refresh, 0 to upgrade, 2 to install
0B to download, 4698K to install

proceed ? [Y/n]

Administrar el proceso nginx

En esta parte aprenderemos cómo iniciar, detener o reiniciar el servicio nginx, para esto usaremos el «Administrador de sistema» de BSD que está compuesto por los servicios: init, rc y service

Agregar script de inicialización

El paquete nginx nos proporciona un script de ejemplo /usr/pkg/share/examples/rc.d/nginx así que bastaría con copiar dicho script para /etc/rc.d

# cp -v  /usr/pkg/share/examples/rc.d/nginx  /etc/rc.d/
/usr/pkg/share/examples/rc.d/nginx -> /etc/rc.d/nginx

Inicio automático

Añadimos la siguiente línea al fichero /etc/rc.conf la cuál indica que el servicio nginx se inicia automáticamente después de un reinicio del sistema operativo.

nginx=YES

Comprobar estado

# service nginx status
nginx is not running.

Iniciar

# service nginx start  
Starting nginx.

puede comprobar el estado nuevamente

# service nginx status
nginx is running as pid 13875.

Reiniciar

Para aplicar cualquier modificación realizada al fichero de configuración debe reiniciar el servicio con el siguiente comando:

# service nginx restart
Stopping nginx.
Starting nginx.

Refrescar configuraciones

Es preferible usar el siguiente comando para refrescar las configuraciónes ya que el servicio recargará las configuraciones sin perder las conexiones.

# service nginx reload
Reloading nginx config files.

Detener el servicio

# service nginx stop   
Stopping nginx.

Chequeando los ficheros de configuración

A continuación mostramos donde se encuentra los ficheros de configuración para el servidor web.

/usr/pkg/etc/nginx/
|-- fastcgi.conf
|-- fastcgi_params
|-- koi-utf
|-- koi-win
|-- mime.types
|-- nginx.conf
`-- win-utf

Creando Virtual Hosts

Desde mi punto de vista Debian organiza mejor las configuraciones de NGINX, Vea NGINX como proxy reverso, así que vamos a seguir su filosofía y crear los directorios sites-enabled y sites-available de esta manera podemos habilitar y deshabilitar Virtual Host de una manera más fácil, también creamos el directorio conf.d para configuraciones globales y el directorio snippets para configuraciones específicas.

# mkdir /usr/pkg/etc/nginx/sites-enabled
# mkdir /usr/pkg/etc/nginx/sites-available
# mkdir /usr/pkg/etc/nginx/conf.d
# mkdir /usr/pkg/etc/nginx/snippets

Ahora modificamos el fichero de configuración principal nginx.conf y agregamos las siguientes líneas al final de la sección http

##
# Virtual Host Configs
##

include /usr/pkg/etc/nginx/conf.d/*.conf;
include /usr/pkg/etc/nginx/sites-enabled/*;

Ahora tenemos la siguiente estructura de directorios:

/usr/pkg/etc/nginx/
|-- conf.d
|-- fastcgi.conf
|-- fastcgi_params
|-- koi-utf
|-- koi-win
|-- mime.types
|-- nginx.conf
|-- sites-available
|-- sites-enabled
|-- snippets
`-- win-utf

Ahora vamos a integrar NGINX con PHP-FPM consulte Como instalar PHP en NetBSD para más información.

Creamos una plantilla php-fpm-upstream.conf dentro de conf.d

# touch /usr/pkg/etc/nginx/conf.d/php-fpm-upstream.conf

y agregamos las siguiente líneas:

upstream php-fpm {
    server 127.0.0.1:9000;
}

Ajuste la directiva server de acuerdo la configuración del pool de PHP-FPM a la cuál desea conectarse.

Creamos una plantilla php-fpm.conf dentro de snippets

# touch /usr/pkg/etc/nginx/snippets/php-fpm.conf

y agregamos las siguiente líneas:

fastcgi_pass   php-fpm;
fastcgi_index  index.php;
fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
include        /usr/pkg/etc/nginx/fastcgi_params;

Creamos una plantilla proxy-php-fpm dentro de sites-available

# touch /usr/pkg/etc/nginx/sites-available/proxy-php-fpm

y agregamos:

server {
    listen 80;
    server_name midominio.com;
    # Set the document root
    root /var/www/midominio;
    index index.php;
    
    location = /favicon.ico {
        log_not_found off;
        access_log off;
    }
    
    location = /robots.txt {
        allow all;
        log_not_found off;
        access_log off;
    }
    
    location / {
        # This is cool because no php is touched for static content.
        # include the "?$args" part so non-default permalinks doesn't break when
        # using query string
        try_files $uri $uri/ /index.php?$args;
    }
    
    location ~ \.php$ {
        include /usr/pkg/etc/nginx/snippets/php-fpm.conf;
    }
    
    location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
        expires max;
        log_not_found off;
    }
}

Configuramos nuestro primer sitio de acuerdo a la configuración anterior.

# cp -v /usr/pkg/etc/nginx/sites-available/proxy-php-fpm /usr/pkg/etc/nginx/sites-available/misitio
/usr/pkg/etc/nginx/sites-available/proxy-php-fpm -> /usr/pkg/etc/nginx/sites-available/misitio

Edite el fichero misitio y ajuste la directiva server_name luego active el sitio con:

# ln -s /usr/pkg/etc/nginx/sites-available/misitio /usr/pkg/etc/nginx/sites-enabled/misitio 

Compruebe la configuración del NGINX:

# nginx -t
nginx: the configuration file /usr/pkg/etc/nginx/nginx.conf syntax is ok
nginx: configuration file /usr/pkg/etc/nginx/nginx.conf test is successful

Refresque las configuraciones:

# service nginx reload
Reloading nginx config files.

Rotación de logs

La rotación de logs es un mecanismo que permite vaciar los log cada cierto tiempo, manteniendo copias de los mismos. NetBSD usa newsyslog para realizar esta tarea, entonces agregamos las siguientes líneas a /etc/newsyslog.conf.

# echo '/var/log/nginx/access.log nginx:nginx 640 7 * 24 Z  /var/run/nginx.pid SIGUSR1' >> /etc/newsyslog.conf
# echo '/var/log/nginx/error.log  nginx:nginx 640 7 * 24 Z  /var/run/nginx.pid SIGUSR1' >> /etc/newsyslog.conf

Enlace de interés

YouTube video

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.