AWS EC2 インスタンスで Sinatra
簡単なウェブアプリケーションを作りたいときに Sinatra が便利そうだったので AWS EC2 インスタンス上で動かしてみた。
公式の手順通りに進めたらハマりどころがあったので記録。
Sinatra 公式の手順
http://www.sinatrarb.com/intro.html にしたがったけれど上手く行かなかった。手順は以下の通り。
# myapp.rb require 'sinatra' get '/' do 'Hello world!' end
gem で Sinatra をインストール。
gem install sinatra
起動。
ruby myapp.rb
上手く行った手順
gem をインストールする
そもそも EC2 インスタンスに gem をインストールしていなかったのでインストールします。sudo yum -y install rubygems
sinatra インストールリトライ。
sudo gem install sinatra
ruby スクリプトにもちょっと手を加える
公式の手順通り ruby スクリプトを実行すると`require': no such file to load -- sinatra (LoadError)
というエラーが出た。
ググったら以下の記事がヒット。
https://github.com/sinatra/sinatra/issues/640
ruby 1.8 系を使っているのなら
require 'rubygems'
が必要とのこと。
また、デフォルトではポート 4567 でアプリケーションが起動するので、これをポート 80 で起動するように指定。
set :port, 80
これで行けるだろーと思ってブラウザでアクセスしても Hello, world! 表示されず。
実は Sinatra は Development 環境のデフォルト設定だと localhost からのアクセスしか受け付けないらしい。
http://qiita.com/u1_fukui/items/b86b21f6ed39f4c10d5d
だので、スクリプトに以下の記述も追加。
set :environment, :production
最終的にスクリプトは以下のようになりました。
# myapp.rb require 'rubygems' require 'sinatra' set :environment, :production set :port, 80 get '/' do 'Hello world!' end