前回のメモでは、MogileFS の標準と考えられる MySQL を使ってシステムを構築したけれど、PostgreSQL も可能なようなのでそれを試してみた。
システム構成は前回と同じ。
PostgreSQL の設定
まず、一度やってみてわかったのが CentOS5.2 標準の PostgreSQL 8.1 系は MogileFS では対応していないということ。8.2 以降を利用する必要があった。
そのため、試験管のなかのコード :: CentOS 5 に PostgreSQL をインストールを参考にして、8.2 系をインストールした。別に 8.3 系でもよかったけれどなんとなくで。
PostgreSQL がインストールできれば、以下のようなコマンドを実行してユーザとデータベースを作成した。
$ createuser -P mogile Enter password for new role: Enter it again: Shall the new role be a superuser? (y/n) y CREATE ROLE $ createdb mogilefs -O mogile CREATE DATABASE
tracker
モジュールのインストールはMySQLの場合と同じで、
# rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-3.noarch.rpm # yum -y install mogilefsd perl-MogileFS-Client perl-MogileFS-Utils
とした。
つづいてMySQLのときと同様な感じで PostgreSQL を利用するように mogdbsetup を実行するも
# mogdbsetup --dbname=mogilefs --dbuser=mogile --dbpassword=mogile --type=Postgres Failed to load MogileFS::Store::Postgres: Can't locate MogileFS/Store/Postgres.pm 以降省略
となる。確かに、/usr/lib/perl5/vendor_perl/5.8.8/MogileFS/Store には MySQL.pm しかない。(どおりで、yum でインストールするときに mysql がインストールされるわけだ)
仕方ないので、ソースレポジトリから直接 Postgres.pm を取得した。以下のような感じ。
# cd /usr/lib/perl5/vendor_perl/5.8.8/MogileFS/Store # wget http://code.sixapart.com/svn/mogilefs/trunk/server/lib/MogileFS/Store/Postgres.pm
これで、再度 mogdbsetup を実行するが今度は
# mogdbsetup --dbname=mogilefs --dbuser=mogile --dbpassword=mogile --type=Postgres Failed to load MogileFS::Store::Postgres: Can't locate DBD/Pg.pm 以降省略
と怒られた。まぁ、確かに MySQL 前提で rpm は作られているようなので、依存関係に入っていないの当然か。
ということで
# yum -y install perl-DBD-Pg
としてインストール。
これで mogdbsetup をすれば無事成功。ちなみに、PostgreSQL 8.1 系だとここで
Postgres is too old! Must use >=postgresql-8.2! at /usr/lib/perl5/vendor_perl/ 5.8.8/MogileFS/Store/Postgres.pm line 65, <STDIN> line 1.
のように怒られる。
最後に /etc/mogilefs/mogilefsd も Postgres 用に最初の行を
db_dsn DBI:Pg:dbname=mogilefs;host=localhost
と修正した。
以上で、
/etc/init.d/mogilefs start
として起動できた。