EC2 に Rails の開発環境をサクッと作る
複数の Mac で開発していると、ローカル環境を統一するのが面倒になってきます。マシンを買い換えたときの環境構築も結構手間です。
そこで新しい Rails プロジェクトからローカル環境を作らずに EC2 上で開発してみることにしました。バックアップやスケールアップも簡単なので開発環境にぴったりかもしれません。
Ruby のインストール
Ruby のインストールは、先日書いたエントリーを参考にしてください。
Rails のインストール
Rails の前に足りないパッケージをインストールしておきます。 SQLite は必要に応じてどうぞ。
$ sudo yum install patch sqlite-devel
まず Bundler で Rails をインストールします。
$ mkdir project && cd project
$ bundle init
$ vi Gemfile
source "https://rubygems.org"
gem "rails", "4.2.1"
$ bundle install --path vendor/bundle
新規プロジェクトを作ります。 Gemfile を上書きしていいか聞かれるので Y
で進めます。
$ bundle exec rails new .
Overwrite /home/ec2-user/project/Gemfile? (enter "h" for help) [Ynaqdh] Y
--path vendor/bundle
のオプションは 1 回実行すれば覚えているので、rails new
の中で bundle install
が実行されてもシステムワイドの Gem は汚れません。
Node.js のインストール
Mac OS X ならこれで完了ですが、Amazon Linux で rails server
を実行すると "Could not find a JavaScript runtime." というエラーになります。
$ bundle exec rails server
/home/ec2-user/project/vendor/bundle/ruby/2.2.0/gems/execjs-2.5.2/lib/execjs/runtimes.rb:48:in `autodetect':
Could not find a JavaScript runtime. See https://github.com/rails/execjs for a list of available runtimes. (ExecJS::RuntimeUnavailable)
Mac OS X では JavaScript ランタイムに OS 付属の JavaScriptCore が使われますが、Amazon Linux には当然入っていないので Node.js をインストールします。
$ sudo yum --enablerepo=epel install nodejs
これで問題なく rails server
が実行できます。
Public DNS でアクセスできるようにする
Rails 4.2 (Rack 1.6) から rails server
が Listen するアドレスが 0.0.0.0
から localhost
に変わりました。デフォルトの localhost
では EC2 の Public DNS 経由でアクセスできないので Listen するアドレスを変更する必要があります。
$ bundle exec rails server -b 0.0.0.0
あとはローカル環境と変わりなく開発できると思います。