Tabla de Contenidos
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:
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)