1

我目前正在建立一个生产环境,并且在让工头与 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] 部署密码

无法输入

4

1 回答 1

-1

禁用use_sudosudo使用命令添加。

例如:

set :use_sudo, false 

task :foreman do
  run "sudo foreman export upstart /etc/init -f Procfile"
end
于 2013-05-27T04:26:13.620 回答