schedule2021-01-17

Zabbixのインストール時のエラー

サーバの監視を始めるために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.ownerlisten.groupnginxにすればよいらしい。 参考: 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がエラーなしで動くようになりました!