

## 経緯とエラー

EC2にssh接続してデータベースのリセット(`rails db:migrate:reset RAILS_ENV=production
DISABLE_DATABASE_ENVIRONMENT_CHECK=1`)を行おうとしたところ、

[code]

    PG::ObjectInUse: ERROR:  database "AnayumeAppDB" is being accessed by other users
    
[/code]

と表示されました。ここで安易に「EC2を再起動すればできるマイグレーションできるかな？」と考え、AWSコンソール上でEC2を再起動(停止&開始)。再びEC2上でデータベースのリセットを行ったところ、マイグレーション成功。併せて`rails
db:seed RAILS_ENV=production`も行ない、pumaを起動(`bundle exec rails s -e
production`)してブラウザでサイトにアクセスしたところ、`502 Bad Gateway`と表示されるようになりました。

* * *

## そもそも

上記「EC2にssh接続してデータベースのリセット」を行う前に、`ps ax | grep puma`でpumaのプロセスIDを確認して`kill -9
PID`でpumaを停止しました。しかし、その状態でブラウザからサイトにアクセスしたところ、ページが正常に表示されていました(pumaを停止したからページは表示されないはずなのに)。  
そして、上記データベースのリセットとpumaの起動はアプリのルートディレクトリ(`/var/www/rails/AnayumeApp-
web`)で行っていました。しかし、capistranoを使っている為、最新のファイルは`/var/www/rails/AnayumeApp-
web/current`にあるはずで、こちらのディレクトリでデータベースのリセットとpumaの再起動のコマンドを実行するべきだった？

* * *

## 試したこと1

`/var/www/rails/AnayumeApp-web/current/log`以下のログを探りましたが、エラーを示す記載は見つけられませんでした。

[code]

    puma_error.log
    puma startup: 2020-05-08 01:55:37 +0000 ===
    
[/code]

[code]

    puma_access.log
    puma startup: 2020-05-08 01:55:37 +0000 ===
    * Listening on unix:///var/www/rails/AnayumeApp-web/shared/tmp/sockets/puma.sock
    
[/code]

[code]

    puma.stdout.log
    puma startup: 2020-05-08 01:24:04 +0000 ===
    * Restarting...
    * Listening on unix:///var/www/rails/AnayumeApp-web/releases/20200508012915/tmp/sockets/puma.sock
    Exiting
    === puma startup: 2020-05-08 01:48:45 +0000 ===
    
[/code]

※puma.sockをリスニングしているパスが`shared/tmp/sockets/puma.sock`でない点が気になります  
(AnayumeApp-webディレクトリでpuma起動のコマンドを実行したから？)

[code]

    nginx.error.log
    2020/05/08 00:50:59 [error] 21638#0: *154085 open()
    "/usr/share/nginx/html/latest/dynamic/instance-identity/document" failed (2: No such file or directory),
    client: 10.0.1.104, server: _, request: "GET /latest/dynamic/instance-identity/document HTTP/1.1", host: "[::ffff:a9fe:a9fe]"
    
[/code]

[code]

    nginx.access.log
    10.0.4.128 - - [08/May/2020:01:13:08 +0000] "GET / HTTP/1.1" 200 3520 "-" "ELB-HealthChecker/2.0"
    
[/code]

[code]

    puma.stderr.log
    === puma startup: 2020-05-08 09:36:16 +0000 ===
    
[/code]

[code]

    production.log
    D, [2020-05-08T22:08:53.266128 #28931] DEBUG -- :   ESC[1mESC[36mMap Create (0.9ms)ESC[0m  ESC[1mESC[32mINSERT INTO "maps" ("address", "latitude", "longitude", "title", "comment", "picture", "user_id", "created_at", "updated_at") VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9) RETURNING "id"ESC[0m  [["address", "台北"], ["latitude", 25.0375198], ["longitude", 121.5636796], ["title", "台北"], ["comment", "台湾スイーツを食べ尽くしたい..."], ["picture", "taipei.jpg"], ["user_id", 1], ["created_at", "2020-05-08 22:08:53.264659"], ["updated_at", "2020-05-08 22:08:53.264659"]]
    
[/code]

→マイグレーションが正常に行われているようです(production.logは他のlogとは別の時間にコピペした為、時間が異なっています)

currentディレクトリではなくAnayumeApp-
webディレクトリでpumaを起動してしまった為にpuma.sockをlisteningするパスが異なってしまったとか？と考えてみましたが、それ以上先には進めていません。

* * *

## 試したこと2

EC2にssh接続し、そこからデータベースにアクセスして、データベース(AnayumeAppDB)を削除。その後、EC2上の/var/www/rails/AnayumeApp-
web/currentでデータベースのリセットとpumaの起動を行ないました。しかし、ブラウザで「502 Bad Gateway」の表示のまま。

* * *

## 設定ファイル(抜粋)

[code]

    /etc/nginx/conf.d/AnayumeApp
    server unix:/var/www/rails/AnayumeApp-web/shared/tmp/sockets/puma.sock;
    
[/code]

[code]

    puma.rb
    bind "unix://#{app_dir}/tmp/sockets/puma.sock"
    
[/code]

* * *

## 環境・使用技術(抜粋)

  * Ruby 2.6.3, Rails 5.2.4.2(5.1.6からバージョンアップ)
  * nginx,puma
  * AWS (VPC,EC2,RDS for PostgreSQL,S3,Route53,ACM,ALB)
  * Circle CI, Capistrano

EC2再起動前は正常にブラウザからアクセスできていたので、セキュリティグループなどAWS周りの設定に関しては問題がないと考えております。

何よりログにそれらしき問題が見つけられなかったので、手探り状態となってしまっております。

何卒宜しくお願い申し上げます。


CC BY-SA 4.0
2020-05-08T23:48:39.900
66443
2020-05-09T10:59:31.957
2020-06-17T08:14:45.997
-1
40067
question
ruby-on-rails ruby amazon-ec2 rds
EC2再起動&マイグレーション後に「502 Bad Gateway」が表示されるようになった


ものすごく初歩的なことでしたが、nginxを起動するのを忘れていました。。。

「ec2 再起動 502 BadGateWay」で調べていたところ「unicornがうまく起動していない」という例に出会い、気がつきました。  
<http://lina-marble.hatenablog.com/entry/2016/04/12/153610>

EC2上で普通に`sudo systemctl start nginx`すると、ブラウザで正常にページが表示されるようになりました。

EC2再起動後、手動でマイグレーションとpuma起動したばかりに、DBかpumaが原因とばかり思っていました。


CC BY-SA 4.0
2020-05-09T10:59:31.957
66459
2020-05-09T10:59:31.957
40067
66443
answer