LoginSignup
21

More than 5 years have passed since last update.

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

Last updated at Posted at 2015-09-22

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画面が出るはず.

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
21