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: 15 комментариев

  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 после ребута стартует вообще?» — блин, как обычно на поверхности все. Спасибо.

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

Ваш адрес email не будет опубликован.

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

Материалы распространяются под лицензией Creative Commons: Атрибуция — Некоммерческое использование — С сохранением условий (Attribution-NonCommercial-ShareAlike) 3.0 Unported.
Рейтинг@Mail.ru