2013-05-05 65 views
7

当我运行下面的命令来启动独角兽在我的流浪框西纳特拉的应用程序(Ubuntu的12.04.2服务器-I386)独角兽无法启动对流浪箱因变量Errno :: EPERM

sudo unicorn -c unicorn.rb -E development -D -l 0.0.0.0:8080 

我在Unicorn日志中得到以下错误。

I, [2013-05-05T19:15:15.538805 #2357] INFO -- : listening on addr=0.0.0.0:8080 fd=5 
F, [2013-05-05T19:15:15.541673 #2357] FATAL -- : error adding listener addr=/home/vagrant/tmp/myapp/sockets/unicorn.sock 
/home/vagrant/.rbenv/versions/1.9.3-p392/lib/ruby/gems/1.9.1/gems/unicorn-4.3.1/lib/unicorn/socket_helper.rb:140:in `initialize': Operation not permitted - "/home/vagrant/tmp/myapp/sockets/unicorn.sock" (Errno::EPERM) 

我登录的用户流浪者,并已配置unicorn.rb按http://recipes.sinatrarb.com/p/deployment/nginx_proxied_to_unicorn

@dir = '/home/vagrant/myapp/' 

worker_processes 4 
working_directory @dir 

timeout 30 

listen "#{@dir}tmp/sockets/unicorn.sock", :backlog => 64 
pid "#{@dir}tmp/pids/unicorn.pid" 

stderr_path "#{@dir}log/unicorn.stderr.log" 
stdout_path "#{@dir}log/unicorn.stdout.log" 

我已经通过代码看去,它无法初始化以下

Kgio::UNIXServer.new('0.0.0.0:8080') 
+1

我刚开始有一个Rails应用程序完全相同的问题。非常类似于您拥有的配置。 – 2013-05-06 17:48:02

回答

16

独角兽不能在Virtual Box共享文件夹中存储.sock文件,所以你需要做的是修改这个套接字:

listen "#{@dir}tmp/sockets/unicorn.sock", :backlog => 64 

要这样:

listen "/tmp/sockets/unicorn.sock", :backlog => 64 

还是垂直框之外的一些其他位置的共享文件夹。

+0

感谢问题解决! – jamesshipton 2013-05-08 06:00:57

+0

如果由于某种原因该选项不可行会怎样? Vagrant中没有配置可以解决这个问题吗?此外,为什么不能“将一个.sock文件存储在虚拟机共享文件夹中”? – Agis 2014-08-22 14:21:07

+0

我会说这对于试图使用共享文件夹时在流浪者身上的大部分套接字相关问题都很有用。如果有人能够给出解决方法,回答@Agis会很好。 – jonnybazookatone 2015-02-19 16:36:26