我主要按照本指南在 Ubuntu (Amazon EC2) 上创建了一个 nginx/unicorn/capistrato 设置。我想一切都设置得像它应该的那样,但是当我启动 Unicorn 时,我在日志中收到(很多)这个错误:
E, [2012-09-08T08:57:20.658092 #12356] ERROR -- : Operation not permitted (Errno::EPERM)
/home/deployer/apps/bridgekalenderen.no/shared/bundle/ruby/1.9.1/gems/unicorn-4.3.1/lib/unicorn/worker.rb:82:in `initgroups'
Run Code Online (Sandbox Code Playgroud)
我看到它与用户的权限有关,但我无法弄清楚我遗漏了什么。如果我使用 sudo(或 rvmsudo,真的)启动服务器,它会很好地启动。
用户具有 sudo 功能,我已经多次修改了该应用程序,因此那里的文件权限应该没问题。/tmp 中的独角兽套接字归部署者用户所有,因此这也不应该是问题。
有没有人知道在哪里看?
更新:
经过一番挖掘,我发现它归结为一个Process.initgroups
抛出 EPERM的调用。我已经在 irb 中验证了这一点。我无法弄清楚导致错误的原因。用户可以阅读/etc/group
。