[Ruby on Rails 3, Ruby on Rails 4] Ubuntu に Passenger + MySQL で Rails 4 を動かす(2)

続きです。

Contents

gem mysql2

サンプルアプリの設定を変更します。

$ cd /home/vagrant/work/sample
$ vim Gemfile

gem mysql2 を本番環境用に追加します。

group :production do
  gem 'mysql2'
end
$ bundle install

MySQLにデータベースを作成する

ID/PWはインストール時に指定したもの。

$ mysql -u root -p
mysql> create database sample_production;
mysql> grant all privileges on sample_production.* to 'yourname'@'localhost' identified by 'yourpassword';
mysql> exit;

database.yml

$ vim config/database.yml
production:
  adapter: mysql2
  encoding: utf8
  reconnect: false
  database: sample_production
  pool: 5
  username: yourname
  password: yourpassword
  host: localhost
  timeout: 5000

migration

$ bundle exec rake db:setup RAILS_ENV="production"
sample_production already exists
-- create_table("users", {:force=>true})
   -> 0.1663s
-- initialize_schema_migrations_table()
   -> 0.1534s

これでRailsとMySQL間の通信が確立したはず。

Passenger の設定を production mode に変更する

前回設定した箇所をコメントアウトします。

$ sudo vim /etc/apache2/sites-available/passenger
# RailsEnv development

Apache をリスタートします。

$ sudo service apache2 restart

動作確認

サンプルアプリのURLにアクセスしたところ、無事操作ができました。
http://dev.rails/users

passenger 2013-09-26 23-07-16

が、トップページにアクセスすると以下のエラーが出ました。
http://dev.rails/

The page you were looking for doesn't exist.

Rails 3 から Production にてRails サーバを起動するとpublic ディレクトリ以下はRails サーバより提供されなくなる。

とのことで正しい振るまいのよう。
環境を確認してみたいので、以下を編集してみましたが、変化はなかったので保留。

$ vim config/environments/production.rb

他の方法でMySQLが使われていることを確認します。

$ mysql -u root -p
mysql> use sample_production;
Database changed
mysql> show tables;
+-----------------------------+
| Tables_in_sample_production |
+-----------------------------+
| schema_migrations           |
| users                       |
+-----------------------------+
2 rows in set (0.00 sec)

だいじょうぶそう。