[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
が、トップページにアクセスすると以下のエラーが出ました。
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)
だいじょうぶそう。