0

我是 Ruby on Rails 的初学者,在部署我的 rails 应用程序(使用 nginx + unicorn)时遇到了一些困难。我不知道发生了什么,但这是我在启动 nginx 时在日志文件中遇到的错误类型:

2013/04/14 00:31:42 [error] 14469#0: *1 connect() to unix:/home/user/www/sahitoo/shared/sockets/unicorn.sock 
**failed (111: Connection refused)** while connecting to upstream, client: XX.XXX.XX.XX, server: myapp.com, 
request: "GET / HTTP/1.1", upstream: "http://unix:/home/user/www/sahitoo/shared/sockets/unicorn.sock:/", 
host: "www.XXXXX.com"

如果你能帮助找出问题,或者至少给我一些跟踪它的建议,那就太好了!非常感谢。

我还发布了 nginx.conf 文件:

user www-data;
worker_processes 4;
pid /var/run/nginx.pid;

events {
  worker_connections 768;
  multi_accept on;
}

http {
  sendfile on;
  tcp_nopush on;
  tcp_nodelay on;
  keepalive_timeout 65;
  types_hash_max_size 2048;

  include /etc/nginx/mime.types;
  default_type application/octet-stream;

  access_log /var/log/nginx/access.log;
  error_log /var/log/nginx/error.log;

  gzip on;
  gzip_disable "msie6";

  gzip_http_version 1.1;
  gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;

  ##
  # Virtual Host Configs
  ##

  include /etc/nginx/conf.d/*.conf;
  include /etc/nginx/sites-enabled/*;

  upstream sahitoo {
    server unix:/home/kar/www/sahitoo/shared/sockets/unicorn.sock;
  }
}

使用 /etc/nginx/sites-enabled/sahitoo 文件:

server {
  listen 80;
  server_name myapp.com;

  access_log /var/log/nginx/sahitoo.access.log;
  error_log /var/log/nginx/sahitoo.error.log;

  root /www/sahitoo/public;

      # direct to maintenance if this file exists
      if (-f $document_root/system/maintenance.html) {
        rewrite  ^(.*)$  /system/maintenance.html last;
    break;
  }

  location / {
    proxy_redirect          http://sahitoo/               /;
    proxy_set_header        Host                                                            $host;
    proxy_set_header        X-Real-IP                                                     $remote_addr;
proxy_set_header  X-Forwarded-For                                               $proxy_add_x_forwarded_for;

    # If the file exists as a static file serve it directly
    if (-f $request_filename) {
      break;
    }

    if (!-f $request_filename) {
      proxy_pass http://sahitoo;
      break;
    }
  }

  error_page   500 502 503 504  /500.html;
  location = /500.html {
    root   /home/kar/www/sahitoo/public;
  }
}
4

2 回答 2

1

如果您在其他用户(可能是 root)上运行 ruby​​ 并且它对当前用户没有任何特权,则会发生这种情况,您确定您从

'ruby -v' 或 'rails -v'

.

于 2015-08-04T02:11:41.090 回答
0

我建议看一下这个工作示例 nginx.conf

upstream unicorn-your_app {
  server unix:/tmp/unicorn.your_app.sock fail_timeout=0;
}

server {
  listen 80;
  server_name myapp.com;
  root /www/sahitoo/current/public;

  location ^~ /assets/ {
    gzip_static on;
    expires max;
    add_header Cache-Control public;
  }

  try_files $uri/index.html $uri @unicorn-yourapp;
  location @unicorn-yourapp {
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;
    proxy_redirect off;
    proxy_pass http://unicorn-your_app;
  }

  error_page 500 502 503 504 /500.html;
  client_max_body_size 4G;
  keepalive_timeout 10;
}

如您所见,有一些不同之处:

  • upstram堵塞;
  • 根指向your_dir/current/public;
  • try_files 例程;
  • location @unicorn-yourapp;

如果您想对该主题有更深入的了解,可以使用非常好的Railscast

于 2013-04-14T11:08:14.710 回答