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

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

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

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

Ruby on Rails

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

ルーティング

ルーティングとは、TCP/IPネットワークにおいて、目的のホストまでパケットを送る為のパス選定のプロセスを言います。

AWS(Amazon Web Services)

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

Capistrano

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

Q&A

解決済

2回答

1648閲覧

AWSにデプロイしたRailsアプリのルーティングエラー

ko_no

総合スコア16

unicorn

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

Ruby on Rails

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

ルーティング

ルーティングとは、TCP/IPネットワークにおいて、目的のホストまでパケットを送る為のパス選定のプロセスを言います。

AWS(Amazon Web Services)

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

Capistrano

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

0グッド

0クリップ

投稿2020/08/27 08:31

編集2020/08/28 06:12

前提・実現したいこと

先日railsで作成したチャットアプリをawsにてデプロイしました。
ですが、いざブラウザで開いてみるとcssの未反映と、ルーティングエラーが起きてしまいます、、、
自動デプロイのCapistranoを導入しているのですが、エラー文をみるとCapistranoで生成されたフォルダがreleaseフォルダ、currentフォルダが悪さをしているのは分かったのですが、検索の仕方が悪いのか修正の仕方がわからない状態です、、、

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

本番環境でもエラー文が出力されるようにしているのですが、ホーム画面からゲストログインしようとすると以下のエラー文が出力されます。
他の画面移動(リクエスト)ではエラーは発生しないです、、、
イメージ説明
上から3行目の

Rails.root: /var/www/tentyo-chat/releases/20200827071538

ここで本来Capstranoを使用している場合、「/var/www/アプリ名/current」を参照しなければならないと思うのですが、なぜがreleasesフォルダを参照しているので、ここが問題点かなと自分では考えております。
ここは問題ないだろうと検討がつきました!!

unicorn.rb↓

unicorn.rb

1#サーバ上でのアプリケーションコードが設置されているディレクトリを変数に入れておく 2app_path = File.expand_path('../../../', __FILE__) 3 4#アプリケーションサーバの性能を決定する 5worker_processes 1 6 7#アプリケーションの設置されているディレクトリを指定 8working_directory "#{app_path}/current" 9 10#Unicornの起動に必要なファイルの設置場所を指定 11pid "#{app_path}/shared/tmp/pids/unicorn.pid" 12 13#ポート番号を指定 14listen "#{app_path}/shared/tmp/sockets/unicorn.sock" 15 16#エラーのログを記録するファイルを指定 17stderr_path "#{app_path}/shared/log/unicorn.stderr.log" 18 19#通常のログを記録するファイルを指定 20stdout_path "#{app_path}/shared/log/unicorn.stdout.log" 21 22#Railsアプリケーションの応答を待つ上限時間を設定 23timeout 60 24 25 26 27preload_app true 28GC.respond_to?(:copy_on_write_friendly=) && GC.copy_on_write_friendly = true 29 30check_client_connection false 31 32run_once = true 33 34before_fork do |server, worker| 35 defined?(ActiveRecord::Base) && 36 ActiveRecord::Base.connection.disconnect! 37 38 if run_once 39 run_once = false # prevent from firing again 40 end 41 42 old_pid = "#{server.config[:pid]}.oldbin" 43 if File.exist?(old_pid) && server.pid != old_pid 44 begin 45 sig = (worker.nr + 1) >= server.worker_processes ? :QUIT : :TTOU 46 Process.kill(sig, File.read(old_pid).to_i) 47 rescue Errno::ENOENT, Errno::ESRCH => e 48 logger.error e 49 end 50 end 51end 52 53after_fork do |_server, _worker| 54 defined?(ActiveRecord::Base) && ActiveRecord::Base.establish_connection 55end

routes.rb↓

Rails.application.routes.draw do devise_for :users, controllers: { registrations: 'users/registrations', sessions: 'users/sessions' } devise_scope :user do get "sign_in", to: "users/sessions#new" get "sign_out", to: "users/sessions#destroy" post 'users/guest_sign_in', to: 'users/sessions#new_guest' end root 'groups#index' resources :groups do member do get :join end resources :messages end end

お忙しいとは思いますが、ご教授いただけると幸いですm(__)m

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

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

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

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

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

naokit-dev

2020/08/27 08:41

`app_path`はどこで定義されていますか?
ko_no

2020/08/27 09:07

config/unicorn.rbの一番上にて、「/var/www/tentyo-chat」で定義しているつもりです!!
naokit-dev

2020/08/27 09:30

`unicorn.rb`が `/var/www/tentyo-chat/releases/20200827071538` 配下にあるため相対パスだとうまく行かないと思われます と考えたのですが currentはシンボリックリンクであって実体は `/var/www/tentyo-chat/releases/20200827071538` にあるのであればそれで問題ない気もします ローカル環境では問題なく動作されているのですよね?
ko_no

2020/08/27 09:43

はい!ローカル環境では問題なく動いており、そのコードがec2へ反映もされています、、、
ko_no

2020/08/27 10:01

デプロイを繰り返したところ、エラー文の 「Rails.root: /var/www/tentyo-chat/releases/20200827071538」 のところの、最後の日時を示しているであろう数字がちゃんと変化しているので、releasesの最新のデータを表示すること自体には問題なさそうです、、、!
naokit-dev

2020/08/28 02:07

capistranoが最新のデプロイ内容に対して、 /currentディレクトリに対するシンボリックリンクを貼っているはずなので そこは問題ないと思ってきています 回答に書き加えた内容確認いただけましたか?
ko_no

2020/08/28 02:18

回答に追記していただいた内容先ほど気付きました、、、申し訳ないです。。。 先ほど質問を編集し、routes.rbを追記させていただきました! おそらくルーティングはない?、と思ってます、、、
naokit-dev

2020/08/28 02:23

GET /users/guest_sign_in に対応するルーティングがない気がしてそもそもそこが原因かと思っているのですが そうするとローカル環境でも同じ問題が起こりそうですが ルーティング、スクショでなくコードで貼ってください [Markdown記法を知って、愛される質問者になる方法 - 初学者が質問サイトでやってはいけないことと対策- - Qiita](https://qiita.com/naokit-dev/items/fc3772d9517a75f34e82)
ko_no

2020/08/28 02:32

確かにスクショよりコード貼った方が回答者様にとって扱いやすいですね、、、 全然気が付きませんでした、、、! こういったことを教えてもらうのが何気に一番助かります!ありがとうございます!
naokit-dev

2020/08/28 04:47

GET /users/guest_sign_in に対応するルーティングがない気がしてそもそもそこが原因かと思っているのですが そうするとローカル環境でも同じ問題が起こりそうですが ↑についてはどうですか?
ko_no

2020/08/28 05:30

ローカル環境では問題なく動いています、、、
guest

回答2

0

app_path = File.expand_path('../../../', __FILE__)

を絶対パスで与えてはどうですか?

追記

/users/guest_sign_inというリクエストに対応するルーティングはそんざいしますか?

投稿2020/08/27 09:10

編集2020/08/27 09:36
naokit-dev

総合スコア424

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

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

ko_no

2020/08/27 09:24

「app_path = File.expand_path('../../../', __FILE__)」 →「app_path = "/var/www/tentyo-chat"」 書き換えてみましたがダメでした、、、泣
guest

0

自己解決

ルーティングの9行目、

post 'users/guest_sign_in', to: 'users/sessions#new_guest'

上記のpostgetにしたところなぜか直りました、、、
(ローカル環境では逆に「postのルーティングがない!」とエラーになりましたが、、、)

納得できていませんが、とりあえずエラー自体は解消されたので「解決済み」にさせていただきます。

長い時間割いていただきましたnaokit-dev様、本当にありがとうございましたm(__)m

投稿2020/08/28 07:17

ko_no

総合スコア16

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問