サーバの監視を始めるためにZabbixを導入しました。 Zabbix + CentOS7 + Nginx + MySQLの構成です。
Zabbix Frontendのパーミッションでエラーの内容と解決方法を残します。 無理やりなところもあるため参考程度に見てください。
類似のエラーを検索して来られた方は、Permissionの確認をされると解決するかもしれません。
502 Bad Gateway
諸々インストールしてZabbixの管理画面を表示したときのエラー
$ tail /var/log/nginx/error.log | grep zabbix
2021/01/16 20:44:30 [crit] 21109#21109: *11 connect() to unix:/var/opt/rh/rh-php72/run/php-fpm/zabbix.sock
failed (13: Permission denied) while connecting to upstream, client: 220.213.202.52, server: zabbix.suzu6.net, request: "GET / HTTP/1.1", upstream: "fastcgi://unix:/var/opt/rh/rh-php72/run/php-fpm/zabbix.sock:", host: "zabbix.suzu6.net"
これはNginxがphp-fpmを動かそうとしたけど権限がないって感じのエラーです。
php-fpmのPermissionをどうにかする必要があるけど、どうするのかわからなかったので調べた。
php-fpmの設定でlisten.owner
とlisten.group
をnginx
にすればよいらしい。
参考: Nginx で「502 Bad Gateway」とか、なんだかエラーログがでるよって時
ということでphp-fpmのユーザの設定を書き換える。
php-fpm.conf
のパスはstatusを確認するとわかる。
# systemctl status rh-php72-php-fpm
* rh-php72-php-fpm.service - The PHP FastCGI Process Manager
Loaded: loaded (/usr/lib/systemd/system/rh-php72-php-fpm.service; enabled; vendor preset: disabled)
Active: active (running) since Sat 2021-01-16 20:41:35 JST; 37min ago
Main PID: 21104 (php-fpm)
Status: "Processes active: 0, idle: 10, Requests: 0, slow: 0, Traffic: 0req/sec"
CGroup: /system.slice/rh-php72-php-fpm.service
|-21104 php-fpm: master process (/etc/opt/rh/rh-php72/php-fpm.conf)
|-21110 php-fpm: pool www
/etc/opt/rh/rh-php72/php-fpm.conf
だとわかりました。
ただし、ユーザの設定は/etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf
のファイルで設定します。
一応、Nginxのユーザ名を確認しておく。
/etc/nginx/nginx.conf
の最初の行にuser nginx;
とあるのでユーザ名がnginx
であるとわかりました。
▼zabbix.conf
のユーザを変更します。
$ sudo vi /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf
[zabbix]
# user = apache
# group = apache
user = nginx
group = nginx
listen = /var/opt/rh/rh-php72/run/php-fpm/zabbix.sock
# listen.acl_users = apache
listen.acl_users = nginx
listen.allowed_clients = 127.0.0.1
どうやら初期設定がApache用になっていたようです。 これでこのエラーは解決出来ましたが、他にもApacheユーザになっていそうです。
HTTP ERROR 500
# tail /var/log/nginx/error.log | grep zabbix
2021/01/16 22:45:03 [error] 21109#21109: *865 FastCGI sent in stderr: "PHP message: PHP Warning: session_start(): open(/var/opt/rh/rh-php72/lib/php/session//sess_qa6cgi9qqr3al256qeslgjef4s, O_RDWR) failed: Permission denied (13) in /usr/share/zabbix/include/classes/core/CSession.php on line 45
PHP message: PHP Warning: session_start(): Failed to read session data: files (path: /var/opt/rh/rh-php72/lib/php/session/) in /usr/share/zabbix/include/classes/core/CSession.php on line 45
PHP message: PHP Fatal error: Uncaught Exception: Cannot start session. in /usr/share/zabbix/include/classes/core/CSession.php:46
#0 /usr/share/zabbix/setup.php(67): CSession::start()
thrown in /usr/share/zabbix/include/classes/core/CSession.php on line 46" while reading response header from upstream, client: 220.213.202.52, server: zabbix.suzu6.net, request: "GET /setup.php HTTP/1.1", upstream: "fastcgi://unix:/var/opt/rh/rh-php72/run/php-fpm/zabbix.sock:", host: "zabbix.suzu6.net"
PHPのクラスでエラーが起きているようです。
▼権限を確認します。
# ll /usr/share/zabbix/include/classes/core/CSession.php
-rw-r--r-- 1 root root 3212 Dec 21 18:38 /usr/share/zabbix/include/classes/core/CSession.php
/usr/share/zabbix
以下が644になっているので実行権限を与えて755にする。
# 実行権限を与える
$ sudo chmod 755 -R /usr/share/zabbix
# Nginxユーザを設定
$ sudo chown -R root:nginx /usr/share/zabbix
また確認すると、# ll -al /var/opt/rh/rh-php72/lib/php/
もdrwxrwx--- 2 root apache
となっていました。こちらもユーザを変更します。
$ sudo chown -R root:nginx /var/opt/rh/rh-php72/lib/php/*
以上でZabbixがエラーなしで動くようになりました!