Unable to start unicorn on port 80 using capistran

2019-08-02 03:37发布

cap production unicorn:start fails with the following error, trying to start my rails app on port 80.

F, [2013-06-14T04:33:51.420113 #13986] FATAL -- : error adding listener addr=0.0.0.0:80
/home/ec2-user/apps/bdr_prod/shared/bundle/ruby/2.0.0/gems/unicorn-4.6.2/lib/unicorn/socket_helper.rb:147:in `initialize': Permission denied - bind(2) (Errno::EACCES)
from /home/ec2-user/apps/bdr_prod/shared/bundle/ruby/2.0.0/gems/unicorn-4.6.2/lib/unicorn/socket_helper.rb:147:in `new'
from /home/ec2-user/apps/bdr_prod/shared/bundle/ruby/2.0.0/gems/unicorn-4.6.2/lib/unicorn/socket_helper.rb:147:in `bind_listen'
from /home/ec2-user/apps/bdr_prod/shared/bundle/ruby/2.0.0/gems/unicorn-4.6.2/lib/unicorn/http_server.rb:229:in `listen'
from /home/ec2-user/apps/bdr_prod/shared/bundle/ruby/2.0.0/gems/unicorn-4.6.2/lib/unicorn/http_server.rb:773:in `block in bind_new_listeners!'
from /home/ec2-user/apps/bdr_prod/shared/bundle/ruby/2.0.0/gems/unicorn-4.6.2/lib/unicorn/http_server.rb:773:in `each'
from /home/ec2-user/apps/bdr_prod/shared/bundle/ruby/2.0.0/gems/unicorn-4.6.2/lib/unicorn/http_server.rb:773:in `bind_new_listeners!'
from /home/ec2-user/apps/bdr_prod/shared/bundle/ruby/2.0.0/gems/unicorn-4.6.2/lib/unicorn/http_server.rb:141:in `start'
from /home/ec2-user/apps/bdr_prod/shared/bundle/ruby/2.0.0/gems/unicorn-4.6.2/bin/unicorn:126:in `<top (required)>'
from /home/ec2-user/apps/bdr_prod/shared/bundle/ruby/2.0.0/bin/unicorn:23:in `load'
from /home/ec2-user/apps/bdr_prod/shared/bundle/ruby/2.0.0/bin/unicorn:23:in `<main>'

set use_sudo true returns the following error

* executing "sudo -p 'sudo password: ' rm -rf /home/ec2-user/apps/bdr_prod/releases/20130517085418"
servers: ["64.433.69.129"]
[ec2-user@64.433.69.129] executing command
*** [err :: ec2-user@64.433.69.129] sudo
*** [err :: ec2-user@64.433.69.129] :
*** [err :: ec2-user@64.433.69.129] sorry, you must have a tty to run sudo
*** [err :: ec2-user@64.433.69.129] 
command finished in 1542ms

2条回答
干净又极端
2楼-- · 2019-08-02 04:11

I've had issues with this before, and had to add this to my deploy.rb:

default_run_options[:pty] = true
查看更多
The star\"
3楼-- · 2019-08-02 04:11

To run ssh sudo command in remote server, disable 'require tty' in remote server

Run:

~$ sudo visudo

Edit: /etc/sudoers

# Disable "ssh hostname sudo ", because it will show the password in clear.

# You have to run "ssh -t hostname sudo ".

# comment require tty

# Defaults requiretty

Reference: http://www.lansweeper.com/kb/39/TTY-Required-error-during-linux-scanning.html

查看更多
登录 后发表回答