RhodeCodeをPostgreSQLで使う

PostgreSQLをちょっとばかり理解したとおもうので、RhodeCodeをSQLiteでなくPostgreSQLで使えるようにしてみました。
一応、最初インストールするところから。
環境:Debian wheezy 64bit on VirtualBox

いろいろインストール

$ su -
# apt-get install python-dev python-virtualenv git libreadline6-dev libpq-dev vim

とりあえずいろいろインストールします。

pgvmのインストールとPostgreSQLのセットアップ

普通にPostgreSQLをインストールすれば良いのですが、pgvmで使ってみたかったのでpgvmをインストールします。

$ wget -qO - https://raw.github.com/guedes/pgvm/master/bin/pgvm-self-install | bash
$ source ~/.bashrc


PostgreSQLをインストールします。

$ pgvm install 9
$ pgvm use 9.2.4
$ pgvm cluster create rhodecode
$ pgvm cluster start rhodecode


PostgreSQLにロールとデータベースを作成します。

$ pgvm console rhodecode
postgres=# CREATE ROLE rhodecode LOGIN;
postgres=# CREATE DATABASE rhodecode OWNER rhodecode;
postgres=# \q


libqpにパスを通す必要があるようなので、ld.so.conf.dにpostgresql.confを作成します。

$ su -
# echo "/home/sasaplus1/.pgvm/environments/9.2.4/lib" > /etc/ld.so.conf.d/postgresql.conf
# ldconfig

こんな方法があるなんて知らなかった……

virtualenv環境にRhodeCodeをインストール

virtualenv環境にRhodeCodeをインストールします。RhodeCodeでPostgreSQLを扱う際に、psycopg2というモジュールも必要なようなので一緒にインストールします。

$ virtualenv rhodecode
$ cd rhodecode
$ source bin/activate
(rhodecode)$ easy_install rhodecode
(rhodecode)$ easy_install psycopg2
(rhodecode)$ paster make-config RhodeCode production.ini


production.iniを編集します。

host = 0.0.0.0
lang = ja
# sqlalchemy.db1.url = sqlite:///%(here)s/rhodecode.db
# sqlalchemy.db1.url = postgresql://user:pass@localhost/rhodecode
sqlalchemy.db1.url = postgresql://rhodecode@localhost:5433/rhodecode

host, lang, sqlalchemyの辺りを書き換えれば大体良い気がします。
PostgreSQLはpgvmでインストールした場合、ポートが5432でなく5433からなのでその辺も忘れずに。

(rhodecode)$ mkdir repos
(rhodecode)$ paster setup-rhodecode production.ini

これで設定時にいろいろ答えれば正常にセットアップは終了するかと。

起動する

(rhodecode)$ paster serve production.ini --daemon

これで起動します。
停止するときは

$ paster serve production.ini stop

で。
でもまあ、本格的にするならちゃんとrhodecode用のユーザを作った方が良いと思いますが。


あとついでにgunicornでも動作させられるようなので、それも入れたかったかなーと。
でもそれは今度にしようかと。とりあえず今回はここまで。


参考:
http://d.hatena.ne.jp/dai_yamashita/20121011/1349926223
cannot open shared object fileの対処 - ksauzz weblog