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

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

新規登録して質問してみよう
ただいま回答率
85.48%
unicorn

Unicornは、汎用のRackアプリケーションサーバ。RackとWebサーバーの機能を併せ持ちます。レスポンス処理や、Nginx単体がRackの機能をサポートしていない事から、一般的にはNginx+Unicorn+Railsの構成を取って用います。

nginx

nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

AWS(Amazon Web Services)

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

Q&A

解決済

2回答

1854閲覧

【AWS・Rails・Nginx】nginxで(111: Connection refused)エラー。 404 Not Found

raamenzurururu

総合スコア11

unicorn

Unicornは、汎用のRackアプリケーションサーバ。RackとWebサーバーの機能を併せ持ちます。レスポンス処理や、Nginx単体がRackの機能をサポートしていない事から、一般的にはNginx+Unicorn+Railsの構成を取って用います。

nginx

nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

AWS(Amazon Web Services)

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

0グッド

1クリップ

投稿2020/09/26 06:30

編集2020/09/27 00:42

前提

世界一丁寧なAWS解説。EC2を利用して、RailsアプリをAWSにあげるまでを参考にRailsアプリをAWSにデプロイしようとしていたところ以下のエラーで進めなくなりました、、、

/var/www/rails/ToDoGame/backend/log/nginx.error.log

[error] 6439#0: *251 connect() to unix:/var/www/rails/ToDoGame/backend/tmp/sockets/.unicorn.sock failed (111: Connection refused) while connecting to upstream, client: 219.66.81.44, server: IPアドレス, request: "GET / HTTP/1.1", upstream: "http://unix:/var/www/rails/ToDoGame/backend/tmp/sockets/.unicorn.sock:/", host: "IPアドレス"

###発生しているエラー
unicornを起動していない状態でIPアドレスにアクセスするとこの様に404 Not Foundが表示されます。
イメージ説明
なのでtry_filesの記述がおかしいのかな?と少し疑っています。

Nginx設定ファイル

/etc/nginx/conf.d/backend.conf

error_log /var/www/rails/ToDoGame/backend/log/nginx.error.log; access_log /var/www/rails/ToDoGame/backend/log/nginx.access.log; client_max_body_size 2G; upstream app_server { server unix:/var/www/rails/ToDoGame/backend/tmp/sockets/.unicorn.sock fail_timeout=0; } server { listen 80; server_name ~~~.~~~.~~~.~~~;(Elastic IP) keepalive_timeout 5; root /var/www/rails/ToDoGame/backend/public; try_files $uri/index.html $uri.html $uri @app; location @app { proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_redirect off; proxy_pass http://app_server; } error_page 500 502 503 504 /500.html; location = /500.html { root /var/www/rails/ToDoGame/backend/public; } }

補足情報

[Kazuki@ip-10-0-0-59 log]$ ps aux | grep nginx root 4270 0.0 0.4 60132 4060 ? Ss Sep25 0:00 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf nginx 6439 0.0 0.4 60136 4640 ? S 00:47 0:00 nginx: worker process Kazuki 7339 0.0 0.1 110492 1948 pts/0 S+ 06:23 0:00 grep --color=auto nginx
[Kazuki@ip-10-0-0-59 log]$ ps -ef | grep nginx | grep -v grep root 4270 1 0 Sep25 ? 00:00:00 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf nginx 6439 4270 0 00:47 ? 00:00:00 nginx: worker process

unicornを起動した状態でIPアドレスにアクセスすると以下の様になってます。
イメージ説明
一ヶ月くらいデプロイできない状態が続いており、かなり苦しいです。解決策を知っている方がいれば教えていただきたいです!

##unicorn関連
unicornの起動確認

[Kazuki@ip-10-0-0-59 ~]$ ps -ef | grep unicorn | grep -v grep Kazuki 7375 1 0 06:25 ? 00:00:00 unicorn_rails master -c /var/www/rails/ToDoGame/backend/config/unicorn.conf.rb -D -E production Kazuki 7380 7375 0 06:25 ? 00:00:00 unicorn_rails worker[0] -c /var/www/rails/ToDoGame/backend/config/unicorn.conf.rb -D -E production Kazuki 7381 7375 0 06:25 ? 00:00:00 unicorn_rails worker[1] -c /var/www/rails/ToDoGame/backend/config/unicorn.conf.rb -D -E production

unix:/var/www/rails/ToDoGame/backend/tmp/sockets/.unicorn.sock の存在確認

/var/www/rails/ToDoGame/backend/tmp/sockets

[Kazuki@ip-10-0-0-59 sockets]$ ls -a . .. .unicorn.sock

気になるのがlsだけでは表示されないことです。

[Kazuki@ip-10-0-0-59 sockets]$ ls
[Kazuki@ip-10-0-0-59 ~]$ ls -l /var/www/rails/ToDoGame/backend/tmp/sockets/.unicorn.sock srwxrwxrwx 1 Kazuki Kazuki 0 Sep 26 06:25 /var/www/rails/ToDoGame/backend/tmp/sockets/.unicorn.sock

/var/www/rails/ToDoGame/backend/log/unicorn.log

I, [2020-09-26T06:25:59.160571 #7375] INFO -- : Refreshing Gem list I, [2020-09-26T06:25:59.815317 #7375] INFO -- : unlinking existing socket=/var/www/rails/ToDoGame/backend/tmp/sockets/.unicorn.sock I, [2020-09-26T06:25:59.815457 #7375] INFO -- : listening on addr=/var/www/rails/ToDoGame/backend/tmp/sockets/.unicorn.sock fd=9 I, [2020-09-26T06:25:59.820600 #7375] INFO -- : master process ready I, [2020-09-26T06:25:59.827812 #7381] INFO -- : worker=1 ready I, [2020-09-26T06:25:59.828147 #7380] INFO -- : worker=0 ready

気になる点
/var/www/rails/ToDoGame/backend/tmp/sockets

[Kazuki@ip-10-0-0-59 sockets]$ sudo vi .unicorn.sock

を行うと".unicorn.sock" [Permission Denied]と表示されます。
これが原因なのでしょうか?

##追記
/var/www/rails/ToDoGame/backend/log/nginx.error.log

[error] 6439#0: *251 connect() to unix:/var/www/rails/ToDoGame/backend/tmp/sockets/.unicorn.sock failed (111: Connection refused) while connecting to upstream, client: xxx.xx.xx.xx, server: IPアドレス, request: "GET / HTTP/1.1", upstream: "http://unix:/var/www/rails/ToDoGame/backend/tmp/sockets/.unicorn.sock:/", host: "IPアドレス"

http://unix:/var/www/rails/ToDoGame/backend/tmp/sockets/.unicorn.sock:/ が怪しいのでしょうか?
この場合unix:/var/www/rails/ToDoGame/backend/tmp/sockets/.unicorn.sock:/になるべきなのでしょうか?

またclientとserverは異なる数字でも問題ないのでしょうか?

この問題が原因だった場合nginx側の設定をどの様に変更すれば解決できるのでしょうか?
わかる方がいれば教えて頂きたいですm(_ _)m

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

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

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

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

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

guest

回答2

0

自己解決

一ヶ月色々と試してみましたが、原因の特定ができずインスタンスを作り直したりしましたが結果は同じでした。今回の原因はRailsをAPIモードで作成しているのが原因でHTTP ERROR 404が返ってきているのではないかと思っています。なのでバックエンド側をherokuにデプロイし、フロント側をAWSにデプロイしようと思っています。以下にデプロイ中のエラーを解決策と共にまとめてみたので参考になると嬉しいです。Nginx + Unicorn + Rails ドハマリしたエラーを3つ解説。

投稿2020/10/03 04:18

raamenzurururu

総合スコア11

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

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

0

  1. unicorn は起動出来ていますか
  2. unix:/var/www/rails/ToDoGame/backend/tmp/sockets/.unicorn.sock は存在しますか?
  3. そのsockファイルの作成日時はunicorn起動した日時ですか

投稿2020/09/26 13:38

winterboum

総合スコア23347

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

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

raamenzurururu

2020/09/26 14:16

winterboumさん、コメントありがとうございます。 1と2は確認できましたのでunicorn関連として提示しました。残りの3、の「そのsockファイルの作成日時はunicorn起動した日時ですか」の確認方法がわかりません。 調べ方を教えていただきたいです。 本当に悩んでいたのでコメントがついただけでも嬉しいです。
winterboum

2020/09/26 21:01

ls -l /var/www/rails/ToDoGame/backend/tmp/sockets/.unicorn.sock
raamenzurururu

2020/09/26 22:46

教えていただきありがとうございます。 確認したところ作成日時が起動した日時になっていました。 質問内容にls -lの結果を提示しました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問