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

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

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

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

Ubuntu

Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

Ruby on Rails

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

Q&A

1回答

1468閲覧

Rails+Puma+Nginxの接続の仕方がわからない

kozica

総合スコア58

nginx

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

Ubuntu

Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

Ruby on Rails

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

0グッド

0クリップ

投稿2018/07/20 01:36

編集2018/07/20 07:36

AWSのEC2にデプロイしようとして、Pumaとnginxの設定をしたことがなくどうすればいいかわからず困ってます。
操作はsshで入ってしております。
これをしないとrailsのviewを表示できないので、お力を貸して頂きたいです。
当方、初心者でして必要事項の記入漏れや受け答えがうまくできないかもしれないですけどよろしくお願い致します。

・求める成果
Railsのviewを表示させたい
・実行できないと思われる原因
nginxと接続されていないようでrailsの起動後にブラウザでwex01.cloud24.jp:3000と打っても応答がなくタイムアウトします。
rails側は何もログが出ていないです。
wex01.cloud24.jpだけならnginxの"Welcome nginx..."indexページが表示されます。

・開発環境
ubuntu:18.04
ruby:2.5.1
rails:5.2.0
nginx:1.12.1
Puma:3.12.0

Railsアプリ"webex"パス
/home/"ユーザ名"/workspace/working/webex

URL:wex01.cloud24.jp

###config/puma.rb

# Puma can serve each request in a thread from an internal thread pool. # The `threads` method setting takes two numbers: a minimum and maximum. # Any libraries that use thread pools should be configured to match # the maximum value specified for Puma. Default is set to 5 threads for minimum # and maximum; this matches the default thread size of Active Record. # threads_count = ENV.fetch("RAILS_MAX_THREADS") { 5 } threads threads_count, threads_count # Specifies the `port` that Puma will listen on to receive requests; default is 3000. # port ENV.fetch("PORT") { 3000 } # Specifies the `environment` that Puma will run in. # environment ENV.fetch("RAILS_ENV") { "development" } app_root = File.expand_path("../..", __FILE__) bind "unix://#{app_root}/tmp/sockets/puma.sock" # Specifies the number of `workers` to boot in clustered mode. # Workers are forked webserver processes. If using threads and workers together # the concurrency of the application would be max `threads` * `workers`. # Workers do not work on JRuby or Windows (both of which do not support # processes). # # workers ENV.fetch("WEB_CONCURRENCY") { 2 } # Use the `preload_app!` method when specifying a `workers` number. # This directive tells Puma to first boot the application and load code # before forking the application. This takes advantage of Copy On Write # process behavior so workers use less memory. # # preload_app! # Allow puma to be restarted by `rails restart` command. plugin :tmp_restart

試したこと
$ sudo curl -v http://localhost:3000/

  • Trying 127.0.0.1...
  • TCP_NODELAY set
  • connect to 127.0.0.1 port 3000 failed: 接続を拒否されました
  • Failed to connect to localhost port 3000: 接続を拒否されました
  • Closing connection 0

curl: (7) Failed to connect to localhost port 3000: 接続を拒否されました
###nginx.conf

user appusr; worker_processes 1; error_log /var/log/nginx/error.log; pid /var/run/nginx.pid; events { worker_connections 1024; } http { upstream backend { server unix:/home/kkawahara/workspace/working/webex/tmp/sockets/puma.sock max_fails=3 fail_timeout=10s; keepalive 15; } include /etc/nginx/mime.types; default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main; sendfile on; #tcp_nopush on; #keepalive_timeout 0; keepalive_timeout 65; include /etc/nginx/conf.d/*.conf; index index.html index.htm; server { listen 80; server_name localhost; root /usr/share/nginx/html; location / { } error_page 404 /404.html; location = /40x.html { } error_page 500 502 503 504 /50x.html; location = /50x.html { } location ~ .php$ { proxy_pass http://backend; } } }

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

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

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

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

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

ryochin

2018/07/20 05:39

どんな成果が欲しくて、実際にどういう操作をして、その結果どうなっているのかを具体的に示して下さい。
kozica

2018/07/20 05:45

投稿を編集しました。これでよろしいですか?
ryochin

2018/07/20 06:38

「反応がありません」というのは、具体的にどう実施して(ブラウザ? curl 等?)どの HTTP ステータスが返りますか? (500?) rails と、それから nginx のログも欲しいところです。情報が全然足りません・・
ryochin

2018/07/20 06:44

rails は起動していますか? どういったコマンドで起動しましたか? rails c コマンドでコンソールは立ち上がりますか?
kozica

2018/07/20 06:48

rails sで起動しています。rails cも問題なく起動します。railsの起動は問題ないと思うのですが、記載しているとおりnginxとpumaの設定をしていないので接続がされていないためでは?ということです
kozica

2018/07/20 06:49

そのためpuma.rbとnginx.confの設定はどうするのかを知りたいんです。
ryochin

2018/07/20 06:53

サーバ上から curl -v http://localhost:3000/ と叩くと(タイムアウトせず)なにか表示されますか? ポートがふさがっている気がします。Linux なら、iptables 等の設定を確認してみてください。
ryochin

2018/07/20 06:55

そもそも nginx.conf に proxy_pass の設定をしていますか? nginx.conf の全文を掲示願います。
kozica

2018/07/20 06:58

そのそもそもを知りたんです(笑)。記載しているとおり設定がわからないので止まってますと書いてます
kozica

2018/07/20 07:03

当方初心者なため理解が不十分なところが多くすいません
guest

回答1

0

失礼しました。config/puma.rb でたとえばこのようにソケットを指定して起動します。

app_root = File.expand_path('../..', __FILE__) bind "unix://#{app_root}/tmp/sockets/puma.sock"

nginx.conf で、適切な場所に upstream の指定をします。

http { .... upstream backend { server unix:/home/"ユーザ名"/workspace/working/webex/tmp/sockets/puma.sock max_fails=3 fail_timeout=10s; keepalive 15; } server { .... location / { proxy_pass http://backend; } } }

少し直しました。proxy_passlocation 配下ですね。

ネットにたくさん情報がありますので、nginx upstream puma などで検索してみてください。

投稿2018/07/20 07:05

編集2018/07/20 07:16
ryochin

総合スコア280

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

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

kozica

2018/07/20 07:08 編集

ありがとうございます。 自分でも調べて似たようなのは見つけているんですが、自分の環境だとどこをどう変えればいいのかがわからなかったので、具体的に書いて頂いて非常にありがたいです! これで試してみます
kozica

2018/07/20 07:18

proxy_pass http: //backend のことろはhttp://home/"ユーザ名"/workspace/working/webex/tmp/sockets/puma.sock とすればいいのでしょうか??
ryochin

2018/07/20 07:22

いいえ、`http://backend;` とそのまま書きます。この行はどの `upstream` かを指定するものだからです。ちなみに `backend` の部分は好きな文字列にできます。
kozica

2018/07/20 07:22

#{app_root}とは何をいれればいいのでしょうか? もう10時間以上調べてもわからないので、教えて頂けると嬉しいです、、、
ryochin

2018/07/20 07:25

この2行をそのままコピペして動くと思います。1行目で定義した変数を2行目で使っているだけです。
kozica

2018/07/20 07:38

ブラウザで開けませんでした、、、 開くときはwex01.cloud24.jp:3000で開けばいいのですよね?? 投稿を編集してnginx.confを追記しました。
ryochin

2018/07/20 07:47

rails なのに、なぜか ~ .php$ に backend が指定されていますね。落ち着いて設定を見直してみてください。それから、listen 80 しているので通常は http://wex01.cloud24.jp/ へアクセスすることになるでしょう。きちんと理解してから設定・運用しましょう。
kozica

2018/07/20 08:21

~.php$は何に変えればよろしいですか? 何十時間もかけて調べてもわからないのでここで聞いてるんです(泣) railsのviewをブラウザで表示させるためにはwex01.cloud24.jp:3000/(railsで作成したページ)という形じゃなくていいんですか?
ryochin

2018/07/20 10:29

失礼ながら、まず基礎的な勉強をして経験を積まれたほうがよろしいかと。puma/nginx の連携については回答しましたので以上とさせてください。nginx そのものの設定については、別の質問となりますので、新たに質問してみてください。 また冷たいようですが、何十時間かかったかどうかは、他人には関係のないことです。甘えられても困ります、いっそうの努力を期待します! それでは。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.37%

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

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

質問する

関連した質問