2013-05-05 8 views
7

Wenn ich den folgenden Befehl Unicorn für eine Sinatra App auf meiner Vagrant Box (ubuntu-12.04.2-Server-i386)Einhorn versagt aufgrund Errno auf Vagrant Box starten :: EPERM

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

Ich bekomme den folgenden Fehler in den Unicorn-Protokollen.

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) 

Ich bin als Vagabund Benutzer angemeldet und haben die unicorn.rb gemäß 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" 

Ich habe durch den Code sah konfiguriert und es schlägt die folgende

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

Ich habe gerade das gleiche Problem mit einer Rails App gestartet. Sehr ähnliche Konfiguration zu dem, was Sie haben. –

Antwort

16

Unicorn kann eine .sock-Datei nicht in einem freigegebenen Ordner einer virtuellen Box speichern. Sie müssen also Folgendes für den Socket ändern:

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

Um dies:

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

oder eine andere Stelle außerhalb des VBox freigegebenen Ordner.

+0

Danke Problem gelöst! – jamesshipton

+0

Was ist, wenn diese Option aus irgendeinem Grund nicht möglich ist? Gibt es nicht eine Konfiguration in Vagrant, die das lösen kann? Außerdem, warum kann es keine .sock-Datei in einem freigegebenen virtuellen Ordner speichern? – Agis

+0

Ich würde sagen, das ist nützlich für die Mehrheit der sockelbezogenen Probleme auf Vagrant, wenn versucht wird, die freigegebenen Ordner zu verwenden. Wenn jemand eine Workaround geben könnte, die @Agis antwortet, wäre das großartig. – jonnybazookatone