Zabbix-2.2をインストールする手順（using PostgreSQL/Nginx)


## やること

Zabbix-2.2をインストールします。

サーバは以下の構成です。
OS： CentOS 6.5
DB： PostgreSQL 8.4.20
WebServer： Nginx 1.4.6

[公式マニュアル](https://www.zabbix.com/documentation/2.2)や「Zabbix インストール」でググると、MySQL+Apacheの組み合わせだったので、忘れないようにメモです。

基本的には公式マニュアルの[Installation](https://www.zabbix.com/documentation/2.2/manual/installation)を参考にしました。
あと、packageからインストールしました。
なので[Installation from packages](https://www.zabbix.com/documentation/2.2/manual/installation/install_from_packages)を参照しました。
こちらのブログも参考にしました。
[Zabbix 2.2 を yumでインストール（Linux CentOS6.4）](http://arpanet617.blog.fc2.com/blog-entry-53.html)

## 手順

#### 1. yumリポジトリを登録

```
# rpm -ivh http://repo.zabbix.com/zabbix/2.2/rhel/6/x86_64/zabbix-release-2.2-1.el6.noarch.rpm
```

#### 2. Zabbixパッケージをインストール

```
# yum install zabbix-server-pgsql zabbix-web-pgsql zabbix-web-japanese
# yum install zabbix-agent
# yum install zabbix-get
```

PostgreSQLなので*-pgsqlを
Front Webで日本語を使えるようにするためにzabbix-web-japaneseを
あると何かと便利らしいzabbix-getをインストールしました。

#### 3. データベース初期化

Zabbix用のユーザとDBを作成します。
DBはzabbixユーザをオーナーにしました。
ユーザ作成時に聞かれるロールは全てNoです。

```
# createuser -W zabbix
# createdb -O zabix zabbix
```

テーブルを作成して、初期データを登録します。

```
# cd /usr/share/doc/zabbix-server-pgsql-2.2.3/create
# psql -W -d zabbix -f schema.sql zabbix
# psql -W -d zabbix -f images.sql zabbix
# psql -W -d zabbix -f data.sql zabbix
```

#### 4. Zabbixの設定ファイルを編集

Zabbixの設定ファイルをDBに合わせて編集します。
DBName, DBUserはデフォルトでOKでした。
DBPortはPostgreSQLのポートを指定します。

```
DBName=zabbix
DBUser=zabbix
DBPassword=<password>
DBPort=5432
```

#### 5. PostgreSQLのpg_hba.confを編集

localhostからの接続を許可するようにidentをtrustに変更しました。
127.0.0.1/32 trustだけでいいのかと思いましたがだめだったので、::1/128もtrustにしました。

```
host    all         all         127.0.0.1/32          trust
host    all         all         ::1/128               trust
```

ZabbixからPostgreSQLに接続できない場合、下のようなメッセージがzabbix_server.logに出力されます。

```
 31936:20140415:202234.778 [Z3001] connection to database 'zabbix' failed: [0] FATAL:  Ident authentication failed for user "zabbix"
```

#### 6. Zabbixサーバを起動

`# service zabbix-server start`

#### 7. NginxでPHPを動かせるようにする

[CentOSにてnginxでPHPを動かす](http://qiita.com/utano320/items/36b6eac2bbd5bb5657f6)
こちらを参考に、php-fpm をインストールしてNginxでPHPを動かせるようにしました。
fastcgi-paramは以下のようにしました。
`fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;`

#### 8. /etc/zabbix/webのオーナーを変更する

/etc/zabbix/web のオーナー、グループがapacheになっているのでnginxに変更します。
`# chown nginx:nginx /etc/zabbix/web`

変更しないでアクセスすると下のようなメッセージがNginxのエラーログに出力されました。

```
2014/04/15 22:57:20 [error] 1850#0: *16 FastCGI sent in stderr: "PHP message: PHP Warning:  require_once(/etc/zabbix/web/maintenance.inc.php): failed to open stream: Permission denied in /usr/share/nginx/html/zabbix/include/classes/core/ZBase.php on line 276
PHP message: PHP Fatal error:  require_once(): Failed opening required '/etc/zabbix/web/maintenance.inc.php' 
(以下省略)
```

#### 9. Nginxのdocument_rootにzabbixへのリンクを張る

```
# cd /usr/share/nginx/html
# ln -s /usr/share/zabbix .
```

#### 10. ブラウザでアクセスして初期設定をする

http://hostname/zabbix/index.php

初期設定時にPHPの設定で条件を満たしていないと先に進めません。
/etc/php.ini を編集して、php-fpmを再起動しました。

## おわりに

NginxでのPHP設定がいまいちな感じです。
あと、Zabbix要件を満たすために/etc/php.iniを編集したのですが、他の方法がないか気になります。
ApacheだとDirectoryディレクティブに`php_value memory_limit 128M`のような設定ができるらしいです。
どうしたらよいのだろう？