Nginx找不到unix的unix socket文件

Cam*_*ego 2 unix sockets ruby-on-rails nginx unicorn

我已经检查了应用程序,并且一切接缝都很好(代码应用程序配置明智),也是服务器,数据库都没问题,在日志中我得到了这个错误,我已经看过这个Nginx无法找到unix套接字文件与Unicorn (没有这样的文件或目录)但我真的不知道从哪里开始才能实现"只需修改你的Unicorn配置文件中的listen变量.例如:listen"/var/sockets/unicorn.[app name] .sock" ,然后配置Nginx将服务器的所有连接代理到该套接字文件,例如服务器unix:/ var/sockets/unicorn.[app name] .sock fail_timeout = 0;" 如果有人可以请指点我如何做到这一点,这将是伟大的.

我更改了文件,但卡在同样的错误中,mi配置文件是(由于保密原因,我删除了部分文件):

root = ""
working_directory root
pid "#{root}/tmp/pids/unicorn.pid"
stderr_path "#{root}/log/unicorn.log"
stdout_path "#{root}/log/unicorn.log"

listen "/var/sockets/unicorn.camicase.sock"
worker_processes 2
timeout 30
Run Code Online (Sandbox Code Playgroud)

和ngix配置

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;
}
Run Code Online (Sandbox Code Playgroud)

Cam*_*ego 8

所以最终让系统启动并运行,并且面对所有遇到类似问题的人,并且没有关于unicorn或ngixn的知识,这里的步骤是:

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

停止这两项服务.

在selinux中查看你的策略,这里有一个很好的问题,关于如何在PHP中运行相同的错误nginx错误连接到php5-fpm.sock失败(13:Permission denied),这个想法是为了确保selinux不干扰使用套接字的rad进程(套接字由unicorn创建并由ngixn引导)

然后你必须编辑你的配置文件unicorn.rb和nginx.conf,两者都应该指向一个不同于tmp的文件夹,这里是为什么https://serverfault.com/questions/463993/nginx-unix-domain-socket -error/464025#464025

所以最后我的配置看起来像这样:

nginx配置文件的一部分

upstream unicorn {
  server unix:/home/myuser/apps/myapp/shared/socket/unicorn.camicase.sock fail_timeout=0;
}
Run Code Online (Sandbox Code Playgroud)

unicorn配置文件的一部分

listen "/home/deployer/apps/stickystreet/shared/socket/unicorn.camicase.sock"
Run Code Online (Sandbox Code Playgroud)

然后启动unicorn一个ngixn,如果你得到一个(13:权限被拒绝),同时连接到上游错误只需要做一个sudo chmod 775套接字/更改套接字,用于存放你的unicorn套接字的任何文件夹,重启ngixn服务.