隔週連載groonga

第8回 CentOS6でのRPMパッケージを用いた MySQL 5.6 & mroonga & PHP 5.4 環境の作り方

この記事を読むのに必要な時間:およそ 10 分

こんにちは,株式会社リブセンスの吉田健太郎です。MySQLで本格的な日本語全文検索を行うには,MySQL 5.0ならTritonn,5.1以降ではmroongaがあります。mroongaとはTritonnの後継プロダクトで,2010年より開発が始まりました。このプロダクトの強みとしては,MySQLプラグインとしてシンプルに使えることと,リレーショナルな日本語対応の全文検索機能ができることです。mroongaはTritonnから進化を遂げており,更新・参照速度のさらなる向上や,unigramなどのトークナイズ方式の拡充などが行われました。

しかしmroongaはビルドする際のMySQLバージョンに依存するため,公式に配布されている組み合わせには限りがあります。そのため,導入の障壁になるケースがあります。手っ取り早くソースをコンパイルしてインストールすればどんな組み合わせもできますが,サーバが増えれば増えるほど手間が増えます。

そこで今回は,RPMパッケージを作る方法を以下のテーマで解説します。RPMパッケージがあれば,手間を掛けずに同じ構成のサーバを量産できます。

  1. CentOS6.4環境で選べるMySQLとPHPの組み合わせ方法
  2. RPMパッケージを使ってMySQL 5.6.12,mroonga,PHP 5.4の環境を作る方法
  3. mroongaのnightly版を使う方法

CentOS6.4環境で選べるMySQLとPHPの組み合わせ方法

CentOS 6向けのmroongaは,ディストリビューション付属のMySQL 5.1系とセットで利用することを前提にビルドされています。そのため,CentOS 6.x + MySQL 5.1.x (updatesリポジトリ) という組み合わせが,公式に配布しているmroongaの推奨環境です。この環境に,groongaリポジトリにあるmysql-mroongaをインストールすることで,難なくmroongaを導入できます。

もし特定のバージョンのPHPとMySQLを組み合わせる場合には,次の2点において注意が必要です。ただし,PHPに関してはPHP 5.4からデフォルトとなったmysqlndというMySQLのクライアントライブラリを使えば,MySQLをインストールせずに使えるドライバですので,MySQLのバージョン依存を解消できます。

  • 利用するMySQLのバージョン(5.1/5.5/5.6)に対応した,mroongaをビルドする必要がある
  • 利用するMySQLのバージョン(5.1/5.5/5.6)に対応した,PHPのMySQLクライアントライブラリを使う必要がある(mysqlndを使わない場合)

各リポジトリが提供するPHP, MySQLのバージョンは次の通りです。

リポジトリ名\配布バージョン PHP 5.3.x PHP 5.4.x PHP 5.5.x MySQL 5.1.x MySQL 5.5.x MySQL 5.6.x
base, updates × × × ×
remi × × × ×
remi-php55 × × × × ×
ius × × ×
ius-dev × × × × ×

例えばPHP 5.4.xとMySQL 5.6.x環境を用意する際,mysqlndが採用できれば後述の手順において,PHPのRPMパッケージ作成は省略可能です。つまり,mroongaのRPMパッケージ作成のみで導入できます。しかし事情により,mysqlndが使えず従来のlibmysqlclientが必要な環境の場合には,PHP・mroongaそれぞれのRPMパッケージを後述する手順で作成します。なお,iusの提供するmysql56u-develパッケージにはmroongaのビルドに必要なlibmysqlservices.aが不足しているため,オラクル公式のRPMパッケージを利用して紹介します。

Remiリポジトリ・IUSリポジトリのインストールについては,公式サイトが参考になります。

RPMパッケージを使ってMySQL 5.6.12,mroonga,PHP 5.4の環境を作る方法

mroongaはビルドしたときのMySQLバージョンに依存するため,MySQL 5.5や5.6の環境でビルドすれば,問題なく動きます。組み合わせが多いため公式でのRPMパッケージの配布は一部に限定されているのが現状です。

新機能や性能向上が多く施されたMySQL 5.5や5.6と一緒に,mroongaやPHPを利用したいというケースもあるでしょう。この場合はソースをコンパイルしてインストールする方法もありますが,RPMパッケージの使い勝手の良さには及びません。とても手軽にRPMパッケージを作ることができるため,その作成・インストール手順を紹介します。

  1. RPMパッケージのビルド環境を作る
  2. オラクル公式MySQLをインストールする
  3. rpmbuildコマンドで,mysql-mroongaのRPMパッケージを作る
  4. rpmbuildコマンドで,PHP 5.4のRPMパッケージを作る

なお,CentOS 5用のmroongaは,MySQL 5.6の本体と共にrpmパッケージが提供されています。そして,debian系のsqueezeやlucidではMySQL 5.1向けパッケージが,その他debian系に関してはMySQL 5.5向けのパッケージが提供されています。

RPMパッケージのビルド環境を作る

まず,RPMパッケージビルド専用の仮想マシンをVirtualBox等で作ります。もちろん既にあるCentOS環境でも構いません。

新規に作る場合は,理研等のミラーサイトよりCentOSの最小構成版のisoイメージCentOS-6.4-x86_64-minimal.isoをダウンロードし,OSのインストールを行います。

マシンへのログインができたら,まずコンパイルを行うためのパッケージ群をインストールします。

# コンパイルを行うための開発環境一式をインストール
$ sudo yum groupinstall 'Development Tools'

# RPMビルドの依存ライブラリの一部にて利用するため,EPELリポジトリをインストール
$ sudo yum install http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm

# ファイルのダウンロードに便利なwgetはmroongaのビルド時にも使うのでインストール
$ sudo yum install wget

次に,ビルド専用の一般ユーザbuildを作ります。

$ sudo /usr/sbin/useradd build

ビルド専用ユーザのパスワードを設定します。

$ sudo passwd build

buildユーザでもsudoコマンドが使えるよう,visudoコマンドで次のように設定を変更します。

# /etc/sudoersファイルを安全に編集するvisudoコマンドを使用
$ sudo visudo

# 以下のdiffのように,root ALL=(ALL) ALLの下にbuild ALL=(ALL) ALLを追記
 ## Allow root to run any commands anywhere
 root   ALL=(ALL)       ALL
+build ALL=(ALL) ALL

RPMパッケージをビルドするためのフォルダやドットファイルを作ります。

# buildユーザへ変更
$ sudo su build

# 必要ディレクトリやドットファイルを作成
$ mkdir -p ~/rpmbuild/{BUILD,RPMS,SOURCES,SPECS,SRPMS}
$ echo '%_topdir %(echo $HOME)/rpmbuild' > ~/.rpmmacros

# 元のユーザに戻る
$ exit

以上でRPMパッケージをビルドする下準備ができました。

著者プロフィール

吉田健太郎(Kentaro Yoshida)

株式会社リブセンス,Web系インフラの研究開発エンジニア。

ITベンチャー立ち上げに参画し,幅広い領域での経験を積むこと8年目。フルスタックエンジニアを目指して,湧き出るアイディアを形にする日々を過ごしている。

GitHub:https://github.com/y-ken/
ブログ:http://y-ken.hatenablog.com/

コメント

コメントの記入