PG::ConnectionBad:无法连接到服务器:在使用 passenger、nginx 和 capistrano 部署 rails 应用程序之后

PG::ConnectionBad: could not connect to server: after deploying rails app using passenger, nginx and capistrano

在将 Rails 应用程序重新部署到 Ubuntu 16.04.1 x64 VPS 之后,服务器无法启动。从昨天开始,我一直在尝试解决原因,但没有任何运气。现在我完全无助,别无选择。

部署停止于:

deploy:migrating 01 $HOME/.rbenv/bin/rbenv exec bundle exec rake db:migrate 01 rake aborted! 01 PG::ConnectionBad: could not connect to server: Connection refused 01 Is the server running on host "127.0.0.1" and accepting 01 TCP/IP connections on port 5432?

由于此错误消息,我已根据本文 http://www.railszilla.com/postgresql-tcpip-connections-port-5432/coffee-break

pg_hba.confpostgresql.conf 中的设置更改为以下示例
`pg_hba.conf`
# Database administrative login by Unix domain socket
local   all             postgres                                peer

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     md5
# IPv4 local connections:
host    all             all             0.0.0.0/0       trust
# IPv6 local connections:
host    all             all             ::1/128                 md5
# Allow replication connections from localhost, by a user with the
# replication privilege.
#local   replication     postgres                                peer
#host    replication     postgres        127.0.0.1/32            md5
#host    replication     postgres        ::1/128                 md5

以及 postgresql.conf 设置(见下文)。

# - Connection Settings -

listen_addresses = '*'          # what IP address(es) to listen on;
                                    # comma-separated list of addresses;
                                    # defaults to 'localhost'; use '*' for all
                                    # (change requires restart)
port = 5432                             # (change requires restart)
max_connections = 100                   # (change requires restart)
#superuser_reserved_connections = 3     # (change requires restart)
unix_socket_directories = '/var/run/postgresql' # comma-separated list of 
directories
                                    # (change requires restart)
#unix_socket_group = ''                 # (change requires restart)
#unix_socket_permissions = 0777         # begin with 0 to use octal notation
                                    # (change requires restart)
#bonjour = off                          # advertise server via Bonjour
                                    # (change requires restart)
#bonjour_name = ''                      # defaults to the computer name
                                    # (change requires restart)

# - Security and Authentication -

sudo service postgresql restart 重新启动后,我再次部署后仍然出现相同的错误。

更新,database.yml 来自服务器 这是来自服务器的 database.yml

production:
 adapter: postgresql
 host: 127.0.0.1
 database: databasename
 username: username
 password: password
 encoding: unicode
 pool: 5

/var/log/nginx/error.log最后一行是这样的[ 2017-09-27 13:09:13.4321 1530/7fa87d58e700 age/Cor/Con/CheckoutSession.cpp:285 ]: [Client 1-149] Cannot checkout session because a spawning error occurred. The identifier of the error is c620ca8b. Please see earlier logs for details about the error.

正如它所说,我查看了之前的日志。以下是整个日志。它指的是 order_notifier.rb 应该有一个错误的语法。

这是错误的完整日志 c620ca8b :

    [ 2017-09-27 13:02:37.1572 1530/7fa87d58e700 age/Cor/Con/CheckoutSession.cpp:285 ]: [Client 1-148] Cannot checkout session because a spawning error occurred. The identifier of the error is 446bb8e9. Please see earlier logs for details about the error.
App 20925 stdout:
App 20925 stdout:
[ 2017-09-27 13:09:13.4236 1530/7fa88401a700 age/Cor/App/Implementation.cpp:304 ]: Could not spawn process for application /home/deploy/hlinreykdal/current: An error occurred while starting up the preloader.
  Error ID: c620ca8b
  Error details saved to: /tmp/passenger-error-Mirupe.html
  Message from application: /home/deploy/hlinreykdal/releases/20170926133751/app/mailers/order_notifier.rb:8: syntax error, unexpected tLABEL
    mail (to: order.email, subject: 'Hlin Reykdal Concept Store',
             ^
/home/deploy/hlinreykdal/releases/20170926133751/app/mailers/order_notifier.rb:8: syntax error, unexpected tLABEL, expecting '='
    mail (to: order.email, subject: 'Hlin Reykdal Concept Store',
                                   ^
/home/deploy/hlinreykdal/releases/20170926133751/app/mailers/order_notifier.rb:8: syntax error, unexpected ',', expecting keyword_end
    mail (to: order.email, subject: 'Hlin Reykdal Concept Store',
                                                                 ^
/home/deploy/hlinreykdal/releases/20170926133751/app/mailers/order_notifier.rb:12: syntax error, unexpected ')', expecting keyword_end
/home/deploy/hlinreykdal/releases/20170926133751/app/mailers/order_notifier.rb:21: syntax error, unexpected tLABEL
    mail (to: order.email, subject: 'Order Shipped')
             ^
/home/deploy/hlinreykdal/releases/20170926133751/app/mailers/order_notifier.rb:21: syntax error, unexpected tLABEL, expecting '='
    mail (to: order.email, subject: 'Order Shipped')
                                   ^
/home/deploy/hlinreykdal/releases/20170926133751/app/mailers/order_notifier.rb:21: syntax error, unexpected ')', expecting keyword_end (SyntaxError)
  /home/deploy/hlinreykdal/shared/bundle/ruby/2.3.0/gems/activesupport-4.2.5/lib/active_support/dependencies.rb:244:in `rescue in load_dependency'
  /home/deploy/hlinreykdal/shared/bundle/ruby/2.3.0/gems/activesupport-4.2.5/lib/active_support/dependencies.rb:237:in `load_dependency'
  /home/deploy/hlinreykdal/shared/bundle/ruby/2.3.0/gems/activesupport-4.2.5/lib/active_support/dependencies.rb:274:in `require'
  /home/deploy/hlinreykdal/shared/bundle/ruby/2.3.0/gems/activesupport-4.2.5/lib/active_support/dependencies.rb:360:in `require_or_load'
  /home/deploy/hlinreykdal/shared/bundle/ruby/2.3.0/gems/activesupport-4.2.5/lib/active_support/dependencies.rb:317:in `depend_on'
  /home/deploy/hlinreykdal/shared/bundle/ruby/2.3.0/gems/activesupport-4.2.5/lib/active_support/dependencies.rb:233:in `require_dependency'
  /home/deploy/hlinreykdal/shared/bundle/ruby/2.3.0/gems/railties-4.2.5/lib/rails/engine.rb:472:in `block (2 levels) in eager_load!'
  /home/deploy/hlinreykdal/shared/bundle/ruby/2.3.0/gems/railties-4.2.5/lib/rails/engine.rb:471:in `each'
  /home/deploy/hlinreykdal/shared/bundle/ruby/2.3.0/gems/railties-4.2.5/lib/rails/engine.rb:471:in `block in eager_load!'
  /home/deploy/hlinreykdal/shared/bundle/ruby/2.3.0/gems/railties-4.2.5/lib/rails/engine.rb:469:in `each'
  /home/deploy/hlinreykdal/shared/bundle/ruby/2.3.0/gems/railties-4.2.5/lib/rails/engine.rb:469:in `eager_load!'
  /home/deploy/hlinreykdal/shared/bundle/ruby/2.3.0/gems/railties-4.2.5/lib/rails/engine.rb:346:in `eager_load!'
  /home/deploy/hlinreykdal/shared/bundle/ruby/2.3.0/gems/railties-4.2.5/lib/rails/application/finisher.rb:56:in `each'
  /home/deploy/hlinreykdal/shared/bundle/ruby/2.3.0/gems/railties-4.2.5/lib/rails/application/finisher.rb:56:in `block in <module:Finisher>'

这是 order_notifier.rb 我看不出它有什么问题,也许这里有人可以。

class OrderNotifier < ApplicationMailer

   default from: 'Hlin Reykdal Concept Store <hlin@hlinreykdal.com>'

    def received(order)
     @order = order
     mail (to: order.email, subject: 'Hlin Reykdal Concept Store')
    end

   def shipped(order)
    @order = order
    mail (to: order.email, subject: 'Order Shipped')
   end  
 end

我已经通过 sudo service nginx restart 重新启动了 nginx 并通过 bundle exec passenger-config restart-app 重新启动了应用程序但是运气不好,如果我再次部署仍然会遇到同样的错误。

我在整个网络上进行了谷歌搜索,并查看了堆栈中的数百篇帖子。似乎没有任何效果。现在我对此感到非常绝望。我之前在部署后遇到过类似的问题,但我总是设法解决它,但这似乎超出了我的范围。

更新

似乎 production log 卡在 23/5 2017 中,即使在我重新启动和部署之后也是如此。好像卡在邮件程序的错误中了??

I, [2017-05-23T11:01:44.741054 #1060]  INFO -- : Completed 500 Internal 
Server Error in 66ms (ActiveRecord: 4.2ms)
F, [2017-05-23T11:01:44.743481 #1060] FATAL -- :
 SocketError (getaddrinfo: Name or service not known):
 app/admin/order.rb:6:in `block (2 levels) in <top (required)>'


I, [2017-05-23T11:10:08.863192 #1060]  INFO -- : Started GET "/products/41" for 164.132.161.46 at 2017-05-23 11:10:08 +0000
I, [2017-05-23T11:10:08.876373 #1060]  INFO -- : Processing by ProductsController#show as */*
I, [2017-05-23T11:10:08.876536 #1060]  INFO -- :   Parameters: {"id"=>"41"}
D, [2017-05-23T11:10:08.881123 #1060] DEBUG -- :   ^[[1m^[[35mCart Load (0.7ms)^[[0m  SELECT  "carts".* FROM "carts" WHERE "carts"."id" =  LIMIT 1  [["id", nil]]
D, [2017-05-23T11:10:08.882685 #1060] DEBUG -- :   ^[[1m^[[36m (0.2ms)^[[0m  ^[[1mBEGIN^[[0m
D, [2017-05-23T11:10:08.887770 #1060] DEBUG -- :   ^[[1m^[[35mSQL (1.3ms)^[[0m  INSERT INTO "carts" ("created_at", "updated_at") VALUES (, ) RETURNING "id"  [["created_at", "2017-05-23 11:10:08.883411"], ["updated_at", "2017-05-23 11:10:08.883411"]]
D, [2017-05-23T11:10:08.890018 #1060] DEBUG -- :   ^[[1m^[[36m (0.7ms)^[[0m  ^[[1mCOMMIT^[[0m
D, [2017-05-23T11:10:08.893274 #1060] DEBUG -- :   ^[[1m^[[35mProduct Load (1.2ms)^[[0m  SELECT  "products".* FROM "products" WHERE "products"."slug" =   ORDER BY "products"."id" ASC LIMIT 1  [["slug", "41"]]
D, [2017-05-23T11:10:08.894865 #1060] DEBUG -- :   ^[[1m^[[36mProduct Load (0.4ms)^[[0m  ^[[1mSELECT  "products".* FROM "products" WHERE "products"."id" =  LIMIT 1^[[0m  [["id", 41]]
D, [2017-05-23T11:10:08.900733 #1060] DEBUG -- :   ^[[1m^[[35mLabel Load (1.2ms)^[[0m  SELECT  "labels".* FROM "labels" WHERE "labels"."id" =  LIMIT 1  [["id", 8]]
D, [2017-05-23T11:10:08.907954 #1060] DEBUG -- :   ^[[1m^[[36mProduct Load (0.6ms)^[[0m  ^[[1mSELECT  "products".* FROM "products" WHERE "products"."category_id" =   ORDER BY RANDOM() LIMIT 6^[[0m  [["category_id", 12]]
I, [2017-05-23T11:10:08.916955 #1060]  INFO -- :   Rendered products/show.html.erb within layouts/application (18.7ms)
D, [2017-05-23T11:10:08.920965 #1060] DEBUG -- :   ^[[1m^[[35mCategory Load (0.8ms)^[[0m  SELECT "categories".* FROM "categories"
D, [2017-05-23T11:10:08.924524 #1060] DEBUG -- :   ^[[1m^[[36mLabel Load (0.3ms)^[[0m  ^[[1mSELECT "labels".* FROM "labels"^[[0m
D, [2017-05-23T11:10:08.929926 #1060] DEBUG -- :   ^[[1m^[[35m (0.3ms)^[[0m  SELECT COUNT(*) FROM "product_items" WHERE "product_items"."cart_id" =   [["cart_id", 46319]]
I, [2017-05-23T11:10:08.930159 #1060]  INFO -- :   Rendered application/_navbar.html.erb (10.7ms)
I, [2017-05-23T11:10:08.931046 #1060]  INFO -- :   Rendered application/_message.html.erb (0.2ms)
I, [2017-05-23T11:10:08.932261 #1060]  INFO -- :   Rendered emaillist/_email.html.erb (0.6ms)
I, [2017-05-23T11:10:08.932381 #1060]  INFO -- :   Rendered application/_notifications.html.erb (0.9ms)
I, [2017-05-23T11:10:08.936424 #1060]  INFO -- :   Rendered application/_footer.html.erb (3.5ms)
I, [2017-05-23T11:10:08.936826 #1060]  INFO -- : Completed 200 OK in 60ms (Views: 36.7ms | ActiveRecord: 7.6ms)
I, [2017-05-23T11:12:35.005157 #1060]  INFO -- : Started GET "/labels/10" for 66.249.65.74 at 2017-05-23 11:12:35 +0000
I, [2017-05-23T11:12:35.040137 #1060]  INFO -- : Processing by LabelsController#show as HTML
I, [2017-05-23T11:12:35.040544 #1060]  INFO -- :   Parameters: {"id"=>"10"}
D, [2017-05-23T11:12:35.049755 #1060] DEBUG -- :   ^[[1m^[[36mCart Load (0.8ms)^[[0m  ^[[1mSELECT  "carts".* FROM "carts" WHERE "carts"."id" =  LIMIT 1^[[0m  [["id", nil]]
D, [2017-05-23T11:12:35.052776 #1060] DEBUG -- :   ^[[1m^[[35m (0.2ms)^[[0m  BEGIN
D, [2017-05-23T11:12:35.060048 #1060] DEBUG -- :   ^[[1m^[[36mSQL (0.9ms)^[[0m  ^[[1mINSERT INTO "carts" ("created_at", "updated_at") VALUES (, ) RETURNING "id"^[[0m  [["created_at", "2017-05-23 11:12:35.053857"], ["updated_at", "2017-05-23 11:12:35.053857"]]
D, [2017-05-23T11:12:35.061486 #1060] DEBUG -- :   ^[[1m^[[35m (0.6ms)^[[0m  COMMIT
D, [2017-05-23T11:12:35.065373 #1060] DEBUG -- :   ^[[1m^[[36mLabel Load (0.4ms)^[[0m  ^[[1mSELECT  "labels".* FROM "labels" WHERE "labels"."id" =  LIMIT 1^[[0m  [["id", 10]]
I, [2017-05-23T11:12:35.067624 #1060]  INFO -- : Completed 404 Not Found in 27ms (ActiveRecord: 3.0ms)
F, [2017-05-23T11:12:35.069957 #1060] FATAL -- :
ActiveRecord::RecordNotFound (Couldn't find Label with 'id'=10):
  app/controllers/labels_controller.rb:21:in `set_label'

rm /usr/local/var/postgres/postmaster.pid

重启 Postgresql

sudo service postgresql restart

按照此处提供的答案,我终于设法解决了我的问题:https://askubuntu.com/questions/810008/after-upgrade-14-04-to-16-04-1-postgresql-server-does-not-start

然后进行此处提供的修改:https://gist.github.com/GabLeRoux/0c60f9be0c28b6b41f64cb55474b0ccb

5 月应用程序已启动,再次 运行...