#実行環境
- ローカルOS macOS Sierra 10.12.4
- リモートOS CentOS 6.4
- Ruby 2.4.2
- Sinatra 1.4.8
- VirtualBox 5.1.18
- Mac上のiTerm(3.0.15)からssh接続してCentOSにアクセス
#詰まった点
このチュートリアル記事 に沿ってSinatraを初めて触っていたら、Hello WorldをWeb上に表示するという最初の最初で詰まってしまった。
Hello.rb
require 'sinatra'
require 'sinatra/reloader'
get '/' do
"Hello World!"
end
$ ruby Hello.rb
[2017-05-01 13:41:03] INFO WEBrick 1.3.1
[2017-05-01 13:41:03] INFO ruby 2.4.1 (2017-03-22) [x86_64-linux]
== Sinatra (v1.4.8) has taken the stage on 4567 for development with backup from WEBrick
[2017-05-01 13:41:03] INFO WEBrick::HTTPServer#start: pid=14881 port=4567
と表示されたので、Mac側のChromeで、
http://localhost:4567
と叩くが、表示されない。
#解決(2段階)
##1段階目
Mac側(つまりリモートホスト側)のlocalhostに繋いでもCentOS側のlocalhostに繋がらないのは当たり前。
こんな初歩的なミスに30分悩んでしまった。
ifconfig
コマンドで得られるIPアドレス(ホストオンリーアダプターのIPアドレス)を代わりに入力すると
http://192.168.〇〇.〇〇〇:4567
繋が...らなかった。なぜ。
##2段階目
丁寧に調べてくださっている方の記事によると、
Sinatra ver1.4.0以降は、development環境だと、localhostからのアクセスしか受け付けないのがデフォルトとなったようだ。
プログラム中に
Hello.rb
set :environment, :production
を追加して実行環境を変更するか、
全てのIPアドレスを許可するためのオプションをつけて実行すると、
ruby main.rb -o 0.0.0.0 -p 4567
or
Hello.rb
set :bind, '0.0.0.0'
とすると、
通じた!