前提
作動環境
- ホストOS:macOS Catalina 10.15.7
- ホスト側ブラウザ:Google Chrome
- ホスト側エディター:VSCode
- ゲストOS:Ubuntu
- VM:Vertualbox
経緯
転職先で改めてRailsチュートリアルをすることになり、ホスト型仮想化を用いて環境構築を行った。
仮想環境を生成し、ゲストOSへのSSH接続完了。
Rails newして、生成されたディレクトリのマウントも完了。
さあ、Railsチュートリアル1.3.2を進めるぞ、というところ。
問題
SSH接続済のVScodeのターミナルから、サーバーを起動
$ bundle exec rails s -b 0.0.0.0
=> Booting Puma
=> Rails 5.1.6 application starting in development
=> Run `rails server -h` for more startup options
Puma starting in single mode...
* Version 3.9.1 (ruby 2.5.1-p57), codename: Private Caller
* Min threads: 5, max threads: 5
* Environment: development
* Listening on tcp://0.0.0.0:3000
Use Ctrl-C to stop
無事立ち上がっているように見える。
ブラウザ(Chrome)でプレビューを見ようと、
http://[UbuntuのIPアドレス]:3000/
にアクセスしたところ、アクセスできませんでした。

なんでや!
「-b 0.0.0.0」のオプションもちゃんとつけて、SSH接続したIPアドレスと相違ないことも確認したのに・・・!
Google先生に泣きついても答えは出ず、先輩に泣きついても答えは出ず・・・
解決策
上司が言うには、
「もしpingが通るならIPアドレスは合っていると考えて、動作させているUbuntu の方で iptables とか Firewallのようなものが動いていて、3000 番ポートが外から接続できないようになっている可能性がある」
とのこと。
確かに、エラー画面にもファイヤーウォールを確認せいと書いてある。
管理者権限で、ファイヤーウォールを無効化
$ sudo ufw disable
無事に表示!
こんなに「Yey! You’re on Rails!」の表示が嬉しかったのは、人生初めて。
学んだこと
ファイヤーウォールを確認って、おそらく家電製品の「コンセントはささっていますか?」レベルのトラブルシューティングのプロセスだよね、きっと。
どんな接続エラーにも書いてあるもんだから、無視する習慣がついてしまった・・・
やはり基礎基本は大切ですね。
ということで今回の学び
以上、同じトラブルに合っている人の助けになれば嬉しいです。
コメント