Nginx有一个明确定义的方法来设置流程在conf文件中运行的对象:
user nobody nogroup;
(虽然作为一个附带问题我想知道为什么这个组是必要的?如果你以用户身份运行该过程,那么该组必须是用户所属的组,你如何同时定义用户和组?)
但是Unicorn似乎没有这种能力。因此,在我的提供商的VPS中,我以root身份登录,启动nginx(以用户nginx,组web运行)然后我启动unicorn(以root身份启动,因为我已经登录以root身份)。 Unicorn使root拥有一个socket,然后nginx无法从中读取。如何让unicorn作为用户独角兽在与nginx相同的安全组中运行,以便nginx可以读取套接字?
这是在ubuntu 12.04 64bit,unicorn v4.8.2,nginx版本:nginx / 1.4.6
错误如下:
unix:/etc/sockets/.unicorn.sock failed (2: No such file or directory) while connecting to upstream, client: 24.7.100.227, server: _, request: "GET / HTTP/1.1", upstream: "http://unix:/etc/sockets/.unicorn.sock:/", host: "xx.xx.xx.xxx"
答案 0 :(得分:0)
啊我明白了。它实际上没必要。 BOTH进程以root用户身份运行其主进程。即使使用用户参数配置nginx,主进程也以root身份运行,root是与套接字交互的进程。所以我的问题实际上是别的东西(独角兽conf文件中的拼写错误)