我目前正在建立一个生产环境,并且在让工头与 capistrano 玩得很好时遇到了一些问题。
让工头将其任务导出到新贵的所有示例都需要使用 root 权限,目前我没有使用 root 或 sudo 来执行我的部署。
问题是工头似乎需要root权限才能导出。正在部署的用户具有 root 权限,但是我不想使用 sudo 运行任何与工头相关的命令。有没有办法设置类似
set :use_sudo, true
但仅适用于工头相关的任务?
或者有没有办法让工头在不使用 sudo 的情况下导出到暴发户?
如果知道该机器正在运行 Ubuntu 12.04 并且可以在服务器上访问工头是否有帮助
编辑
我的 Deploy.rb 的配置
require "bundler/capistrano"
require "rvm/capistrano"
set :rvm_ruby_string, :local # use the same ruby as used
set :rvm_autolibs_flag, "read-only" # more info: rvm help autolibs
before 'deploy', 'rvm:install_rvm' # install RVM
server "ip_to_server", :web, :app, :db, primary: true
set :application, "app_name"
set :user, "deploy_user"
set :deploy_to, "/home/#{user}/apps/#{application}"
set :deploy_via, :remote_cache
set :use_sudo, false
set :scm, "git"
set :repository, "repo_path"
set :branch, "production"
default_run_options[:pty] = true
ssh_options[:forward_agent] = true
我的工头命名空间看起来像这样
namespace :foreman do
desc 'Export the Procfile to Ubuntu upstart scripts'
task :export, :roles => :app do
run "cd #{release_path} && sudo bundle exec foreman export upstart
/etc/init -a #{application} -u #{user} -l #{release_path}/log/foreman -f
#{current_path}/Procfile"
end
desc "Start the application services"
task :start, :roles => :app do
sudo "start #{application}"
end
desc "Stop the application services"
task :stop, :roles => :app do
sudo "stop #{application}"
end
desc "Restart the application services"
task :restart, :roles => :app do
run "sudo start #{application} || sudo restart #{application}"
end
end
导出命令触发并让我留下了这个
执行命令 ** [out :: server_ip] [sudo] 部署密码
无法输入