※先日利用していたSRPMに問題があることを確認しました。
※修正したSRPMを改めて公開しなおしましたので、記述もそれに合わせて修正しました。
はじめに
Zabbix 3.0がリリースされ、RHEL/CentOS 6用のパッケージも公開されましたが、Zabbixサーバーのモジュールは公開されていません。
先日のOSCでもお話しした通り、Zabbix 3.0の機能を利用するためには、RHEL/CentOS 6の標準のパッケージ構成では対応できないからのようです。
ご参考:
インストールする際の方針
とはいえ、まだRHEL/CentOS 6を利用されている方も多いと思われるので、RHEL/CentOS 6対応を検討してみました。
Zabbix 3.0をCentOS 6上で動かす方法として、epelやremiを利用する方法が散見されますが、本番環境でRHEL 6を使用している場合、標準外のリポジトリやパッケージを利用してしまうと、それらのソフトウェアのサポートが受けられなくなってしまう可能性があります。
ですので、極力OS標準のパッケージを利用する手順として整理します。
方針:
- libcurlは、標準のパッケージだとバージョンが古いので、SMTP認証はなし
- PHPは、SCLを利用してPHP 5.4にして対応する。
SCLというのは、Software Collectionsと呼ばれるパッケージ群で、RHELやCentOS標準の拡張パッケージ群として提供されています。
ただし、CentOSで利用できるのは、RHEL用で利用できるもののうちのごく一部です。
CentOSでも利用できるバージョンということで、今回は、PHP 5.4(php54)を利用します。
独自パッケージのご紹介
そこで、機能的な制限はあるものの、極力標準のパッケージを利用してCentOS 6上でZabbix 3.0.1のZabbixサーバーのパッケージをビルドするためのSRPMを作成してみました。
SRPMは、Amazon Linuxでもビルドできるようにしてありますので、以前の私のAmazon Linux用のパッケージのビルドの記事を参考にすればAmazon Linuxでも使えます。
ご参考:
制限事項
先ほども書かせて頂きましたが、RHEL/CentOS 6標準のlibcurlのバージョンが古いのでSMTP認証は利用不可です。
PHPは、SCLのphp54を利用します。
標準のphpパッケージとの共存は難しいので、phpを利用している他のアプリケーションと同じサーバにインストールしない方が良いと思います。
また、RHELのSCLならより新しいPHPのバージョンが利用できるかもしれません。
その場合は、zabbix.spec内のパッケージの依存関係をより新しいバージョン用に変更してからビルドしてください。
CentOS 6用パッケージのビルド
ビルド環境用OSのインストール
インストール予定のアーキテクチャ(i586 or x86_64)と同じCentOS 6の環境を用意します。
OSをインストールしたら、yum updateなどを利用して、OSを最新の状態に更新しておきます。
OSの準備ができたら、開発ツールをインストールしておきます。
# yum groupinstall 'Development tools'
ビルド環境の準備
ビルド用のアカウントを作成します。
今回は、builduserという名前のアカウントを作成して、パスワードも設定しておきます。
# useradd builduser
# passwd builduser
作成したアカウントでログインし、ビルド用のディレクトリ作成と環境設定を行います。
$ mkdir -p ~/rpmbuild/{BUILD,RPMS,SOURCES,SPECS,SRPMS}
$ vi ~/.rpmmacros
.rpmmacrosファイルに記述する内容は以下のような内容です。
%_topdir /home/builduser/rpmbuild
異なるアカウント名を利用される場合は、そのアカウント名のディレクトリにパスを変更してください。
次に私がカスタマイズしたZabbix 3.0.1のパッケージを取得します。
$ wget https://github.com/atanaka7/zabbix-jp-amzn1/raw/master/zabbix-3.0.1-3.amzn1.src.rpm
新しいバージョンが出たら更新するかもしれないのでご注意ください。
このパッケージは、RHEL 7用の3.0.1用のパッケージをベースに、
RHEL 6(CentOS 6)とAmazon Linux用のサーバも含めたパッケージを
構築するできるようにカスタマイズしてあります。
内容を確認して頂くためにも、ビルド用アカウントのビルド用ディレクトリに、このSRPMを展開します。
$ rpm -ivh zabbix-3.0.1-3.amzn1.src.rpm
別途、RHEL 7用の内容、特にzabbix.specの内容と比較してみて頂きたいのですが、CentOS 6用とAmazon Linux用の処理分岐を変更・追記してあります。
特に、phpの依存関係の部分ですが、RHEL 7以上やAmazon Linuxなら、パッケージphpのバージョン5.4以上で、それ以外は、php54-phpのバージョン5.4以上としてあります。
php54としてあるのは、CentOS 6用のSCLでは、php54というPHP 5.4のパッケージまでしか公開されていないからです。
RHELを使用されているのであれば、SCLにPHP 5.5やPHP 5.6など、もっと新しいバージョンのパッケージがあるようですので、より新しいPHPを利用されるのであれば、そのパッケージ名称に合わせてzabbix.spec内の依存関係の部分を変更してください。
ご参考:
- 4.7. Software Collections および scl-utils
- Red Hat Software Collections 2.0 とは
- Red Hat Software Collections Product Life Cycle
必要パッケージの事前インストール
iksemelとか必要になるので、RHEL 6の3.0用リポジトリを登録しておきます。
# yum install http://repo.zabbix.com/zabbix/3.0/rhel/6/x86_64/zabbix-release-3.0-1.el6.noarch.rpm
それ以外のビルドに必要な各種パッケージもインストールしておきます。
# yum install mysql-devel postgresql-devel net-snmp-devel openldap-devel gnutls-devel iksemel-devel sqlite-devel unixODBC-devel curl-devel OpenIPMI-devel libssh2-devel java-devel libxml2-devel
ビルド実行。
ビルドする環境の準備が終了したら、パッケージをビルドします。
srpmに変更を行わないなら、ソースをインストールしないで以下のように実行するだけで直接パッケージをビルドすることができます。
$ rpmbuild --rebuild zabbix-3.0.1-3.amzn1.src.rpm
zabbix.specファイルなどを変更したのであれば、その変更したファイルを引数に指定して以下のように実行します。
$ cd ~/rpmbuild/SPEC/
$ rpmbuild -ba zabbix.spec
正常にビルドが終了したら、以下のようなパッケージがビルドできているはずです。
~/rpmbuild/RPMS/x86_64/
zabbix-agent-3.0.1-3.el6.x86_64.rpm
zabbix-debuginfo-3.0.1-3.el6.x86_64.rpm
zabbix-get-3.0.1-3.el6.x86_64.rpm
zabbix-java-gateway-3.0.1-3.el6.x86_64.rpm
zabbix-proxy-mysql-3.0.1-3.el6.x86_64.rpm
zabbix-proxy-pgsql-3.0.1-3.el6.x86_64.rpm
zabbix-proxy-sqlite3-3.0.1-3.el6.x86_64.rpm
zabbix-sender-3.0.1-3.el6.x86_64.rpm
zabbix-server-mysql-3.0.1-3.el6.x86_64.rpm
zabbix-server-pgsql-3.0.1-3.el6.x86_64.rpm
~/rpmbuild/RPMS/noarch/
zabbix-web-3.0.1-3.el6.noarch.rpm
zabbix-web-japanese-3.0.1-3.el6.noarch.rpm
zabbix-web-mysql-3.0.1-3.el6.noarch.rpm
zabbix-web-pgsql-3.0.1-3.el6.noarch.rpm
次回予告
次回はビルドしたパッケージをインストールするインストール編を公開しようと思います。