データベースとの接続(PostgreSQL編)
2012/02/19
『改訂新版 基礎Ruby on Rails』 読者サポートページ > Rails本番環境構築ガイド
以下、PostgreSQLをインストールして、Railsアプリケーションから接続するまでの手順を示します。
リモートマシンにsudo権限を持つユーザーでSSH接続し、コマンドを順に実行してください。なお、%
はコマンドプロンプト、#
はpsqlのプロンプトを示します。これらの文字は入力しないでください。
PostgreSQLサーバのインストール、初期化、起動
CentOS 6.2
% sudo yum install postgresql-server postgresql-devel % sudo service postgresql initdb % sudo service postgresql start
2012年2月22日現在、バージョン8.4.9-1がインストールされます。
Ubuntu Server 10.04 LTS
% sudo apt-get install postgresql
2012年2月18日現在、バージョン8.4.10がインストールされます。CentOS 6.2の場合と異なり、データ領域の初期化とサーバの起動まで自動で進みます。
PostgreSQLサーバの初期設定
セットアップ作業の前にPostgreSQL上のユーザーpostgresとasagaoのためのパスワードを決めてください。mkpasswdコマンドを使って強いパスワードを作るとよいでしょう。ここでは、次の2つを使うことにします。
- gnDwPsFVM5kMU (postgres)
- diiNv2bid4aTI (asagao)
念のためこれらのパスワードは /root
ディレクトリに記録しておきましょう。
% sudo -s % echo "gnDwPsFVM5kMU" > /root/postgres_postgres_password % echo "diiNv2bid4aTI" > /root/postgres_asagao_password % chmod 400 /root/postgres_*_password % exit
asagaoユーザーとasagao_productionデータベースを作ります。
% sudo su - postgres % createuser -a asagao % createdb -E UTF8 -O asagao asagao_production -T template0 % psql -c "alter user postgres with password 'gnDwPsFVM5kMU'" % psql -c "alter user asagao with password 'diiNv2bid4aTI'" % exit
次に、ローカルホストから誰でもすべてのデータベースにパスワード認証でログインできるようにPostgreSQLの設定を変更します。
この設定変更をしないと、Linuxユーザー名とデータベース名が異なる場合にデータベース接続が失敗します。
% sudo vi /var/lib/pgsql/data/pg_hba.conf # Cent OS 6.2 の場合 % sudo vi /etc/postgresql/8.4/main/pg_hba.conf # Ubuntu Server 10.04 LTS の場合
で pg_hba.conf
を開き、ファイルの末尾付近にある
local all all ident
という行を
local all all md5
に変更します。そして、PostgreSQLサーバに新しい設定を反映させます。
% sudo service postgresql reload # Cent OS 6.2 の場合 % sudo service postgresql-8.4 reload # Ubuntu Server 10.04 LTS の場合
asagao_productionデータベースにログインを試みます。
% psql -U asagao asagao_production
「Password for user asagao:」に対して正しいパスワードを入力して、次のような画面が表示されればログイン成功です:
psql (8.4.10) Type "help" for help. asagao_production=#
PostgreSQLの対話ターミナルを抜けます。
# \q
データベース接続の切り替え
% sudo su - rails % cd asagao
エディタで Gemfile を開き、
gem "sqlite3"
を
gem "pg"
に変更します。そして、Bundlerでpgライブラリをインストールします。
% bundle install
続いて、エディタで config/database.yml を開き、
production: adapter: sqlite3 database: db/production.sqlite3 pool: 5 timeout: 5000
という部分を削除して、代わりに次のコードを書き入れます。
production: adapter: postgresql database: asagao_production username: asagao password: diiNv2bid4aTI encoding: utf8
同じマシン上でPostgreSQLサーバが動いている場合、host, port, socketなどの項目を指定しないでください。
% RAILS_ENV=production rake db:schema:load % RAILS_ENV=production rake db:seed
Railsアプリケーションの再起動
% touch tmp/restart.txt
目次
- VirtualBoxによる仮想マシンのインストール
- MinGWのインストール (Windowsユーザー向け)
- サーバーの準備(CentOS 6.2編)
- サーバーの準備(Ubuntu Server 12.04 LTS編)
- サーバーの準備(Ubuntu Server 10.04 LTS編)
- SSH公開鍵の設置
- Ruby 1.9.3のインストール
- Railsアプリケーションのセットアップ
- ApacheとPhusion Passengerのセットアップ
- データベースとの接続(MySQL編)
- データベースとの接続(PostgreSQL編)
- Capistranoによるデプロイ
- Gitレポジトリの作成
- 続・Capistranoによるデプロイ