Help us understand the problem. What is going on with this article?

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

ueki05
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした