Instalación de Pandora FMS con Nginx

Instalación y configuración de NGINX+PHP-FPM para Pandora FMS

Nginx (pronunciado en inglés “engine X”) es un servidor web ligero y/o servidor web intermediario inverso (inverse proxy server o simplemente proxy) de alto rendimiento y un proxy para protocolos de correo electrónico (IMAP/POP3). Es software libre y de código abierto, licenciado bajo la Licencia BSD simplificada. Es usado por una larga lista de sitios web conocidos como WordPress, Netflix, Hulu, GitHub, Ohloh, SourceForge, TorrentReactor y partes de Facebook.

Instalación en CentOS 7

Si es su primera vez utilizando Pandora FMS consulte la sección “Instalación en línea”, de otra manera consulte “Procedimiento de respaldo de datos”.

Instalación de nginx

  • Inicie una venta terminal, ya sea local o remota, e inicie sesión como superusuario GNU/Linux (root).
  • Detenga el servidor Web Apache con la siguiente instrucción:
service httpd stop
  • Instale nginx directamente de los repositorios de CentOS 7.
yum install nginx -y
  • Inicie el servicio de nginx:
service nginx start
  • Por medio de curl confirme si recibe una respuesta de HTTP 200 de nginx (sustituya < IP_address_or_URL > por la dirección IP o URL del servidor PFMS en cuestión):
curl -I <IP_address_or_URL>

Verá algo parecido a esto, observe la primera y segunda línea:

HTTP/1.1 200 OK
Server: nginx/1.20.1
Date: Mon, 13 Jun 2022 02:03:36 GMT
Content-Type: text/html
Content-Length: 63
Last-Modified: Mon, 13 Jun 2022 01:29:17 GMT
Connection: keep-alive
ETag: "62a692ed-3f"
Accept-Ranges: bytes

Configuración de nginx

  • Cambie de propietario los directorios y ficheros de la Consola web PFMS:
chown -R nginx:nginx /var/www/html/
  • Con su editor de texto favorito abra el siguiente fichero /etc/nginx/nginx.conf: y asegúrese de que tenga la siguiente línea:
include /etc/nginx/conf.d/*.conf;
  • Tome nota del directorio anterior, allí estará el fichero deconfiguración para la Consola web PFMS. Asegúrese de que dicho directorio está vacio:
ls -la /etc/nginx/conf.d/
  • Con su editor de texto favorito agregue el siguiente archivo /etc/nginx/conf.d/pandora.conf:
upstream php_backend {
    server 127.0.0.1:9000; ## Connection type for PHP
}
server{
    listen 80;
    server_name <IP_address_or_URL >; ## IP address or URL PFMS server, avoid "localhost" or "127.0.0.1"
 
    root /var/www/html;
    index index.php index.html;
    access_log   logs/pandora.log  combined;
    client_max_body_size 500M;
 
        location ~* \.(png|jpg|jpeg|gif|ico)$ {
           expires 720h;
           log_not_found on;
        }
 
        location ~* \.(css|js|xml)$ {
           gzip_static on;
           expires 720h;
           log_not_found on;
        }
 
        location ~ \.php$ {
                include fastcgi_params;
                fastcgi_buffer_size 128k;
                fastcgi_buffers 4 256k;
                fastcgi_busy_buffers_size 256k;
                fastcgi_intercept_errors on;
                fastcgi_pass   php_backend;
                fastcgi_index  index.php;
                fastcgi_param  REQUEST_METHOD   $request_method;
                fastcgi_param  CONTENT_TYPE     $content_type;
                fastcgi_param  CONTENT_LENGTH   $content_length;
                fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
                fastcgi_param  QUERY_STRING     $query_string;
        }
 
        location / {
                try_files $uri $uri/ $uri.php?$args;
        }
 
}

En la sexta línea sustituya < IP_address_or_URL > por la dirección IP o URL del servidor PFMS.

  • Inicialize el fichero de registro de eventos (log) para la anterior configuración:
mkdir -p /usr/share/nginx/logs/
echo ""> /usr/share/nginx/logs/pandora.log
  • Ahora confirme si la configuración es correcta por medio del siguiente comando:
nginx -t
  • Verá algo similar a esto (de lo contrario vuelva a revisar todos y cada uno de los pasos anteriores):
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Configuración de php-fpm

  • Instale php-fpm de los repositorios de CentOS 7:
yum install php-fpm -y
  • Verifique la instalaciónde las dependencias:
yum install php-­mbstring php-­gd php­-ldap php­-snmp graphviz php-­mysql -y
  • Con su editor de texto favorito abra el siguiente fichero /etc/php-fpm.d/www.conf y edite o agregue las siguientes líneas:
listen = 127.0.0.1:9000
listen.owner = nginx
listen.group = nginx
listen.mode = 0666

user = nginx
group = nginx
  • Cambie de propietario eld irectorio de sesiones de PHP:
chown nginx:nginx /var/lib/php/session
  • Agregue una redirección para la Consola web:
cat> /var/www/html/index.html <<EOF_INDEX
<meta HTTP-EQUIV="REFRESH" content="0; url=/pandora_console/">
EOF_INDEX

Arranque de ambos componentes

  • Para que tanto nginx como php-fpm inicien de manera automática cuandoel servidor que alberga PFMS tenga un reinicio completo:
chkconfig httpd off
chkconfig nginx on
chkconfig php-fpm on
  • Inicie ambos servicios:
service php-fpm start
systemctl restart nginx
  • Revise los logs de nginx:
tail /var/log/nginx/access.log
tail /var/log/nginx/error.log
  • Revise los logs de php-fpm:
tail /var/log/php-fpm/error.log
  • Revise por medio de la herramienta Diagnnostic info la sección correspondiente a PHP, verá algo parecido a esto:

Instalación en CentOS 6

Nginx se plantea como una alternativa a Apache ya que como muestra la comparativa al final de esta sección, NGINX aumentará los tiempos de carga.

Esta guía explica paso a paso como cambiar de servidor web, suponiendo que se utiliza Apache y se necesita usar NGINX en una máquina Centos 6.

Instalación de NGINX

En primer lugar detenga el servicio Apache:

service httpd stop

Cree un directorio para guardar los repositorios y muévase a el:

mkdir /root/temp ; cd /root/temp

Descargue los repositorios de NGINX de http://nginx.org/packages/ según versión, en este ejemplo elegimos Centos 6:

wget http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm

Agregar los repositorios:

rpm -i nginx-release-centos-6-0.el6.ngx.noarch.rpm

Instalar nginx:

yum install nginx

Iniciar el servicio:

service nginx start

Compruebe que funciona correctamente. Vaya al navegador y escriba http://<IP_HOST>/index.html tendrá que mostrar el welcome to nginx!

Configuración de NGINX

Cambiar el usuario y grupo propietario del directorio /var/www/html/ y todos sus subdirectorios:

chown -R nginx:nginx /var/www/html/

El fichero /etc/nginx/nginx.conf puede dejarlo como como viene por defecto, o cambiar lo parámetros que desee:

user  nginx;

worker_processes  5;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;

events {
    worker_connections  4096;
}

http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;

    #gzip  on;

    include /etc/nginx/conf.d/*.conf;
    ## en conf.d/ es donde añadiremos la configuración del servidor
}

En /etc/nginx/conf.d/ crear un fichero nuevo, por ejemplo pandora.conf, y borrar o mover todos los ficheros .conf que existan en este directorio.

nano /etc/nginx/conf.d/pandora.conf

Una posible configuración para el servidor sería la siguiente:

upstream php_backend {
    server unix:/tmp/php5-fpm.sock;  ## ruta donde esta el soket
}

server{
    listen 80;
    server_name 192.168.70.197; ## aquí será importante poner la ip privada del servidor,
                              ## si se pone localhost o 127.0.0.1 nos puede dar algunos
                              ## problemas con las rutas de los directorios
    root /var/www/html;
    index index.php index.html;
    access_log   logs/pandora.log  combined;
    client_max_body_size 500M;

        location ~* \.(png|jpg|jpeg|gif|ico)$ {
           expires 720h;
           log_not_found on;
        }

        location ~* \.(css|js|xml)$ {
           gzip_static on;
           expires 720h;
           log_not_found on;
        }

        location ~ \.php$ {
                include fastcgi_params;
                fastcgi_buffer_size 128k;
                fastcgi_buffers 4 256k;
                fastcgi_busy_buffers_size 256k;
                fastcgi_intercept_errors on;
                fastcgi_pass   php_backend;
                fastcgi_index  index.php;
                fastcgi_param  REQUEST_METHOD   $request_method;
                fastcgi_param  CONTENT_TYPE     $content_type;
                fastcgi_param  CONTENT_LENGTH   $content_length;
                fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
                fastcgi_param  QUERY_STRING     $query_string;
        }

        location / {
                try_files $uri $uri/ $uri.php?$args;
        }

}

Crear el directorio para los logs:

mkdir /etc/nginx/logs/

Para comprobar que la configuración de nginx esta bien ejecutaremos:

nginx -t

Para que coja la nueva configuración reiniciar el servicio:

service nginx restart

Para conocer mejor la sintaxis de los archivos de configuración de NGINX consulte:

http://nginx.org/en/docs/beginners_guide.html

Instalación de php-fpm

Instalar php-fpm (ya está en los repositorios de Centos):

yum install php-fpm

Comprobar si tiene instaladas la siguientes librerías y si no instalarlas:

yum install php-­mbstring php-­gd php­-ldap php­-snmp graphviz php-­mysql

Configuración de php-fpm

Editar el archivo de configuración /etc/php-fpm.d/www.conf:

;listen = 127.0.0.1:9000
listen = /tmp/php5-fpm.sock ; aquí pondremos la ruta donde tengamos nuestro socket
;listen.allowed_clients =
;listen.owner = nobody
;listen.group = nobody
;listen.mode = 0666

listen.owner = nginx
listen.group = nginx
listen.mode = 0666

user = nginx
group = nginx

Cambiamos el usuario y grupo propietario del directorio /var/lib/php/session

chown nginx:nginx /var/lib/php/session

Opcionalmente instalar APC:

yum install php-pecl-apc

La configuración de APC, la podrá cambiar en /etc/php.d/apc.ini, una de las directivas más interesantes a editar para aumentar la velocidad será:

; The size of each shared memory segment, with M/G suffix
apc.shm_size=64M

Iniciar el servicio:

service php-fpm start

Inicio en el arranque

Para hacer que nginx y php-fpm se inicien en el arranque del sistema y Apache deje de hacerlo, ejecute:

chkconfig httpd off
chkconfig nginx on
chkconfig php-fpm on

Logs

Recuerde consultar los logs de nginx y php-fpm además de los de la propia consola (/var/www/html/pandora_console/pandora_console.log)

Logs de NGINX:

/var/log/nginx/access.log /var/log/nginx/error.log

Logs de php-fpm:

/var/log/php-fpm/www-error.log /var/log/php-fpm/error.log

Comparativa de carga entre NGINX y Apache

El objetivo de instalar NGINX es la mejora en los tiempos de carga, aquí mostramos una comparativa para dos máquinas iguales (misma RAM, CPU y base de datos), una con Apache y otra con NGINX:

En el acceso al menú principal: Apache: (4,81s)

NGINX: (4,46s)

En el acceso a Manage Monitoring Apache: (5,83s)

NGINX: (4,84s)

Volver al Índice de Documentación Pandora FMS