Zabbix 4.4をCentOS 8にインストール(MySQL+nginx編)

Zabbix Advent Calendar 2019の8日目の記事です。

先日の「Zabbix 4.4をCentOS 8にインストール(MySQL編)」では、Webサーバーとしてhttpdを使用しましたが、nginxを使用する場合をご紹介します。

# システム構成

今回の構成は、以下のような構成になるようにします。

- Zabbix : Zabbix 4.4.3
- OS : CentOS 8 (バージョン 8.0.1905)
- Webサーバー : nginx 1.14.1 (CentOS 8標準)
- PHP : PHP 7.2.11 (CentOS 8標準)
- DBMS : MySQL 8.0.13 (CentOS 8標準)

# インストール手順の異なる点

httpdを使用する場合、以下のコマンドラインでZabbixのWebインターフェースをインストールする際に、以下のコマンドラインでインストールしていたかと思います。

```shell-session
# dnf install zabbix-web-mysql zabbix-apache-conf zabbix-web-japanese
```

nginxを使用する場合は、「zabbix-apache-conf」の代わりに「zabbix-nginx-conf」をインストールします。

```shell-session
# dnf install zabbix-web-mysql zabbix-nginx-conf zabbix-web-japanese
```

# 追加の設定作業

PHPのtimezoneの設定に関しては、httpdを使用する場合と同様です。
/etc/php-fpm.d/zabbix.conf内の「php_value[date.timezone]」の値を「Asia/Tokyo」にします。

あと、現時点(2019/12/05)のパッケージでは、nginxの設定として、Zabbixのコンテンツへのアクセスが、サブディレクトリを指定しないような設定になっているようです。
この場合、デフォルトで用意されているserverの設定とぶつかってしまいますので、/etc/nginx/nginx.conf内のserverの設定をコメントアウトしておきます。

```shell-session
# vi /etc/nginx/nginx.conf
```

コメントアウトした箇所は以下の通りです。

```diff
--- nginx.conf.bak      2019-10-08 06:17:41.000000000 +0900
+++ nginx.conf  2019-12-05 16:39:38.611000000 +0900
@@ -35,26 +35,26 @@
     # for more information.
     include /etc/nginx/conf.d/*.conf;

-    server {
-        listen       80 default_server;
-        listen       [::]:80 default_server;
-        server_name  _;
-        root         /usr/share/nginx/html;
-
-        # Load configuration files for the default server block.
-        include /etc/nginx/default.d/*.conf;
-
-        location / {
-        }
-
-        error_page 404 /404.html;
-            location = /40x.html {
-        }
-
-        error_page 500 502 503 504 /50x.html;
-            location = /50x.html {
-        }
-    }
+#    server {
+#        listen       80 default_server;
+#        listen       [::]:80 default_server;
+#        server_name  _;
+#        root         /usr/share/nginx/html;
+#
+#        # Load configuration files for the default server block.
+#        include /etc/nginx/default.d/*.conf;
+#
+#        location / {
+#        }
+#
+#        error_page 404 /404.html;
+#            location = /40x.html {
+#        }
+#
+#        error_page 500 502 503 504 /50x.html;
+#            location = /50x.html {
+#        }
+#    }

 # Settings for a TLS enabled server.
 #
```

/etc/nginx/conf.d/zabbix.conf内の「listen」や「server_name」は必要に応じて設定してください。

# Zabbix用の各サービスの起動

サービスの起動時には、httpdではなくnginxを使用するので、起動や自動起動設定は以下のように実行します。

```shell-session
# systemctl start zabbix-agent zabbix-server php-fpm nginx
# systemctl enable zabbix-agent zabbix-server php-fpm nginx
```


# Webインターフェースへのアクセス

ブラウザを利用して、
http://ZabbixサーバーのIPアドレス/
にアクセスします。httpdの使用時につけていた後ろの「/zabbix/」が不要となるような設定になっています。「/zabbix/」をつけるのであれば、/etc/nginx/conf.d/zabbix.conf内の「location」の設定を変更する必要があります。

最初のアクセス時は、Zabbix設定のウィザードが実行されるので、DBへのアクセス情報などを入力して次へ次へと進めてください。
「Configure DB connection」では、データベース作成時に指定したUserとPasswordを必ず入力してください。

設定が終わるとログイン画面になります。アカウント「Admin」、パスワード「zabbix」でログインしてください。

ログイン後、まずは日本語画面に切り替えます。
右上の人型のアイコンをクリックしてUser Profileを開き、LanguageとしてJapaneseを選択してSaveボタンを押してください。


# 最後に

これまでのバージョンでは、Webインターフェースで使用するWebサーバーとしてhttpdに限定するようなパッケージの依存関係が指定されていました。そのため、これまでも、nginxを使用して環境構築はできたのですが、パッケージの依存関係を生かしてZabbixのWebインターフェースをインストールすると、httpdが必ずインストールされてしまっていました。
RHEL 8(CentOS 8)からは、nginxも標準のパッケージとして用意されたので、httpd用とnginx用とを明確に切り分けてインストールできるようなパッケージの構成と依存関係の設定になっています。

つまり、Zabbix 4.4とRHEL 8(CentOS 8)の組み合わせでは、「zabbix-web-mysql」というパッケージと一緒に、httpdを使用するときは「zabbix-apache-conf」というパッケージ、nginxを使用するときは「zabbix-nginx-conf」というパッケージを一緒にインストールすることで、それぞれのWebサーバーに合わせた環境構築ができるようになりました。


明日は、誰でしょう？
どなたかよろしくお願いします。