質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Amazon EC2

Amazon EC2は“Amazon Elastic Compute Cloud”の略称です。Amazon Web Services(AWS)の一部であり、仮想化されたWebサーバーのコンピュータリソースをレンタルできるサービスです。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

Capistrano

Rubyで書かれたサーバオーケストレーションで、複数のサーバでスクリプトを実行する際に用いられます。主な使用用途はWebアプリケーションのデプロイメントです。 アプリケーションのバージョンアップ自動化、およびデータベースの変更などもできます。

Q&A

解決済

1回答

603閲覧

Capistranoを導入し自動デプロイするとサイトにアクセス出来なくなってしまいました。

yutaro_0529

総合スコア12

Amazon EC2

Amazon EC2は“Amazon Elastic Compute Cloud”の略称です。Amazon Web Services(AWS)の一部であり、仮想化されたWebサーバーのコンピュータリソースをレンタルできるサービスです。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

Capistrano

Rubyで書かれたサーバオーケストレーションで、複数のサーバでスクリプトを実行する際に用いられます。主な使用用途はWebアプリケーションのデプロイメントです。 アプリケーションのバージョンアップ自動化、およびデータベースの変更などもできます。

0グッド

0クリップ

投稿2020/11/11 08:22

編集2020/11/15 02:19

前提・実現したいこと

ここに質問の内容を詳しく書いてください。
EC2で個人開発したRuby on rails アプリを手動デプロイし、
その後自動デプロイできる状態まで作業したのですが、
ブラウザでIPアドレスを開こうとするとこのサイトにアクセス出来ませんと表示されてしまいます。

■■な機能を実装中に以下のエラーメッセージが発生しました。

発生している問題・エラーメッセージ

サイトにアクセス出来ない。

該当のソースコード

terminal

1[ec2-user@ip-172-31-45-251 ~]$ less log/unicorn.stderr.log 2log/unicorn.stderr.log: No such file or directory 3[ec2-user@ip-172-31-45-251 ~]$ cd /var/www/nostalgia 4[ec2-user@ip-172-31-45-251 nostalgia]$ less log/unicorn.stderr.log 5 6I, [2020-11-07T10:55:16.939475 #28976] INFO -- : master process ready 7I, [2020-11-07T10:55:16.944288 #28984] INFO -- : worker=0 ready 8bundler: failed to load command: unicorn_rails (/home/ec2-user/.rbenv/versions/2.6.5/bin/unicorn_rails) 9ArgumentError: Already running on PID:28976 (or pid=/var/www/nostalgia/tmp/pids/unicorn.pid is stale) 10 /home/ec2-user/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/unicorn-5.4.1/lib/unicorn/http_server.rb:205:in `pid=' 11 /home/ec2-user/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/unicorn-5.4.1/lib/unicorn/http_server.rb:137:in `start' 12 /home/ec2-user/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/unicorn-5.4.1/bin/unicorn_rails:209:in `<top (required)>' 13 /home/ec2-user/.rbenv/versions/2.6.5/bin/unicorn_rails:23:in `load' 14 /home/ec2-user/.rbenv/versions/2.6.5/bin/unicorn_rails:23:in `<top (required)>' 15bundler: failed to load command: unicorn_rails (/home/ec2-user/.rbenv/versions/2.6.5/bin/unicorn_rails) 16ArgumentError: Already running on PID:28976 (or pid=/var/www/nostalgia/tmp/pids/unicorn.pid is stale) 17 /home/ec2-user/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/unicorn-5.4.1/lib/unicorn/http_server.rb:205:in `pid=' 18 /home/ec2-user/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/unicorn-5.4.1/lib/unicorn/http_server.rb:137:in `start' 19 /home/ec2-user/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/unicorn-5.4.1/bin/unicorn_rails:209:in `<top (required)>' 20 /home/ec2-user/.rbenv/versions/2.6.5/bin/unicorn_rails:23:in `load' 21 /home/ec2-user/.rbenv/versions/2.6.5/bin/unicorn_rails:23:in `<top (required)>' 22I, [2020-11-08T07:58:59.094353 #28976] INFO -- : reaped #<Process::Status: pid 28984 exit 0> worker=0 23I, [2020-11-08T07:58:59.094553 #28976] INFO -- : master complete 24I, [2020-11-08T07:59:15.497198 #6889] INFO -- : Refreshing Gem list 25I, [2020-11-08T07:59:16.579258 #6889] INFO -- : listening on addr=0.0.0.0:3000 fd=9 26I, [2020-11-08T07:59:16.584083 #6889] INFO -- : master process ready 27I, [2020-11-08T07:59:16.588905 #6897] INFO -- : worker=0 ready 28I, [2020-11-08T08:24:21.305363 #6889] INFO -- : reaped #<Process::Status: pid 6897 exit 0> worker=0 29I, [2020-11-08T08:24:21.305561 #6889] INFO -- : master complete 30I, [2020-11-08T08:39:59.756896 #7391] INFO -- : Refreshing Gem list 31I, [2020-11-08T08:40:00.819264 #7391] INFO -- : listening on addr=0.0.0.0:3000 fd=9 32I, [2020-11-08T08:40:00.823995 #7391] INFO -- : master process ready 33I, [2020-11-08T08:40:00.827531 #7399] INFO -- : worker=0 ready 34I, [2020-11-09T01:58:37.132740 #7391] INFO -- : reaped #<Process::Status: pid 7399 exit 0> worker=0 35I, [2020-11-09T01:58:37.133055 #7391] INFO -- : master complete 36I, [2020-11-09T01:59:11.874187 #12898] INFO -- : Refreshing Gem list 37I, [2020-11-09T01:59:13.884108 #12898] INFO -- : listening on addr=/var/www/nostalgia/tmp/sockets/unicorn.sock fd=9 38I, [2020-11-09T01:59:13.888796 #12898] INFO -- : master process ready 39I, [2020-11-09T01:59:13.892300 #12906] INFO -- : worker=0 ready 40/home/ec2-user/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/unicorn-5.4.1/lib/unicorn/http_server.rb:205:in `pid=': Already running on PID:12898 (or pid=/var/www/nostalgia/tmp/pids/unicorn.pid is stale) (ArgumentError) 41 from /home/ec2-user/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/unicorn-5.4.1/lib/unicorn/http_server.rb:137:in `start' 42 from /home/ec2-user/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/unicorn-5.4.1/bin/unicorn_rails:209:in `<top (required)>' 43 from /home/ec2-user/.rbenv/versions/2.6.5/bin/unicorn_rails:23:in `load' 44 from /home/ec2-user/.rbenv/versions/2.6.5/bin/unicorn_rails:23:in `<main>' 45/home/ec2-user/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/unicorn-5.4.1/lib/unicorn/http_server.rb:205:in `pid=': Already running on PID:12898 (or pid=/var/www/nostalgia/tmp/pids/unicorn.pid is stale) (ArgumentError) 46 from /home/ec2-user/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/unicorn-5.4.1/lib/unicorn/http_server.rb:137:in `start' 47 from /home/ec2-user/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/unicorn-5.4.1/bin/unicorn_rails:209:in `<top (required)>' 48 from /home/ec2-user/.rbenv/versions/2.6.5/bin/unicorn_rails:23:in `load' 49 from /home/ec2-user/.rbenv/versions/2.6.5/bin/unicorn_rails:23:in `<main>' 50I, [2020-11-09T02:57:50.438145 #12898] INFO -- : reaped #<Process::Status: pid 12906 exit 0> worker=0 51I, [2020-11-09T02:57:50.438283 #12898] INFO -- : master complete 52I, [2020-11-09T03:12:01.935370 #13576] INFO -- : Refreshing Gem list 53I, [2020-11-09T03:12:02.970145 #13576] INFO -- : unlinking existing socket=/var/www/nostalgia/tmp/sockets/unicorn.sock 54I, [2020-11-09T03:12:02.970332 #13576] INFO -- : listening on addr=/var/www/nostalgia/tmp/sockets/unicorn.sock fd=9 55:client_loop: send disconnect: Broken pipe 56uraokayuutarou@uraokayuutarou-no-MacBook .ssh %
  • アクセスした時のエラー画面スクリーンショット

https://gyazo.com/689ac2f97f0908fb4a0cd75a0fc3e6ba

-アクセスしたときにnginxのログ/エラーログに何が出るか(もしくは何も出ないこと)を確認する
[ec2-user@ip-172-31-45-251 nostalgia]$ sudo less /var/log/nginx/error.log

~

  • アクセスしたときにunicornのログ/エラーログに何が出るか(もしくは何も出ないこと)を確認する

https://gyazo.com/eaa630635e865a6dc62eb4f1b6911911
続き
https://gyazo.com/884521650e3ea73f82bdcd02ac7879f4

試したこと

less log/unicorn.stderr.logで最新のエラーを確認し、
ArgumentError: Already running on PID:28976 を確認し、
ps aux | grep unicornでプロセスを確認し、killコマンドを実行しようとしたところ、
PID:28976が見つかりませんでした。

terminal

1[ec2-user@ip-172-31-45-251 ~]$ ps aux | grep unicorn 2ec2-user 13013 0.0 9.4 455308 94912 ? Sl 07:19 0:01 unicorn master -c /var/www/nostalgia/current/config/unicorn.rb -E deployment -D 3ec2-user 13052 0.0 8.6 456400 87576 ? Sl 07:19 0:00 unicorn worker[0] -c /var/www/nostalgia/current/config/unicorn.rb -E deployment -D 4ec2-user 13526 0.0 0.0 117012 908 pts/2 S+ 07:52 0:00 less log/unicorn.stderr.log 5ec2-user 13733 0.0 0.0 119436 964 pts/3 S+ 08:11 0:00 grep --color=auto unicorn 6[ec2-user@ip-172-31-45-251 ~]$ kill 13013 7[ec2-user@ip-172-31-45-251 ~]$

PIDが古くなっているとエラー文に記載があったため
psで動作しているPIDを確認してみました。

terminal

1uraokayuutarou@uraokayuutarou-no-MacBook .ssh % ps 2 PID TTY TIME CMD 325378 ttys000 0:00.18 -zsh 420482 ttys001 0:00.06 -zsh 518686 ttys003 0:00.20 -zsh 633712 ttys004 0:00.31 -zsh 718715 ttys005 0:00.09 -zsh 8uraokayuutarou@uraokayuutarou-no-MacBook .ssh %

PID:28976を探してkillすれば問題は解決するのでしょうか!?

11/11 18:40
EC2でmysql2をbundle installして、
git pull origin masterを実行
bundle exec cap production deployし
sudo systemctl restart mariadb
sudo systemctl restart nginx
を実行しましたが、アクセス出来ず。

bundle install後

terminal

1増えていた記述 2I, [2020-11-07T10:55:14.533545 #28976] INFO -- : Refreshing Gem list I, [2020-11-07T10:55:16.939475 #28976] INFO -- : master process ready 3I, [2020-11-07T10:55:16.928690 #28976] INFO -- : listening on addr=0.0.0.0:3000 fd=9 4I, [2020-11-07T10:55:1 5 6減った記述 7I, [2020-11-09T03:12:02.970145 #13576] INFO -- : unlinking existing socket=/var/www/nostalgia/tmp/sockets/unicorn.sock 8I, [2020-11-09T03:12:02.970332 #13576] INFO -- : listening on addr=/var/www/nostalgia/tmp/sockets/unicorn.sock fd=9 9: :client_loop: send disconnect: Broken pipe 10uraokayuutarou@uraokayuutarou-no-MacBook .ssh % 11 12diffffff参照

11/11 22:56 追記
エラー文を再度読み直し、PID:28976がどこかで起動したままだと仮定して、
killしてみたのですが、うまく行きませんでした。

terminal

1[ec2-user@ip-172-31-45-251 ~]$ kill 28976 2-bash: kill: (28976) - No such process

突き止めることが出来ました。

再度デプロイしようと作業を進めているとsudo systemctl restart nginxで
nginxを再起動させようとすると、エラーがあるというような内容が出てきたので、
nginxが起動されているかps ax | grep nginxで確認してみました。

[ec2-user@ip-172-31-45-251 nostalgia]$ sudo systemctl reload nginx
Job for nginx.service invalid.
[ec2-user@ip-172-31-45-251 nostalgia]$ sudo systemctl restart nginx
Job for nginx.service failed because the control process exited with error code. See "systemctl status nginx.service" and "journalctl -xe" for details.
[ec2-user@ip-172-31-45-251 nostalgia]$ ps ax | grep nginx
24627 pts/0 D+ 0:00 grep --color=auto nginx
[ec2-user@ip-172-31-45-251 nostalgia]$

そしてnginxでエラーログを確認してみました。
2020/11/12 08:23:52 [emerg] 24605#0: directive "upstream" has no opening "{" in /etc/nginx/conf.d/rails.conf:3
2020/11/12 08:38:21 [emerg] 24646#0: directive "upstream" has no opening "{" in /etc/nginx/conf.d/rails.conf:3
/var/log/nginx/error.log (END)
おそらくWEBにアクセス出来ない原因はこれかなと予測しました!

### 補足
rails s してlocal:host3000にアクセスするとアプリは問題なく表示されていました。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yu_1985

2020/11/12 01:34

問題が起きているのがunicornと特定する根拠が足りないので、まずはどこで問題が起きてるか絞り込んでください。 - アクセスした時のエラー画面は文言を書き写すだけでなくスクリーンショットを貼る - アクセスしたときにnginxのログ/エラーログに何が出るか(もしくは何も出ないこと)を確認する  もし何も出なければそもそもリクエストがサーバに到達していないのでサーバの外に問題があります。 - アクセスしたときにunicornのログ/エラーログに何が出るか(もしくは何も出ないこと)を確認する 後者2つを確認するようなときにtail -fを使います。 unicornのpid云々ですが、ログが出てる時間帯が明らかに過去のもので、現在のプロセスではないと思われるので関係ないです。 > PIDが古くなっているとエラー文に記載があったため とありますが、そのような記載はないです。`Already running `なので過去にunicornが起動した状態で二重にunicornを起動しようとした時のエラーでしょう。
yutaro_0529

2020/11/12 07:16

yu_1985さん、ご回答ありがとうございます。 内容確認しました。 - アクセスした時のエラー画面は文言を書き写すだけでなくスクリーンショットを貼る https://gyazo.com/689ac2f97f0908fb4a0cd75a0fc3e6ba -アクセスしたときにnginxのログ/エラーログに何が出るか(もしくは何も出ないこと)を確認する [ec2-user@ip-172-31-45-251 nostalgia]$ sudo less /var/log/nginx/error.log ~ ~ ~ ~ - アクセスしたときにunicornのログ/エラーログに何が出るか(もしくは何も出ないこと)を確認する https://gyazo.com/eaa630635e865a6dc62eb4f1b6911911 続き https://gyazo.com/884521650e3ea73f82bdcd02ac7879f4 二重にunicornを起動しているということは、 両方切って再度立ち上げれば良いということでしょうか!?
yutaro_0529

2020/11/12 07:26

立ち上がっているunicornを止めようとすると、 ファイルがないと出てきてしまいました。 [ec2-user@ip-172-31-45-251 nostalgia]$ kill -QUIT `cat /path/to/unicorn.pid` cat: /path/to/unicorn.pid: No such file or directory kill: 使用法: kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... または kill -l [sigspec] kill -USR2 `cat /path/to/unicorn.pid`を行うと新規プロセスを立ち上げ、古いプロセスを切ることができるとこちらの記事をみて思ったのですが、 ターミナルで実行しても問題ないでしょうか!? https://qiita.com/syou007/items/555062cc96dd0b08a610
yutaro_0529

2020/11/12 09:06

突き止めることが出来ました。 再度デプロイしようと作業を進めているとsudo systemctl restart nginxで nginxを再起動させようとすると、エラーがあるというような内容が出てきたので、 nginxが起動されているかps ax | grep nginxで確認してみました。 [ec2-user@ip-172-31-45-251 nostalgia]$ sudo systemctl reload nginx Job for nginx.service invalid. [ec2-user@ip-172-31-45-251 nostalgia]$ sudo systemctl restart nginx Job for nginx.service failed because the control process exited with error code. See "systemctl status nginx.service" and "journalctl -xe" for details. [ec2-user@ip-172-31-45-251 nostalgia]$ ps ax | grep nginx 24627 pts/0 D+ 0:00 grep --color=auto nginx [ec2-user@ip-172-31-45-251 nostalgia]$ そしてnginxでエラーログを確認してみました。 2020/11/12 08:23:52 [emerg] 24605#0: directive "upstream" has no opening "{" in /etc/nginx/conf.d/rails.conf:3 2020/11/12 08:38:21 [emerg] 24646#0: directive "upstream" has no opening "{" in /etc/nginx/conf.d/rails.conf:3 /var/log/nginx/error.log (END) おそらくWEBにアクセス出来ない原因はこれかなと予測しました!
yu_1985

2020/11/12 09:26

スクリーンショットはそこではなくてブラウザでどのようなエラーが出たかを見たかったのですが…書き方が悪かったですね。 > 二重にunicornを起動しているということは、両方切って再度立ち上げれば良いということでしょうか!? そうではないです。起動しようとして失敗しているのがエラーログに残っているだけなので、今回見るべきなのはそこではない、ということです。エラーが発生している時刻が古い上に、以後通常に起動したと思われるログが残っているからです。 > /path/to/unicorn.pid これは実際のパスではありません。デフォルトならプロジェクトの/tmpのどこかとかにあるでしょうけど。 unicornを起動するときにプロセスIDをそこに記録してあるので、そこの中身を見ればプロセスIDがわかるというだけです。 手動でプロセスをkillするなら別にpsコマンド等で確認しても同じです。 そして前述の通り、原因がここと特定する根拠が足りないのでunicornをどうこうする前に見るべきものがあります。 (書いていただいているようにnginxが立ち上がっていない可能性が高いでしょうけど) sudo nginx -t で、nginxのconfにエラーがないか確認してみてください。(rails.confの内容も本文中に追記するといいでしょう) また、アクセスした時にブラウザに表示されるエラーのスクリーンショットを改めて貼ってください。 いずれもコメントではなく本文に追記してください。
yutaro_0529

2020/11/12 13:37

解決しました!!!!! おっしゃる通り、nginxのconfのエラーでした。 vim /etc/nginx/conf.d/rails.conf でエラーが発生している3行目の /var/www/nostalgia/tmp/pids/unicorn.pid ここに/sharedが抜けているのが原因で表示出来なかったです!! 一度、頭を整理して、質問ページに編集し直します!!
guest

回答1

0

自己解決

nginxのconf内のエラーでした。
ターミナルに下記を入力し、
vim /etc/nginx/conf.d/rails.conf
中身を確認

/var/www/アプリケーション名/tmp/pids/unicorn.pid
⇩上記が誤っていたためターミナルでiを入力して修正して編集
server unix:/var/www/アプリケーション名/shared/tmp/sockets/unicorn.sock;
:wqで保存

アプリケーション名/sharedが抜けているのが原因で表示出来なかったです。

投稿2020/11/20 02:42

yutaro_0529

総合スコア12

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問