酒と泪とRubyとRailsと

Ruby on Rails と Objective-C は酒の肴です!

Mac LionにHomebrewでPostgreSQLをインストール

Herokuのアプリを構築する過程で、勉強もかねてPostgreSQLをインストールしました。 環境は、Mac Lionでインストールには Homebrew を利用しました。

fpu_tmp_1353848564.7865_496e93

HomeBrewでPosgtgresqlのインストール

コンソール
1
brew install postgresql

データベースの初期化

コンソール
1
initdb /usr/local/var/postgres -E utf8

データベース一覧が確認できる以下のコマンドを実行

コンソール
1
psql -l

データベースの一覧を取得できていればインストールは成功です。

エラーメッセージが出力される場合(エラーが出ない場合は無視)

僕のmacでは次のようなエラーが発生しました。

psql: could not connect to server: Permission denied
    Is the server running locally and accepting
    connections on Unix domain socket "/var/pgsql_socket/.s.PGSQL.5432"?
createuser: could not connect to database postgres: could not connect to server: Permission denied
    Is the server running locally and accepting
    connections on Unix domain socket "/var/pgsql_socket/.s.PGSQL.5432"?

原因

Lionにはposgtresがすでにバンドルインストール済(?)らしく、デフォルトに設定されているそうです。それが悪さをしてるっぽい。

修正用バッチの適用

コンソール
1
curl http://nextmarvel.net/blog/downloads/fixBrewLionPostgres.sh | sh

で再度、”psql -l”を実行したところうまくいきました。同じエラーに苦しんでいる方がいれば試してみてください。

環境変数 PADATAの設定

環境変数 PADATAを設定する。Bashを使っている場合は、~/.bashrcに以下を追加。

~/.bashrc
1
export PGDATA=/usr/local/var/postgres

追加したら

コンソール
1
source ~/.bashrc

で設定が反映されます。

Postgresqlの起動/終了確認

コンソール
1
2
3
4
5
# 起動
pg_ctl -l /usr/local/var/postgres/server.log start

# 終了
pg_ctl -D /usr/local/var/postgres stop -s -m fast

Postgresqlのログイン時の自動起動設定

コンソール
1
2
3
  mkdir -p ~/Library/LaunchAgents
  cp /usr/local/Cellar/postgresql/9.1.4/homebrew.mxcl.postgresql.plist ~/Library/LaunchAgents/
  launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist

Railsアプリ用のDB接続ユーザを作成する

コンソール
1
2
createuser -P app_name
psql -q -c'select * from pg_user' postgres

Postgresqlに接続するRugyGemsのpgをインストール

コンソール
1
env ARCHFLAGS="-arch x86_64" gem install pg

以上です。

Special Thanks

おすすめの書籍