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

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

ただいまの
回答率

90.32%

  • Ruby on Rails

    7687questions

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

  • Ubuntu

    1560questions

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

  • nginx

    904questions

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

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

受付中

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 526

kozica

score 41

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;
        }

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • ryochin

    2018/07/20 15:55

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

    キャンセル

  • kozica

    2018/07/20 15:58

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

    キャンセル

  • kozica

    2018/07/20 16:03

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

    キャンセル

回答 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_pass は location 配下ですね。

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

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/07/20 16:08 編集

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

    キャンセル

  • 2018/07/20 16:18

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

    キャンセル

  • 2018/07/20 16:22

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

    キャンセル

  • 2018/07/20 16:22

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

    キャンセル

  • 2018/07/20 16:25

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

    キャンセル

  • 2018/07/20 16:38

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

    キャンセル

  • 2018/07/20 16:47

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

    キャンセル

  • 2018/07/20 17:21

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

    キャンセル

  • 2018/07/20 19:29

    失礼ながら、まず基礎的な勉強をして経験を積まれたほうがよろしいかと。puma/nginx の連携については回答しましたので以上とさせてください。nginx そのものの設定については、別の質問となりますので、新たに質問してみてください。

    また冷たいようですが、何十時間かかったかどうかは、他人には関係のないことです。甘えられても困ります、いっそうの努力を期待します! それでは。

    キャンセル

同じタグがついた質問を見る

  • Ruby on Rails

    7687questions

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

  • Ubuntu

    1560questions

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

  • nginx

    904questions

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