0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Capistranoでの自動デプロイでエラーが起きた際の対処方法(migration error)

Last updated at Posted at 2019-12-30

この記事について

 この記事では、自身がRailsで開発しているアプリをCapistranoでデプロイをしようとした時にエラーが発生し、解決するまでに試した作業を書いています。
 同様のエラーが起きた際に自分が読み返すために書いていますが、他の方の参考にもなれば嬉しいです。

エラーが起こった時の状況

 Capistranoでデプロイの流れを自動化しており、ある日デプロイをしようとしたところ、deploy:migrating実行時にエラーが発生し、デプロイができませんでした。
 ローカル環境では動作に問題がなかったため、サーバー環境に問題があると考えました。

エラー解決までに行った作業

  • AWSサービスの再起動
  • unicornの再起動
  • nginxの再起動
  • MySQLの再起動

 こうして書いてみると、ひたすら再起動しているだけのような気がしてきました。

1.AWSサービスの再起動

 amazonコンソールからサインインし、EC2インスタンスの管理画面を開きます。
 該当するアプリが選択された状態で、「アクション→インスタンスの状態→停止」、「アクション→インスタンスの状態→開始」の順で行います。
 再起動を選択しても良さそうですが、学習のために開発中のアプリであることと、再起動で上手く行かなかった時に停止→開始とやり直すのが面倒だったため、今回は最初から停止→開始の作業を行いました。
 他のアプリを開発中にも直面しましたが、解決策が分からない時にインスタンスの再起動を行うとあっさり解決することがあったりします。

2.unicornの再起動

 以降はコンソールからサーバーにログインした上で作業を行います。cd /var/www/アプリ名などを実行し、アプリが保存されているフォルダに移動してから作業してください。

unicornの停止
ps aux | grep unicorn  # 起動中のunicornプロセスを確認

# 起動中のunicorn master -c ...がある場合、停止させる
kill 0000 #上記で確認したプロセス番号を入力
unicornの起動
RAILS_SERVE_STATIC_FILES=1 unicorn_rails -c config/unicorn.rb -E production -D

3.nginxの再起動

nginxの再起動
# nginxの停止
sudo service nginx stop

# nginxの開始
sudo service nginx start

# nginxの状況確認
sudo service nginx status
# -> nginx (pid 0000) is running...

4.MySQLの再起動

MySQLの再起動
sudo service mysqld restart
# nginxと同様の作業でも再起動は可能

結果

 以上の作業を行うことで、無事にデプロイが行えるようになりました。
 上の作業を全て連続して行ったため、具体的にどの部分が原因でデプロイできなかったのかまでは分かりませんでした。ですが原因を追求するつもりもありませんでしたし、問題があった時の再起動は不都合がない限り全て行って差し支えないと考えます。

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?