🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
unicorn

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

Ruby on Rails 4

Ruby on Rails4はRubyによって書かれたオープンソースのウェブフレームワークです。 Ruby on Railsは「設定より規約」の原則に従っており、効率的に作業を行うために再開発を行う必要をなくしてくれます。

AWS(Amazon Web Services)

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

Q&A

解決済

1回答

676閲覧

aws上のRailsアプリが動作しなくなった(/tmp/sockets/.unicorn.sock failed (111: Connection refused)

begenner

総合スコア80

unicorn

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

Ruby on Rails 4

Ruby on Rails4はRubyによって書かれたオープンソースのウェブフレームワークです。 Ruby on Railsは「設定より規約」の原則に従っており、効率的に作業を行うために再開発を行う必要をなくしてくれます。

AWS(Amazon Web Services)

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

0グッド

1クリップ

投稿2019/10/23 22:30

編集2019/10/24 01:50

現在AWS(amazon linux2)にRailsアプリをデプロイし、ブラウザでの動作確認をしていました。

本日

  • deviseによるパスワードリセットの動作確認 (手動、Gmailを利用)

をするためEC2インスタンスを停止、再起動させて以降Railsアプリが動作しなくなってしまいました。

【前提条件】
下記の語句は置き換えてあります

  • Railsのアプリ名: 【webapp】
  • 取得済みのドメイン: 【myDomain】
  • 自分のグローバルIP: 【my_global_ip】

エラーログを調べると

  • nginx

bash

1$ cat /var/www/rails/【webapp】/log/nginx.error.log | tail -n 1 2 3# [error] 3103#0: *1 connect() to unix:/var/www/rails/【webapp】/tmp/sockets/.unicorn.sock failed (111: Connection refused) while connecting to upstream, client: 【my_global_ip】, server: 【myDomain】, request: "GET / HTTP/1.1", upstream: "http://unix:/var/www/rails/【webapp】/tmp/sockets/.unicorn.sock:/", host: "【mydomain】"

と表示されぐぐってみると

が一番近かったように感じましたが解決策が自分の症状とはあっていないように感じるため
どこの設定が間違っているか全くわかりません(m_ m)
もしわかる方がいらっしゃればご教授いただきますようよろしくお願いいたします(m
_m)

動作環境

Rails

  • Ruby: 2.4.5
  • Rails: 4.2.11.1
  • nginx: 1.16.1

AWS

  • Amazon linux2
  • EC2、RDS(MySQL)
  • HTTPS(Route53)設定済

エラー内容

bash

1[error]: *1 directory index of "/var/www/rails/【webapp】/public/" is forbidden, client: 【my_global_ip】, server: 【myDomain】, request: "GET / HTTP/1.1", host: "【myDomain】"

期待する動作

  • nginxのエラーがなくなり、AWS上のRailsアプリの動作が確認できること

該当しそうなコード

  • (1 / 2) /etc/nginx/conf.d/【webapp】.conf

bash

1# /etc/nginx/conf.d/【webapp】.conf 2 3# log directory 4error_log /var/www/rails/【webapp】/log/nginx.error.log; 5access_log /var/www/rails/【webapp】/log/nginx.access.log; 6 7upstream app_server { 8 # for UNIX domain socket setups 9 server unix:/var/www/rails/【webapp】/tmp/sockets/.unicorn.sock fail_timeout=0; 10} 11 12server { 13 listen 443 ssl; 14 15 server_name 【myDomain】; 16 17 keepalive_timeout 5; 18 client_max_body_size 2G; 19 20 # path for static files 21 root /var/www/rails/【webapp】/public; 22 # root /var/www/rails/【myDomain】/public; 23 24 # page cache loading 25 try_files $uri/index.html $uri @app; 26# try_files $uri/index.html $uri @app $uri @app_server; 27 28 location @app { 29 proxy_set_header X-Real-IP $remote_addr; 30 proxy_set_header X-Forwarded-Proto $scheme; 31 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 32 proxy_set_header Host $http_host; 33 } 34 35 # Railsエラーページ 36 error_page 500 502 503 504 /500.html; 37 38 location = /500.html { 39 root /var/www/rails/【webapp】/public; 40 } 41 42# location ^~ /.well-known/acme-challenge/ { 43# root /var/www/letsencrypt-webroot; 44# } 45 # listen 443 ssl; # managed by Certbot 46 ssl_certificate /etc/letsencrypt/live/【myDomain】/fullchain.pem; # managed by Certbot 47 ssl_certificate_key /etc/letsencrypt/live/【myDomain】/privkey.pem; # managed by Certbot 48 include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot 49 ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot 50 51} 52 53#server { 54# listen 80; 55# server_name 【myDomain】; 56# return 301 https://$host$request_uri; 57#}

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

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

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

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

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

guest

回答1

0

自己解決

原因となっていた要素はRailsアプリの方にありました(m_ _m)

原因

エラーログ

bash

1# unicornのログを設定した場所を参照しています 2$cat /var/www/rails/【webapp】/log/unicorn.log 3# : 4# NoMethodError: undefined method `public_file_server' for #<Rails::Application::Configuration:0x000056341b559740> 5# Did you mean? public_send

解決法

下記の記事はAWSでも使える内容があるため参考にしました。
Rails4 asset pipeline関連設定まとめ(Heroku対応込) - Qiita

ruby

1# config/environments/production.rb 2config.serve_static_assets = true # rails4.1以前 3config.serve_static_files = true # rails4.2〜 4config.public_file_server.enabled = true # rails5〜

投稿2019/10/23 22:59

begenner

総合スコア80

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問