2013-10-04 74 views
0

我跟隨#335 Deploying to a VPS。在deploy.rbCapistrano:`run`和`sudo`的區別?

%w[start stop restart].each do |command| 
desc "#{command} unicorn server" 
task command, roles: :app, except: {no_release: true} do 
    run "/etc/init.d/unicorn_#{application} #{command}" 
end 

當我運行cap deploy:start,我得到sh: /etc/init.d/unicorn_appname: Permission denied。但是如果我改變運行到sudo:sudo "/etc/init.d/unicorn_#{application} #{command}",我得到sudo: /etc/init.d/unicorn_appname: command not found

那麼命令真的不存在,或者sudorun彼此不同?

回答

0

你得到拒絕,因爲普通用戶是被/etc/init.d/中

你越來越沒有發現裏面的命令禁止的權限,因爲應用程序很可能不正確或不設置。基本上,/etc/init.d/unicorn_appname是否存在?可能不會。

無論如何,你不應該改變運行到sudo,你應該使用運行「#{sudo} ...」或運行「#{try_sudo} ...」。

相關問題