Идея в том, чтоб настроить веб-интерфейс 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/
Чет не работает ваш мануал. Вероятно что-то опустили. Если сделать все по нему то забикс не пашет. Nginx выдает 502.
Перепроверил. Все правильно вроде написал. Хочу напомнить, я все это делал на centos 7.
Попробуйте проверить все пути и права, посмотрите логи. Так же можно попробовать временно отключить selinux и проверить будет ли работать.
ради эксперимента попробую поднять виртуалку заново по своему же ману.
Я тоже руку набиваю на виртуалках, но вот хоть убей не выходит с этим nginx.
Я как минимум не вижу в мануале инициализацию mariadb, где вводишь пароль и т.д.
Selinux и firewalld выключаю, они неактив. Поднимаю Nginx он работает и приветствует. Потом добавляю строку с server_name и указываю адрес текущего сервера, то 502, ипосле того как заббикс ставлю настраиваю его и т.д. НИчего не меняется. Набираю «адрес\zabbix» тоже самое 502.
ну вот смотри. Чутка поправил.
Нужно выставить права на /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? Достаточно просто адреса. Вообще его можно заменить на имя.
«Пароль руту я не ставил» — понял, обычно это моветон, и подумал ты просто это упустил.
«А зачем ты открываешь адрес\zabbix?» — я пробовал по всякому, просто написал что так тоже пробовал.
Спасибо может реально что-то с правами забыл, чуть позже попробую и маякну.
Вы правы, косяк с правами, повторно выдал их и все заработало. Благодарствую.
Камрад!
А подскажите почему могут не сохраняться права?
Вот я в консоли выполнил эти три команды:
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
И тогда веб-морда открывается, но если снова выключу-включу, надо будет заново эти две команды написать.
Специально ребутнул свою виртуалку — права не слетают. Да и с чего бы это.
А какие права на /var/lib/php/session после перезагрузки?
Можешь показать ls -ld /var/lib/php/session ?
С работающей веб-мордой:
https://image.ibb.co/mduhoU/nginx.png
Ребутнул, веб-морда выдает 502. Права точно такие же — не изменились. Набрал снова две строки. Доступ появился. Снова проверил права. Сточка не изменилась. Во всех трех случая одно и тоже что на пикче выше.
Смысл выставлять заново права, когда они у тебя правильные?
Подожди с пару секунд после ребута, обнови страницу и все откроется 🙂
Кстати, а у тебя php-fpm после ребута стартует вообще?
Я так понимаю, ты его просто запускаешь этими командами, думая что проблема в правах. Отсюда, кстати, и 502 ошибка.
«Кстати, а у тебя php-fpm после ребута стартует вообще?» — блин, как обычно на поверхности все. Спасибо.
Заббикс стартует будто без стилей и картинок, куда копать?
как вариант посмотреть владельца. Возможно нет прав их подгрузить.