CentOS6 で Zabbix 3.0 を動かす (PatchELF編)

オフィシャルな RHEL6/CentOS6  用の Zabbix Server パッケージは提供されていません。
サポート外となっていることにはいくつか理由があるようですが、RHEL6/CentOS6上で Zabbix Server を動かしたいという需要はまだあるでしょう。

もっとも良い方法としては、ソースからビルドする方法です。
[CentOS6 で Zabbix 3.0 を動かす (自力ビルド編)](http://qiita.com/komeda-shinji/items/b6b7adc914a3ca8ad0cb)
ビルドの手間はかかりますが、パッケージとして導入するため。管理しやすいでしょう。
また、curl を更新して /usr/local に配置するなど、互換性に考慮した配置が取れます。

以前、ビルドせずに、手軽に動作を確認したいという向きに [CentOS6 で Zabbix 3.0 を動かす (力業編)](http://qiita.com/komeda-shinji/items/93880150f85738432a59)で、rpm パッケージと、対応する glibc や libmysqlclient、libcurl をほどいて配置して動かす方法を書きました。

yum および rpm コマンドは代替パスを指定してパッケージをインストールできるので、PatchELF と組み合わせるとパッケージ管理ができるようになります。そこで力業編をすこし手直しして、比較的管理しやすくしたものをご紹介します。

EPEL、 Remi パッケージのリポジトリを追加します。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# yum install epel-release
# yum install http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
# yum update
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

MySQLのパッケージを導入します。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# yum install --enablerepo remi mysql-libs compat-mysql51 mysql perl-DBD-MySQL mysql-server
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

いくつか CentOS 7 のパッケージが必要なので、yum で取得できるようにします。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# sed 's/CentOS-6/CentOS-7/; s/\]$/7]/
/\[base/,/^$/{
  /^$/ienabled=0
}
/\[updates/,/^$/{
  /^$/ienabled=0
}
/\[extras/,/^$/{
  /^$/ienabled=0
}' /etc/yum.repos.d/CentOS-Base.repo >/etc/yum.repos.d/CentOS7-Base.repo
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

downloadonly プラグインを入れて、パッケージのダウンロードだけできるようにします。

註) yum-3.2.29-69.el6.centos.noarch が入っていると不要なようです。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# yum install yum-plugin-downloadonly
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

依存する CentOS7 のパッケージを代替パスにインストールします。

註) パッケージのバージョンが新しくなっているかもしれません。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# mkdir download
# cd download
# mkdir /opt/centos7
# yum --installroot=/opt/centos7 --releasever=7 --disablerepo base,updates --enablerepo base7,updates7 --downloadonly --downloaddir=`pwd` install glibc net-snmp-libs libcurl mariadb-libs
# rpm -r /opt/centos7/ --nodeps -ivh glibc-2.17-106.el7_2.4.x86_64.rpm net-snmp-libs-5.7.2-24.el7.x86_64.rpm libcurl-7.29.0-25.el7.centos.x86_64.rpm mariadb-libs-5.5.47-1.el7_2.x86_64.rpm
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

RemiリポジトリからPHPを導入します。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# yum --enablerepo remi install php-common php php-mysql php-bcmath php-xml httpd-tools httpd php-cli php-pdo php-mbstring php-gd php-ldap
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Zabbix を導入します。EL6のリポジトリを追加します。

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

EL7のリポジトリのパッケージを流用できるようにします。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# rpm -r /opt/centos7 -ivh http://repo.zabbix.com/zabbix/3.0/rhel/7/x86_64/zabbix-release-3.0-1.el7.noarch.rpm
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# sed 's/\]/7]/; s/enabled=1/enabled=0/' /opt/centos7/etc/yum.repos.d/zabbix.repo >/etc/yum.repos.d/zabbix7.repo
# yum clean all
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# yum install zabbix-agent zabbix-get zabbix-sender zabbix-java-gateway zabbix-proxy-mysql zabbix-sender
# yum install --enablerepo zabbix7 zabbix-web zabbix-web-japanese zabbix-web-mysql
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

iksemel だけ特別扱いする必要がありました。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# yum --downloadonly --downloaddir=`pwd` install iksemel
# yum install iksemel
# rpm -r /opt/centos7 --nodeps -ivh iksemel-1.4-2.el6.x86_64.rpm
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

CentOS 7 用のパッケージを通常のパスにインストールします。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# rpm --nodeps -ivh http://repo.zabbix.com/zabbix/3.0/rhel/7/x86_64/zabbix-server-mysql-3.0.1-1.el7.x86_64.rpm
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

PatchELF でインタプリタとrpathを置き換えます。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# /usr/local/bin/patchelf --set-interpreter /opt/zabbix/lib64/ld-linux-x86-64.so.2 --set-rpath /opt/zabbix/lib64:/opt/zabbix/usr/lib64:/opt/zabbix/usr/lib64/mysql /usr/sbin/zabbix_server_mysql
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

確認します。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ldd /usr/sbin/zabbix_server
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

お掃除。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
yum clean all
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

スタートアップスクリプト

CentOS7 では systemd を使用する形になっているため、旧来のスタートアップスクリプトはパッケージに含まれていません。

そこで Zabbix 2.4 のパッケージに含まれるものを使用します。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
$ curl http://repo.zabbix.com/zabbix/2.4/rhel/6/x86_64/zabbix-server-2.4.7-1.el6.x86_64.rpm >zabbix-server-2.4.7-1.el6.x86_64.rpm
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# rpm2cpio zabbix-server-2.4.7-1.el6.x86_64.rpm | (cd / && cpio -idmvu ./etc/init.d/zabbix-server)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

以上です。