LoginSignup
8
7

More than 5 years have passed since last update.

外部接続だとSinatraはデフォルトの状態では繋がらない。あとlocalhostのあるあるミスも。

Posted at

実行環境

  • ローカル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'

とすると、

通じた!

その他参考にしたサイト

8
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
7