LoginSignup
4
2

More than 3 years have passed since last update.

EC2にデプロイするも、エラーログに何も表示されない時の可能性

Last updated at Posted at 2020-07-05

環境

Ruby 2.5.1
Rails 5.2.4.3

こちらの記事を参考にAWSにデプロイする過程を終えたのですが、ブラウザからアクセスすると「このサイトに接続できません」となり失敗してしまう…

(注)参考にさせて頂いた記事は大変分かりやすく、記事のせいではありません。

何がダメなのか、記事を参考にログを確認してみます。

サーバー環境(/var/www/rails/アプリ名/)
cd log
tail -n 30 production.log

スクリーンショット 2020-06-26 16.18.13.png

何故かログを見てもエラーのようなものが見当たりません。
最初は意味不明でしたが、しばらく悩んだ結果ブラウザからアクセスができてないかもしれないと考えました。

そこでcurlを使って直接httpにアクセスしてみます。

$ curl -IXGET http://IPアドレス/
HTTP/1.1 301 Moved Permanently
Server: nginx/1.12.2
Date: Sat, 27 Jun 2020 05:09:57 GMT
Content-Type: text/html
Transfer-Encoding: chunked
Connection: keep-alive
Location: https://IPアドレス/

301が返ってきています。
どうやら、httpへのアクセスがhttpsに勝手にリダイレクトされてしまってるようです。試しにあえてcurlでhttpsにアクセスしてみました。

$ curl -IXGET https://IPアドレス/
curl: (7) Failed to connect to IPアドレス port 443: Connection refused

433のportが空いてないと怒られました。
確かにセキュリティグループで433の設定はしていないので当然ですね。

ということでセキュリティグループのインバウンドルールに433を追加して、ブラウザからhttpでアクセスしてみるとhttpsでページが開きました!(感動)

ただ、今はhttpsではなくてhttpで開くのが本来の目標です…

結果

httpからhttpsにリダイレクトされていた原因は/config/environments/production.rbにある以下の記述でした。

/config/environments/production.rb
config.force_ssl = true

こちら以前herokuデプロイでssl化した時に記述したものだと思われます…
これがあるとssl化のためにhttpsにリダイレクトするようです。

ということでローカルで直してもいいのですがpushしたりcloneしたりするのが面倒なのでとりあえずサーバー内の記述を書き換え、確認だけしてみます。

$ cd /var/www/rails/Ticket-Rec/config/environments/
$ vi production.rb

以下のように変更

/config/environments/production.rb
config.force_ssl = false

unicornを再起動

$ ps -ef | grep unicorn | grep -v grep
hiroki    2031     1  0  6月26 ?      00:00:02 unicorn_rails master -c /var/www/rails/Ticket-Rec/config/unicorn.conf.rb -D -E production
hiroki    2036  2031  0  6月26 ?      00:00:00 unicorn_rails worker[0] -c /var/www/rails/Ticket-Rec/config/unicorn.conf.rb -D -E production
hiroki    2038  2031  0  6月26 ?      00:00:00 unicorn_rails worker[1] -c /var/www/rails/Ticket-Rec/config/unicorn.conf.rb -D -E production

$ kill 2031
$ bundle exec unicorn_rails -c /var/www/rails/Ticket-Rec/config/unicorn.conf.rb -D -E production

nginxを再起動

$ sudo service nginx restart

再度curlでhttpにアクセスしてみると200が返ってきました!

$ curl -IXGET http://IPアドレス/
HTTP/1.1 200 OK
Server: nginx/1.12.2
Date: Sat, 27 Jun 2020 05:27:46 GMT
Content-Type: text/html; charset=utf-8
Transfer-Encoding: chunked
Connection: keep-alive
X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: strict-origin-when-cross-origin
ETag: W/"03411acbf679047381b99fd0eda2307c"
Cache-Control: max-age=0, private, must-revalidate
Set-Cookie: _myapp_session=%2Fj%2FMy4fzeeSRY3imIh%2FCkJg94SzoshjfdaYZhZcEzF4i%2BxXXUZiYY8M%2Flre%2F6TAAvXqfyrr5sJ8ke2aOlhh4o8i6xsMfO7Ubp7LvUQnAxB9gm%2FbQ8Gc%2BLPzZAxcL9OgDLvQaocLN1MTSz6XKaDM%3D--1h9%2FJNHiHiktaWNU--CJuK9RUucx3dkTVkQpjYLg%3D%3D; path=/; HttpOnly
X-Request-Id: 9d2ee01e-fa05-40ae-8959-6e9b40f9b3e1
X-Runtime: 0.005877

実際にブラウザで開いてみる

ブラウザ
http://IPアドレス/

無事アプリにアクセスできました!
めでたしめでたし!

と言っても、もしこの後ssl化する時は結局

/config/environments/production.rb
config.force_ssl = true

に設定すると思われます笑

ただ、繋がらない原因が分かりました。

参考

【画像付きで丁寧に解説】AWS(EC2)にRailsアプリをイチから上げる方法【その1〜ネットワーク,RDS環境設定編〜】

4
2
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
4
2