Install PostgreSQL

開発環境で使っている DB を SQLite から PostgreSQL に変えることにした。
理由は、SQLite だと実行できる SQL でも、PostgreSQL だとエラーになることがある。Heroku は PostgreSQL なので、開発環境で問題なく動いていても、Heroku にデプロイしたとたんに動かなくなるということが結構あるので。
まぁ、自分の SQL の組み立て方が悪いだけなんだけど。

環境

手順 (サーバ側)

PostgreSQLのインストール
sudo apt-get install postgresql
データベースの作成

インストール時に postgres というユーザーが(Ubuntuと, PostgreSQL 両方に)作成される。このユーザが MySQL でいうところの root にあたるので、そのユーザで DB を作成。

% sudo -u postgres createdb mydb
ロールの作成
% sudo -u  postgres psql mydb
mydb=# create role username with login;
mydb=# ALTER USER username PASSWORD 'password';
設定ファイルの編集

別のホストから PostgreSQL にログインする場合にのみ必要。
/etc/postgresql/8.4/main/pg_hba.conf に以下の行を追加。

# TYPE  DATABASE    USER        CIDR-ADDRESS          METHOD
host    all         all         192.168.0.0/24        password

/etc/postgresql/8.4/main/postgresql.conf の listen_addresses という値を * に変更。

listen_addresses = '*'    # what IP address(es) to listen on;
サーバ再起動
% sudo service postgresql restart

手順 (クライアント側)

ライブラリのインストール

入れないと gem pg のインストールが失敗する。

% sudo apt-get install libpq-dev
gem pg のインストール

bundler を使っているので、Gemfile に次の行を追加。

gem 'pg'

続けてインストール。

% bundle install
プログラム中のDBへの接続箇所を修正
Sequel.connect("postgres://username:password@192.168.0.100/mydb")

Heroku で使うことが前提なら以下のようにした方が楽。

Sequel.connect(ENV['DATABASE_URL'] || "開発環境での接続設定")

以上。