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