Ruby on rails Nginx找不到带有Unicorn的unix套接字文件

Ruby on rails Nginx找不到带有Unicorn的unix套接字文件,ruby-on-rails,sockets,unix,nginx,unicorn,Ruby On Rails,Sockets,Unix,Nginx,Unicorn,我已经检查了应用程序,一切正常(代码和应用程序配置方面),服务器、数据库也正常,在我遇到这个错误的日志中,我已经看过了,但我真的不知道从哪里开始,以实现“只需修改Unicorn配置文件中的listen变量。例如:listen”/var/sockets/Unicorn。[app name].sock”,然后将Nginx配置为将与服务器的所有连接代理到该套接字文件,如server unix:/var/sockets/unicorn。[app name].sock fail\u timeout=0;“

我已经检查了应用程序,一切正常(代码和应用程序配置方面),服务器、数据库也正常,在我遇到这个错误的日志中,我已经看过了,但我真的不知道从哪里开始,以实现“只需修改Unicorn配置文件中的listen变量。例如:listen”/var/sockets/Unicorn。[app name].sock”,然后将Nginx配置为将与服务器的所有连接代理到该套接字文件,如server unix:/var/sockets/unicorn。[app name].sock fail\u timeout=0;“如果有人能告诉我如何执行此操作,那就太好了

我更改了文件,但仍遇到相同的错误,我的配置文件是(出于保密原因,我删除了部分文件):

和nginx配置

upstream unicorn {
  server unix:/var/sockets/unicorn.camicase.sock fail_timeout=0;
}

server {
   listen         80;
   server_name    _;
   rewrite        ^ https://$host$request_uri? permanent;
}

server {
  listen 443;
  server_name 
  root 

  ssl on;
  ssl_certificate         
  ssl_certificate_key     

  ssl_session_timeout  5m;

  ssl_protocols  SSLv2 SSLv3 TLSv1;
  ssl_ciphers HIGH:!aNULL:!MD5;
  ssl_prefer_server_ciphers  on;

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

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

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

因此,最终让系统启动并运行起来,对于所有面临类似问题的人,在不了解unicorn或Nginx的情况下,以下是步骤:

首先确保两个服务都在运行(unicorn是应用服务器,nginx是http服务器),这两个服务都应该在/etc/init.d/中配置

停止这两项服务

在selinux中检查您的策略,这里有一个关于如何处理PHP中相同错误的好问题,其目的是确保selinux不会干扰套接字的读取过程(套接字由unicorn创建,由nginx读取)

然后您必须编辑配置文件unicorn.rb和nginx.conf,这两个文件都应该指向一个不同于tmp的文件夹,这就是为什么

最后,我的配置如下所示:

nginx配置文件的一部分

upstream unicorn {
  server unix:/home/myuser/apps/myapp/shared/socket/unicorn.camicase.sock fail_timeout=0;
}
listen "/home/deployer/apps/stickystreet/shared/socket/unicorn.camicase.sock"
unicorn配置文件的一部分

upstream unicorn {
  server unix:/home/myuser/apps/myapp/shared/socket/unicorn.camicase.sock fail_timeout=0;
}
listen "/home/deployer/apps/stickystreet/shared/socket/unicorn.camicase.sock"

然后启动unicorn和nginx,如果您在连接到上游时遇到(13:权限被拒绝)错误,只需执行sudo chmod 775套接字/更改存储unicorn套接字的任何文件夹的套接字,然后重新启动nginx服务。

我设法找到了要更改配置的文件……但我还是说到了同一点(2014/10/08 00:25:19[crit]727#0:*4 connect()到unix:/var/sockets/unicorn.camicase.sock在连接到上游时失败(2:没有这样的文件或目录),客户端:190.60.241.227,服务器:blast.clienttoolbox.com,请求:“GET/HTTP/1.1”,上游:,主机:“blast.clienttoolbox.com”)我遗漏了什么吗?文件夹应该有什么权限?有什么限制吗?自SLJ回复后,camicase的回答已被更正。它现在将正确的文件名与文件匹配。