2013-05-05 61 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