CentOS
PostgreSQL
vagrant
Rails4

VagrantのCentOSでPostgreSQLをRailsで使えるようにする

More than 3 years have passed since last update.

Ruby on Railsで開発したアプリをHerokuに乗せることを想定して,あらかじめPostgreSQLで開発するよう色々設定した話.

前提として,Vagrant上のCentOSには,既にRailsの環境が構築できているものとする.

app
version

CentOS
6.4

Rails
4.2.4

PostgreSQL
9.3.1

ひとまず動くようにしたかったので,参考にしたサイトに合わせたバーションを使用している.最新のものを使っていない場合がある.

参考:

RubyonRailsでsqliteでなくてPostgresqlを使う時


Postgresqlをインストール

yum install postgresqlをするとバージョンが古いそうなので,以下の手順でインストールを行う.

まず,wgetでパッケージを取得.

wget http://yum.postgresql.org/9.3/redhat/rhel-6-x86_64/pgdg-centos93-9.3-1.noarch.rpm

取得したパッケージをインストール.

sudo rpm -ivh pgdg-centos93-9.3-1.noarch.rpm

PostgreSQL9.3のインストール.

多分最新ではない

sudo yum install postgresql93

sudo yum install postgresql93-devel
sudo yum install postgresql93-server

バージョンを確認する.

psql --version

PostgreSQLの初期化を行い,完了したら起動.

sudo service postgresql-9.3 initdb

sudo /etc/rc.d/init.d/postgresql-9.3 start

自分は省略したが,サーバー起動時にPostgreSQLが常に起動するようchkconfigで設定する方法もある.

RubyonRailsでsqliteでなくてPostgresqlを使う時

PostgreSQLのデフォルトユーザ(こういう呼び方なのかよくわからないけど,最初から使えるユーザ)はpostgresらしいので,このユーザでPostgreSQLに入る.

sudo -u postgres psql

まずはpostgresユーザのパスワードを設定.

\password

この後パスワードを入力する.

次に,ユーザを追加.

create user <test_user> with password '<test_pass>';

PostgreSQLから出る.

\q


Railsアプリを新規作成

-d postgresql のオプションを付けると使用するDBを指定することができる.

rails new <test_app> -d postgresql

もしpgというPostgreSQLへのRubyインターフェースgemをインストールしていないとエラーが出るらしい.

自分は以前に色々いじっていて既にインストール済みであったのでエラーが出なかったため,もしエラーが出たらどうにかしてインストールしてほしい.RubyonRailsでsqliteでなくてPostgresqlを使う時にも一応記載があるのと,私でもインストールできたのでググればなにか出るはず.


PostgreSQLの設定ファイル編集


pg_hba.confを編集

sudo vi /var/lib/pgsql/9.3/data/pg_hba.conf

最下部に下記を追加.

local   all    all         md5


postgresql.confを編集

sudo vim /var/lib/pgsql/9.3/data/postgresql.conf

#listen_addresses = 'localhost'


listen_addresses = '*'


PostgreSQLを再起動

sudo /etc/rc.d/init.d/postgresql-9.3 restart


database.ymlの設定

rails newしたのdatabase.ymlを開く.

cd <test_app>

vim config/database.yml

先ほどPostgreSQLに入って新規に作成したusernameとpasswordを追加.

username: <test_user>

password: <test_pass>

この時,databaseという項目を見ると,<test_app>_developmentと設定されていると思うので,この名前を覚えておく.


DBの作成

先ほど名前を覚えた<test_app>_developmentを作成する.

再びPostgreSQLに入る.

psql -U postgres

以下のSQL文を実行.

create database <test_app>_development owner <test_user>;

最後にrails s -b 0.0.0.0でサーバを起動して,Vagrantに設定しているアドレスに接続すると,いつもの見慣れたRailsのWelcome画面が出るはず.