41166


多くの基本的な事を理解せず、見まね物まねでruby on rails
でアプリケーションを作り、ubuntuで自宅サーバーを立て、Nginxでウエブに公開している者です。

ずっと問題なく一応アプリは稼働していたのですが、昨日(1/17) 急にエラーメッセージ に「504 Gateway Time-
out」が出てきてネットからアクセス不可能になりました。

`apt-get update ; apt-get upgrade`を実行した後このメッセージが出始めました。今までずっと`apt-get update ;
apt-get upgrade`は問題なくできていました。

【ubuntu環境】

[code]

    root@****:~# cat /etc/lsb-release
    DISTRIB_ID=Ubuntu
    DISTRIB_RELEASE=16.04
    DISTRIB_CODENAME=xenial
    DISTRIB_DESCRIPTION="Ubuntu 16.04.3 LTS"
    
[/code]

【nginxエラーログ】

[code]

    /var/log/nginx/error.log
    
    018/01/18 17:31:56 [error] 1236#1236: *20 upstream timed out (110: Connection timed out) while reading response header from upstream
    , client: 192.168.210.4, server: 192.168.210.150, request: "GET /favicon.ico HTTP/1.1", upstream: "http://unix:/home/nagao/run/app_nagao2.
    
[/code]

【nginxバージョン】

[code]

    root@****:~# nginx -V
    nginx version: nginx/1.10.3 (Ubuntu)
    
[/code]

【nginx設定】  
/etc/nginx/conf.d/app_nagao2.conf

[code]

    upstream app_nagao2 {
        server unix:/home/nagao/run/app_nagao2.sock fail_timeout=0;
    }
    
    server {
        listen 80;
        server_name 192.168.210.150;
    
        root /home/nagao/run/app_nagao2/public; # アプリケーション名を記述
    
        try_files $uri/index.html $uri @app_nagao2; # アプリケーション名を記述
    
        location /{
            proxy_pass http://app_nagao2; # アプリケーション名を記述
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header Host $http_host;
            proxy_redirect off;
        }
    
        error_page 500 502 503 504 /500.html;
        client_max_body_size 4G;
        keepalive_timeout 10;
    }
    
[/code]

ruby on rails は問題なく動いているようでエラーログも出ていません。  
何か問題があるようでしたら教えてください(明日から3日ぐらいアクセスできません)。

【追加部分】  
遅れて申し訳ありません。  
一応自分でテストできた事は下記です。

ファイル：/etc/nginx/nginx.confの中を下記の様に一部変更しました。

[code]

       include /etc/nginx/sites-enabled/*;
    #  include /etc/nginx/conf.d/*.conf;=>コメントアウトしたのですがうまく表示されません。
    
[/code]

これはユーザー設定ファイル(/etc/nginx/conf.d/app_nagao2.conf)を読ませないと言うことです。  
結果は「Welcome to Nginx」なので
take88さんが言われているようにNginxには問題無いのではないかと思います。通常は反対で(include /etc/nginx/sites-
enabled/*;)行をコメントアウトしています。

次に下記ファイル(~/bin/run_app_nagao.sh)のpumaの引数 -d
を取り除いて対話形式で`run_app_nagao.sh`を実行したところ、pumaのバージョンが低いようなメッセージがでました(すみません、ログは取っていません)。  
pumaのバージョンを上げて(3.11.?=>忘れました)app_nagao2のvendor以下のファイルを削除して`bunndle install
--path vendor/bundle`で実行したところ、今度はわけのわからないほどエラーでました。(すみません、これもログを取っていません。)  
それで`gem update`を実行してpumaのバージョンは最新のものだけにして`bundle
install`して実行しましたがやはりエラーわんさかです。エラーログ、必要ありそうなファイルを下記に挙げました。これで何かわかるでしょうか？  
ちなみにdevelopment環境(rails s -b 0.0.0.0)では正常に稼働しているように見えます。

* * *
[code]

    xxxx@yyyyy:~/bin$ ./run_app_nagao.sh
    [1563] Puma starting in cluster mode...
    [1563] * Version 3.11.2 (ruby 2.4.1-p111), codename: Love Song
    [1563] * Min threads: 8, max threads: 8
    [1563] * Environment: production
    [1563] * Process workers: 8
    [1563] * Phased restart available
    [1563] * Listening on unix:///home/nagao/run/app_nagao2.sock
    [1563] Use Ctrl-C to stop
    [1593] + Gemfile in context: /home/nagao/run/app_nagao2/Gemfile
    [1597] + Gemfile in context: /home/nagao/run/app_nagao2/Gemfile
    [1601] + Gemfile in context: /home/nagao/run/app_nagao2/Gemfile
    [1607] + Gemfile in context: /home/nagao/run/app_nagao2/Gemfile
    [1605] + Gemfile in context: /home/nagao/run/app_nagao2/Gemfile
    [1613] + Gemfile in context: /home/nagao/run/app_nagao2/Gemfile
    [1617] + Gemfile in context: /home/nagao/run/app_nagao2/Gemfile
    [1621] + Gemfile in context: /home/nagao/run/app_nagao2/Gemfile
    /home/nagao/.rbenv/versions/2.4.1/lib/ruby/gems/2.4.0/gems/bundler-1.16.1/lib/bundler/runtime.rb:313:in `check_for_activated_spec!': /home/nagao/.rbenv/versions/2.4.1/lib/ruby/gems/2.4.0/gems/bundler-1.16.1/lib/bundler/runtime.rb:313:in `check_for_activated_spec!': You have already activated puma 3.11.2, but your Gemfile requires puma 3.7.1. Prepending `bundle exec` to your command may solve this. (Gem::LoadError)
            from /home/nagao/.rbenv/versions/2.4.1/lib/ruby/gems/2.4.0/gems/bundler-1.16.1/lib/bundler/runtime.rb:31:in `block in setup'
            from /home/nagao/.rbenv/versions/2.4.1/lib/ruby/2.4.0/forwardable.rb:229:in `each'
            from /home/nagao/.rbenv/versions/2.4.1/lib/ruby/2.4.0/forwardable.rb:229:in `each'
    
[/code]

* * *

(~/bin/run_app_nagao.sh)

[code]

    #!/bin/sh
      cd /home/nagao/run/app_nagao2
    
    rails assets:precompile RAILS_ENV=production
    APP_NAGAO2_DATABASE_PASSWORD=******* SECRET_KEY_BASE=$(rails secret) RAILS_SERVE_STATIC_FILES=true \
    RAILS_ENV=production puma  -w 8
    
[/code]

* * *

(~/rails-data/app_nagao2/Gemfile)抜粋

[code]

    .
    .
    ruby '2.4.1'
    gem 'rails', '~> 5.0.1'
    gem 'puma', '~> 3.7.0'
    ------------------------------------------------------
    (~/rails-data/app_nagao2/config/puma.rb)
    _proj_path = "#{File.expand_path("../..", __FILE__)}"
    _proj_name = File.basename(_proj_path)
    _home = ENV.fetch("HOME") { "/home/nagao" }
    
    pidfile "#{_home}/run/#{_proj_name}.pid"
    bind "unix://#{_home}/run/#{_proj_name}.sock"
    directory _proj_path
    
    
    threads_count = ENV.fetch("RAILS_MAX_THREADS") { 8 }.to_i
    threads threads_count, threads_count
    
    # Specifies the `port` that Puma will listen on to receive requests, default is 3000.
    #
    _environment_ = ENV.fetch("RAILS_ENV") { "development" }
    if _environment_ == "development"
      port        ENV.fetch("PORT") { 3000 }
    end
    plugin :tmp_restart
    
[/code]

* * *
[code]

    xxxx@yyyy:~/rails-data/app_nagao2$ gem list | grep puma
    
[/code]

##  puma (3.11.2)

(rubyバージョン)  
xxxx@yyyy:~$ ruby -v

## ruby 2.4.1p111 (2017-03-22 revision 58053) [x86_64-linux]

(railsバージョン)  
xxxx@yyyy:~$ rails -v

## Rails 5.1.4

(gemバージョン)  
xxxx@yyyy:~$ gem -v

## 2.7.4


CC BY-SA 3.0
2018-01-18T11:19:04.707
41062
2018-01-24T23:03:41.097
2018-01-24T11:57:24.253
14412
14412
question
ruby-on-rails ubuntu nginx
apt-get upgrade 後「504 Gateway Time-out」エラーが出る


あてずっぽうですが、タイムアウトしているとログに出ているので Nginx側のタイムアウトの設定をいじってみると何か変化ないでしょうか

[code]

       location /{
            proxy_pass http://app_nagao2; # アプリケーション名を記述
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header Host $http_host;
            proxy_redirect off;
            proxy_read_timeout 60s;
            proxy_connect_timeout 60s;
            proxy_send_timeout 60s;
        }
    
[/code]


CC BY-SA 3.0
2018-01-19T10:33:14.973
41091
2018-01-19T10:33:14.973
5008
41062
answer


改良の余地はありそうですが,いろいろやってみた結果  
一応下記で正常にアプリは動いているようです。  
どうもありがとうございました。

[code]

    #!/bin/sh
    APP_NAME=app_nagao2
    USER=xxxxx
    RAILS_ENV=production
    
    cd /home/$USER/run/$APP_NAME
    
    rails assets:precompile RAILS_ENV=$RAILS_ENV
    APP_NAGAO2_DATABASE_PASSWORD=***** SECRET_KEY_BASE=$(rails secret) RAILS_SERVE_STATIC_FILES=true \
    RAILS_ENV=$APP_NAME bundle exec puma -d -e production -C config/puma.rb
    
[/code]


CC BY-SA 3.0
2018-01-24T01:24:05.137
41166
2018-01-24T23:03:41.097
2018-01-24T23:03:41.097
14412
14412
41062
answer