Переносим cacti на nginx + php-fpm (Debian 6 squeeze)

Небольшая заметка о работе системы мониторинга "Cacti" в связке с Nginx+php-fpm. Cперва добавляем репозитарий dotdeb.org: В файл /etc/apt/sources.list добавляем следующие строки:

deb http://packages.dotdeb.org squeeze all
deb-src http://packages.dotdeb.org squeeze all

Получаем и добавляем ключ:

wget http://www.dotdeb.org/dotdeb.gpg cat dotdeb.gpg | sudo apt-key add -

И устанавливаем nginx и php, php-fpm Сперва настроим php-fpm. Редактируем /etc/php5/fpm/pool.d/www.conf Комментируем строку listen = 127.0.0.1:9000 и добавим listen = /var/run/cacti.sock Т.е. вместо TCP-сокета будем использовать unix-сокет после чего редактируем строку pm = dynamic. Приводим ее к виду pm = ondemand. Дочерние процессы не будут создаваться при старте, а только при необходимости. устанавливаем максимальное кол-во запущенных пpоцессов pm.max_children = 30, этот параметр зависит от максимальной загрузкм сервера и доступных его ресурсов. Добавим так же опции php:

php_admin_value[magic_quotes_gpc] = Off
php_admin_value[short_open_tag] = On
php_admin_value[register_globals] = Off
php_admin_value[register_argc_argv] = On
php_admin_value[track_vars] = On
php_admin_value[mbstring.func_overload] = 0

В итоге мы получим конфигурационный файл вида:

cat /etc/php5/fpm/pool.d/www.conf
[cacti]
listen = /var/run/cacti.sock
listen.mode = 0666
user = www-data
group = www-data
pm = ondemand
pm.max_children = 30
pm.start_servers = 0
pm.min_spare_servers = 0
pm.max_spare_servers = 0
pm.max_requests = 500
request_terminate_timeout = 2m                                                                                                                                                      
request_slowlog_timeout = 1m                                                                                                                                                        
slowlog = /var/log/php-fpm.slow.log                                                                                                                                                 
php_admin_value[magic_quotes_gpc] = Off
php_admin_value[short_open_tag] = On
php_admin_value[register_globals] = Off
php_admin_value[register_argc_argv] = On
php_admin_value[track_vars] = On
php_admin_value[mbstring.func_overload] = 0

рестартуем php-fpm:

/etc/init.d/php-fpm restart ls -la /var/run | grep cacti

если все в поряке увидим cacti.sock Далее создаем самоподписанный SSL-сертификат

mkdir -p /etc/ssl/localcerts openssl req -new -x509 -days 365 -nodes -out /etc/ssl/localcerts/cacti.pem -keyout /etc/ssl/localcerts/cacti.key chmod 600 /etc/ssl/localcerts/cacti*

И последним пунктом конфигурационный файл nginx

cat /etc/nginx/sites-enabled/cacti.conf
server {
       listen 443;
       server_name cacti.ВАШ_ДОМЕН;
       ssl on;
       ssl_certificate /etc/ssl/localcerts/cacti.pem;
       ssl_certificate_key /etc/ssl/localcerts/cacti.key;
       ssl_session_timeout 5m;
       ssl_protocols SSLv3 TLSv1;
       ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv3:+EXP;
       ssl_prefer_server_ciphers on;

location / {
           root /usr/share/cacti/site/;
           index index.php index.html index.htm;
           location ~ ^/(.+\.php)$ {
                   try_files $uri =404;
                   fastcgi_pass unix:/var/run/cacti.sock;
                   include /etc/nginx/fastcgi_params;
                   fastcgi_param  HTTPS on;
                   fastcgi_index index.php;
                   fastcgi_param SCRIPT_FILENAME $request_filename;
            }
}
}

после рестарта nginx -

/etc/init.d/nginx restart

мы должны получить рабочий cacti