今回はRailsアプリケーションが開発環境で正常に動作するか確認する。
アプリケーションを作成
MySQLを使うのでオプションでデータベースをMySQLにして作成。vagrantのファイル共有機能でホストPCとファイル共有するのでパスは「/vagrant」にした。
vagrant@ubuntu-14:/vagrant$ pwd /vagrant vagrant@ubuntu-14:/vagrant$ ls Vagrantfile vagrant@ubuntu-14:/vagrant$
アプリケーションを作成する。
rails new アプリケーション名 -d mysql
vagrant@ubuntu-14:/vagrant$ rails new project -d mysql create create README.rdoc create Rakefile create config.ru create .gitignore create Gemfile create app create app/assets/javascripts/application.js create app/assets/stylesheets/application.css create app/controllers/application_controller.rb create app/helpers/application_helper.rb 略
アプリケーション名のディレクトリが生成され、その中にRailsアプリケーションの雛形ファイルが生成される。
ドキュメントルート変更
Apacheをインストールしてからドキュメントルート変更していないのでデフォルトのままである。Vagrant設定のIPでアクセスしたら Apache2 Ubuntu Default Page が表示された。
Railsアプリのドキュメントルートはpuclicディレクトリになるので、今回だと /vagrant/project/public になる。
今回は /etc/apache2/sites-enabled にある以下の2ファイルを修正してドキュメントルートを変更した。
000-default.confの場合は、シンボリックの/var/www/html/から指定しないと403エラーになった。
default.confの Require all granted は、Apacheのバージョンが2.4以降の場合コメントを外す。
vagrant@ubuntu-14:/etc/apache2/sites-enabled$ ls 000-default.conf default.conf vagrant@ubuntu-14:/etc/apache2/sites-enabled$
Phusion Passengerをdevelopmentモードで動作
ドキュメントルートを変更したので、Apache再起動後に再度Vagrant設定のIPでアクセスする。次のような403エラー画面になった。
ログをみると「Exception RuntimeError in Rack application object (Missing `secret_key_base`・・」となっており、環境変数SECRET_KEY_BASE を設定してないぞ!ってことらしい。Rails4.1 からproduction 環境では、環境変数SECRET_KEY_BASEを設定する仕様に変更されているらしくそれでエラーになっていた。
Phusion Passengerは、デフォルトではproductionモードで動作するのだが、開発環境なのでdevelopmentモードで動作させることにする。
Apacheの設定で、default.confに「RailsEnv development」を追記する。
Apache再起動後に再度Vagrant設定のIPでアクセスする。エラーが出ているがApacheでのアクセスはできた。
上記エラーだが、RailsのGemfileで「gem 'therubyracer', platforms: :ruby」がコメントアウトされている。コメントを外して bundle install でインストールすれば直る。
以上で一応開発環境の動作確認ができた。後はいくつものプロジェクトで再利用しやすいようにBOXを整理できればと思う。
[VagrantによるRails環境 関連記事]