Zabbix 3 на nginx и php-fpm на centos 7

Идея в том, чтоб настроить веб-интерфейс zabbix 3 на nginx и php-fpm на одном сервере, а zabbix-server на другом.

Настраиваем веб-сервер

Ставим nginx

rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
yum install nginx

systemctl start nginx
systemctl enable nginx

Конфиг nginx

vim /etc/nginx/conf.d/zabbix.conf
server {
listen 80;

root /usr/share/zabbix;
access_log /var/log/nginx/zabbix.access.log;
server_name 172.16.16.10;

location / {
index index.php index.html index.htm;
}

location ~ \.php$ {
#fastcgi_pass 127.0.0.1:9000;
fastcgi_pass unix:/var/run/php-fpm/php-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;
}

client_max_body_size 32m;

}

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

fastcgi_pass 127.0.0.1:9000;

Открываем 80, 443 порты

firewall-cmd --add-service=http --permanent
firewall-cmd --add-service=https --permanent
firewall-cmd --reload

Ставим php-fpm

rpm -ivh http://rpms.remirepo.net/enterprise/remi-release-7.rpm
yum install epel-release yum-utils
yum-config-manager --enable remi-php71

yum install php71
yum install php-fpm php-cli php-mysql php-gd php-ldap php-odbc php-pdo php-pecl-memcache php-pear php-xml php-xmlrpc php-mbstring php-snmp php-soap

systemctl start php-fpm
systemctl enable php-fpm

Настроим php-fpm

yum install net-tools

netstat -tulpn | grep php-fpm

Все в порядке, повис на порту 9000. Запустим его через unix сокет. Для этого открываем конфиг /etc/php-fpm.d/www.conf и комментируем строку:

vim /etc/php-fpm.d/www.conf

;listen = 127.0.0.1:9000

Вместо нее добавляем несколько других:

listen = /var/run/php-fpm/php-fpm.sock
listen.mode = 0660
listen.owner = nginx
listen.group = nginx

Заодно измените пользователя, от которого будет работать php-fpm. Вместо apache укажите nginx

user = nginx
group = nginx

Ставим zabbix

rpm -ivh http://repo.zabbix.com/zabbix/3.5/rhel/7/x86_64/zabbix-release-3.5-1.el7.noarch.rpm
yum install zabbix-web-mysql

Настроим selinux
Дадим права на подключение к удаленной базе mysql

getsebool -a | grep httpd_can_network_connect_db
setsebool -P httpd_can_network_connect_db 1

Дадим возможность вебморде подключаться к серверной части

getsebool -a | grep zabbix
setsebool -P httpd_can_connect_zabbix 1

Настроим права

chown -R nginx. /etc/zabbix/web
chown -R nginx. /usr/share/zabbix

Дабы не получать ошибку

PHP message: PHP Fatal error:  Uncaught Exception: Cannot start session. in /usr/share/zabbix/include/classes/core/CSession.php:50

в /etc/php-fpm.d/www.conf ищем строку

php_value[session.save_path]    = /var/lib/php/session

И выставляем полные права на директорию /var/lib/php/session

chmod 770 /var/lib/php/session
chown :nginx /var/lib/php/session
systemctl restart php-fpm

Перезапускаем nginx

systemctl restart nginx.service

 

Настраиваем второй сервер

Ставим mariadb

yum install mariadb-server mariadb-devel
systemctl enable mariadb.service
systemctl start mariadb.service

Создадим базу и дадим права

create database zabbix;
grant all privileges on zabbix.* to 'zabbix'@'localhost' identified by 'пароль';
grant all privileges on zabbix.* to 'zabbix'@'172.16.16.10' identified by 'пароль';
flush privileges;

где 172.16.16.10 — ip адрес веб-сервера

Ставим zabbix-сервер

rpm -ivh http://repo.zabbix.com/zabbix/3.5/rhel/7/x86_64/zabbix-release-3.5-1.el7.noarch.rpm
yum install zabbix-server-mysql zabbix-agent

Указываем пароль базы

vim /etc/zabbix/zabbix_server.conf
DBPassword=пароль

Запускаем

systemctl start zabbix-server.service
systemctl enable zabbix-server.service
systemctl start zabbix-agent.service
systemctl enable zabbix-agent.service

Откроем порт mysql

firewall-cmd --add-service=mysql --permanent
firewall-cmd --reload

Открываем порты 10051, 10050, snmp

firewall-cmd --permanent --new-service=zabbix
firewall-cmd --service=zabbix --add-port=10051/tcp --permanent
firewall-cmd --service=zabbix --add-port=10050/tcp --permanent
firewall-cmd --add-service=zabbix --permanent
firewall-cmd --add-service=snmp --permanent
firewall-cmd --reload

По мотивам:
https://serveradmin.ru/ustanovka-i-nastroyka-nginx-php-fpm-php7-1-na-centos-7/
https://serveradmin.ru/ustanovka-zabbix-3-na-nginx-php-fpm/

Zabbix 3 на nginx и php-fpm на centos 7: 13 комментариев

  1. Чет не работает ваш мануал. Вероятно что-то опустили. Если сделать все по нему то забикс не пашет. Nginx выдает 502.

    1. Перепроверил. Все правильно вроде написал. Хочу напомнить, я все это делал на centos 7.
      Попробуйте проверить все пути и права, посмотрите логи. Так же можно попробовать временно отключить selinux и проверить будет ли работать.

      1. Я тоже руку набиваю на виртуалках, но вот хоть убей не выходит с этим nginx.
        Я как минимум не вижу в мануале инициализацию mariadb, где вводишь пароль и т.д.
        Selinux и firewalld выключаю, они неактив. Поднимаю Nginx он работает и приветствует. Потом добавляю строку с server_name и указываю адрес текущего сервера, то 502, ипосле того как заббикс ставлю настраиваю его и т.д. НИчего не меняется. Набираю «адрес\zabbix» тоже самое 502.

        1. ну вот смотри. Чутка поправил.
          Нужно выставить права на /var/lib/php/session уже после установки zabbix-web-mysql, потому что там тянется зависимостями апач и меняет группу на свою.
          chmod 770 /var/lib/php/session
          chown :nginx /var/lib/php/session
          systemctl restart php-fpm
          и уже после перезапускаем nginx и я вижу страницу установки zabbix-a

          Единственное я не понимаю почему в момент установки zabbix-a при проверке php показывает, что нет модуля bcmath, хотя он установлен. В момент, когда писал этот пост с этим не столкнулся.

          По поводу инициализации mariadb. Ну как же. Вот.
          systemctl enable mariadb.service
          systemctl start mariadb.service
          в самом начале начале настройки сторого сервера, где ставим mariadb. Пароль руту я не ставил. Кому надо сам поставит.
          Про пароль к базе там тоже есть.

          А зачем ты открываешь адрес\zabbix? Достаточно просто адреса. Вообще его можно заменить на имя.

          1. «Пароль руту я не ставил» — понял, обычно это моветон, и подумал ты просто это упустил.
            «А зачем ты открываешь адрес\zabbix?» — я пробовал по всякому, просто написал что так тоже пробовал.
            Спасибо может реально что-то с правами забыл, чуть позже попробую и маякну.

          2. Вы правы, косяк с правами, повторно выдал их и все заработало. Благодарствую.

  2. Камрад!
    А подскажите почему могут не сохраняться права?
    Вот я в консоли выполнил эти три команды:

    chmod 770 /var/lib/php/session
    chown :nginx /var/lib/php/session
    systemctl restart php-fpm

    Все работает нормально, но если я выключу сервер и потом включу заново, то при попытке зайти на веб-морду у меня 502 ошибка. Тогда я в консоли выполняю команды, но уже две:
    chmod 770 /var/lib/php/session
    systemctl restart php-fpm
    И тогда веб-морда открывается, но если снова выключу-включу, надо будет заново эти две команды написать.

    1. Специально ребутнул свою виртуалку — права не слетают. Да и с чего бы это.
      А какие права на /var/lib/php/session после перезагрузки?
      Можешь показать ls -ld /var/lib/php/session ?

      1. С работающей веб-мордой:
        https://image.ibb.co/mduhoU/nginx.png

        Ребутнул, веб-морда выдает 502. Права точно такие же — не изменились. Набрал снова две строки. Доступ появился. Снова проверил права. Сточка не изменилась. Во всех трех случая одно и тоже что на пикче выше.

        1. Смысл выставлять заново права, когда они у тебя правильные?
          Подожди с пару секунд после ребута, обнови страницу и все откроется 🙂

        2. Кстати, а у тебя php-fpm после ребута стартует вообще?
          Я так понимаю, ты его просто запускаешь этими командами, думая что проблема в правах. Отсюда, кстати, и 502 ошибка.

  3. «Кстати, а у тебя php-fpm после ребута стартует вообще?» — блин, как обычно на поверхности все. Спасибо.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.