When I run the following command to start Unicorn for a Sinatra app on my Vagrant box(ubuntu-12.04.2-server-i386)
sudo unicorn -c unicorn.rb -E development -D -l 0.0.0.0:8080
I get the following error in the Unicorn logs.
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)
I am logged in as the vagrant user and have configured the unicorn.rb as per 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"
I have looked through the code and it fails to initialize the following
Kgio::UNIXServer.new('0.0.0.0:8080')
Unicorn can't store a .sock file on a Virtual Box Shared Folder, so what you'll have to do is modify for the socket from this:
listen "#{@dir}tmp/sockets/unicorn.sock", :backlog => 64
To this:
listen "/tmp/sockets/unicorn.sock", :backlog => 64
Or some other location outside of the VBox shared folder.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With