Решение проблемы

Установка Zabbix 3 на nginx + php-fpm


Понадобилось настроить работу сервера мониторинга Zabbix на web-сервере с nginx + php-fpm. По-умолчанию zabbix рассчитан на работу с apache, настройки есть только под него. Пришлось некоторое время повозиться, пока не разобрался со всеми необходимыми параметрами, чтобы все корректно заработало. Хочу поделиться своими наработками, так как в сети готовый вариант мне не попался, разбирался сам.

Содержание:

  • 1 Введение
  • 2 Создаем виртуальный хост в nginx для zabbix
  • 3 Редактируем права доступа к каталогам
  • 4 Заключение
  • 5 Дополнительные материалы по Zabbix

Введение

Установка Zabbix 3 на nginx + php-fpm

Я обычно под Zabbix выделяю отдельный сервер и ставлю там по-умолчанию apache, чтобы не заморачиваться. В этот раз понадобилось поднять заббикс на уже готовом веб сервере, который крутится на связке nginx + php-fpm на centos 7, настроенной примерно так же, как в указанной статье.

Ничего сложного тут нет, но с конфигурацией виртуального хоста nginx пришлось немного повозиться, перебирая некоторые настройки и подправляя синтаксис. Поделюсь своими настройками с вами, чтобы не пришлось лишний раз разбираться.

Создаем виртуальный хост в nginx для zabbix

У меня заббикс будет работать на отдельном виртуальном хосте. Для примера будем считать, что имя этого виртуального хоста будет zabbix.site.ru. Веб сервер уже полностью настроен по приведенной выше статье и готов к работе.

Для начала сделаю небольшую пометку. В моей статье про настройку веб сервера все виртуальные хосты описаны в основном файле конфигурации nginx.conf. Это не очень удобно, но статью уже не хочется переделывать. Сейчас мы вынесем настройки хоста для заббикса в отдельный конфигурационный файл в папку /etc/nginx/conf.d.

Для этого в файл nginx.conf в секцию с настройками http нужно добавить строку:

include  /etc/nginx/conf.d/*.conf

Теперь все файлы из этой папки с расширением .conf будут подключаться к основной конфигурации. Создаем в этой папке файл конфигурации виртуального хоста для zabbix следующего содержания:

# mcedit /etc/nginx/conf.d/zabbix.conf
server {

listen 80;
root /usr/share/zabbix;
access_log /var/log/nginx/zabbix.access.log;
server_name zabbix.site.ru;
location / {
index index.php index.html index.htm;
}
location ~ .php$ {
fastcgi_pass unix:/var/run/php-fpm/php5-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
fastcgi_param PHP_VALUE "
max_execution_time = 300
memory_limit = 128M
post_max_size = 16M
upload_max_filesize = 2M
max_input_time = 300
date.timezone = Europe/Moscow
always_populate_raw_post_data = -1
";
fastcgi_buffers 8 256k;
fastcgi_buffer_size 128k;
fastcgi_intercept_errors on;
fastcgi_busy_buffers_size 256k;
fastcgi_temp_file_write_size 256k;
}
}

Обращаю внимание, что у меня nginx работает с php-fpm через сокет. Если у вас по tcp порту, то ставьте

fastcgi_pass 127.0.0.1:9000;

Сохраняете файл и проверяете конфигурацию на ошибки:

# nginx -t

Если все ОК, то дальше можно приступать к установке zabbix 3.0 как рассказано у меня в статье. Все этапы в точности совпадают, кроме настройки httpd. Его можно не ставить, пропустить все, что его касается. Параметры для php мы уже задали в свойствах виртуального хоста.

Редактируем права доступа к каталогам

Установка Zabbix 3 на nginx + php-fpm

После того, как вы выполните все предварительные действия, установите пакеты с заббиксом из репозитория, и будете готовы перейти по адресу виртуального хоста в браузере для продолжения установки через web интерфейс, вам нужно будет внести некоторые изменения в конфигурационные файлы.

Дело в том, что zabbix рассчитан на работу с apache и поэтому владельцем некоторых файлов устанавливается он. Как вариант, можно запустить nginx от пользователя apache, но мне кажется более правильным изменить права доступа к файлам. Нужно сделать владельцем самих исходников web панели и папки с конфигурацией пользователя nginx.

# chown -R nginx. /etc/zabbix/web

# chown -R nginx. /usr/share/zabbix

После этого можно заходить по адресу http://zabbix.site.ru и приступать к установке. Если не изменить права доступа, то в логах вы увидите ошибки:

PHP message: PHP Fatal error:  require_once(): Failed opening required '/etc/zabbix/web/maintenance.inc.php' (include_path='.:/usr/share/pear:/usr/share/php') in /usr/share/zabbix/include/classes/core/ZBase.php on line 286" while reading response header from upstream, client: 109.188.124.35, server: zabbix.site.ru, request: "GET / HTTP/1.1", upstream: "fastcgi://unix:/var/run/php-fpm/php5-fpm.sock:", host: "zabbix.site.ru"

Заключение

Подведем итог. Чтобы установить zabbix на веб сервер с nginx + php-fpm нужно воспользоваться моей статьей по настройке веб сервера. После этого создать виртуальный хост для заббикс из этой статьи. Когда это сделаете, открываете статью по установке zabbix на centos, делаете все по ней, только пропускаете установку и настройку httpd. Доходите до момента, где нужно переходить по веб адресу для продолжения установки и меняете права доступа на каталоги. Потом продолжаете установку и настройку.


СМОТРИ ТАКЖЕ