【问题标题】:Capistrano deploy:cold doesn't workCapistrano 部署:冷不起作用
【发布时间】:2012-04-14 23:09:40
【问题描述】:

我有两个问题。一个小问题,一个大问题。

  1. 为什么我必须输入密码 10 次我的运行上限:冷
  2. 在我尝试通过teachmetocode-tuorial 设置capistrano 和 在stackoverflow的一些帮助下。我坐下来,阅读了许多部署 capistrano 的教程,并编写了我自己的新版本 deploy.rb 我们的 gem env 输出看起来如此

    RubyGems 环境:

    • RubyGEMS 版本:1.8.15
      • RUBY 版本:1.9.3(2012-02-16 补丁级别 125)[x86_64-linux]
      • 安装目录:/home/user/.rvm/gems/ruby-1.9.3-p125@myapp
      • RUBY 可执行文件:/home/user/.rvm/rubies/ruby-1.9.3-p125/bin/ruby
      • 可执行目录:/home/user/.rvm/gems/ruby-1.9.3-p125@myapp/bin
      • RUBYGEMS 平台:
      • 红宝石
      • x86_64-linux
      • 宝石路径:
        • /home/user/.rvm/gems/ruby-1.9.3-p125@myapp
        • /home/user/.rvm/gems/ruby-1.9.3-p125@global
      • 宝石配置:
        • :update_sources => 真
        • :详细 => 真
        • :基准 => 错误
        • :回溯 => 假
        • :bulk_threshold => 1000
      • 远程源:

我们的 deploy.rb 在这里

require "bundler/capistrano"
set :application, "myapp"
set :repository,  "#{application}@myserver:/home/git/repos/#{application}.git"
set :scm, :git
set :user, "#{application}"
set :use_sudo, false
set :deploy_to, "/home/#{application}/#{application}"
set :deploy_via, :remote_cache
set :keep_releases, 5

server "myserver", :app, :web, :db, :primary => true

set :branch, "master"

ssh_options[:forward_agent] = false
default_run_options[:pty] = true

before "deploy:assets:precompile", "bundle:install"

load 'deploy/assets'

namespace :deploy do
 task :start do ; end
 task :stop do ; end
 task :restart, :roles => :app, :except => { :no_release => true } do
   run "touch #{File.join(current_path,'tmp','restart.txt')}"
 end
end

我们的开发设置 我们使用 Apache+Passagner 和 http://beginrescueend.com/rvm/install/ 的 rvm 安装。 在服务器上,我们以相同的方式安装它。每个用户(应用程序、gemsets 或 realuser)都必须是 rvm 组的成员...我们使用 modrails 来安装 passagner... http://www.modrails.com/documentation/Users%20guide%20Apache.html#_installing_via_the_gem

但是当我使用cap deploy:cold 时为什么会出错。 cap deploy:checkYou appear to have all necessary dependencies installed 错误在这里

 triggering after callbacks for `deploy:finalize_update'
  * executing `bundle:install'
  * executing "ls -x /home/myapp/myapp/releases"
    servers: ["myserver"]
    [myserver] executing command
    [myserver] sh -c 'ls -x /home/myapp/myapp/releases'
    command finished in 82ms
  * executing "cd /home/myapp/myapp/releases/20120331143114 && bundle install --gemfile /home/myapp/myapp/releases/20120331143114/Gemfile --path /home/m
ahaloo/myapp/shared/bundle --deployment --quiet --without development test"
    servers: ["myserver"]
    [myserver] executing command
    [myserver] sh -c 'cd /home/myapp/myapp/releases/20120331143114 && bundle install --gemfile /home/myapp/myapp/releases/20120331143114/Gemfile --path /h
ome/myapp/myapp/shared/bundle --deployment --quiet --without development test'
 ** [out :: myserver] sh: bundle: not found
    command finished in 73ms
*** [deploy:update_code] rolling back
  * executing "rm -rf /home/myapp/myapp/releases/20120331143114; true"
    servers: ["myserver"]
    [myserver] executing command
    [myserver] sh -c 'rm -rf /home/myapp/myapp/releases/20120331143114; true'
    command finished in 171ms
failed: "sh -c 'cd /home/myapp/myapp/releases/20120331143114 && bundle install --gemfile /home/myapp/myapp/releases/20120331143114/Gemfile --path /home/
myapp/myapp/shared/bundle --deployment --quiet --without development test'" on myserver
marcus@lenny:~/dev/workspace/myapp$

我们的bundle list 在这里

 * actionmailer (3.2.0)
 * actionpack (3.2.0)
 * activemodel (3.2.0)
 * activerecord (3.2.0)
 * activeresource (3.2.0)
 * activesupport (3.2.0)
 * arel (3.0.2)
 * builder (3.0.0)
 * bundler (1.1.1)
 * capistrano (2.11.2)
 * coffee-rails (3.2.1)
 * coffee-script (2.2.0)
 * coffee-script-source (1.2.0)
 * erubis (2.7.0)
 * execjs (1.3.0)
 * highline (1.6.11)
 * hike (1.2.1)
 * i18n (0.6.0)
 * journey (1.0.3)
 * jquery-rails (1.0.17)
 * json (1.6.5)
 * libv8 (3.3.10.4)
 * mail (2.4.4)
 * mime-types (1.17.2)
 * multi_json (1.1.0)
 * net-scp (1.0.4)
 * net-sftp (2.0.5)
 * net-ssh (2.3.0)
 * net-ssh-gateway (1.1.0)
 * polyglot (0.3.3)
 * rack (1.4.1)
 * rack-cache (1.2)
 * rack-ssl (1.3.2)
 * rack-test (0.6.1)
 * rails (3.2.0)
 * railties (3.2.0)
 * rake (0.9.2.2)
 * rdoc (3.12)
 * sass (3.1.15)
 * sass-rails (3.2.0)
 * simple_form (2.0.1)
 * sprockets (2.1.2)
 * sqlite3 (1.3.5)
 * therubyracer (0.9.10)
 * thor (0.14.6)
 * tilt (1.3.3)
 * treetop (1.4.10)
 * tzinfo (0.3.32)
 * uglifier (1.2.3)
 * uuidtools (2.1.2)

有人可以帮我们找一个可以工作的capistrano

【问题讨论】:

    标签: ruby-on-rails deployment passenger capistrano setup-deployment


    【解决方案1】:

    通过执行 cap shell 检查您的 Capistrano 路径,然后执行 echo $PATH。你可能会看到你的标准 /usr/local/bin 和 /usr/bin,但这不是 RVM 有 Bundler 的地方

    编辑您的 Capistrano config/deploy.rb 文件,并添加以下行:

    # Add RVM's lib directory to the load path.
    $:.unshift(File.expand_path('./lib', ENV['rvm_path']))
    
    # Load RVM's capistrano plugin.    
    require "rvm/capistrano"
    
    set :rvm_ruby_string, '1.9.2'
    set :rvm_type, :user  # Don't use system-wide RVM
    

    Rails 3 -- Bundler/Capistrano Errors

    【讨论】:

    • 谢谢@Said 这不起作用 :-( 我的眼泪这是我的错误: :-(
    • `/home/myapp/.rvm/bin/rvm-shell: 没有这样的文件或目录 *** [deploy:update_code] 回滚 * 执行“rm -rf /home/myapp/myapp /releases/20120331153447; true" 服务器:["myserver"] [myserver] 执行命令 [myserver] rvm_path=$HOME/.rvm/ $HOME/.rvm/bin/rvm-shell '1.9.3' -c 'rm -rf /home/myapp/myapp/releases/20120331153447; true' ** [out :: myserver] bash: /home/myapp/.rvm/bin/rvm-shell: 没有这样的文件或目录 ** [deploy:update_code] 回滚时出现异常:Capistrano::CommandError,失败: "rvm_path=$HOME/.rvm/$HOME/.rvm/bin/rvm-shell '1.9.3' -c 'rm -rf /home
    • $:.unshift(File.expand_path('./lib', ENV['rvm_path'])) 已从 rvm 中删除,您需要使用新的 gem rvm-capistrano
    【解决方案2】:

    到问题1(多次输入密码):

    您可以在本地机器上生成一个公钥/私钥对

    ssh-keygen -t rsaEnter 表示全部)

    这将在 /home/LOCAL_USER/.ssh/ 目录中生成两个文件(id_rsa 和 id_rsa.pub

    然后在服务器中创建或编辑文件 /home/user/.ssh/authorized_keys 并添加 id_rsa.pub 的内容

    这样,您的本地计算机被授权访问该服务器(使用用户登录),而无需询问密码。

    【讨论】:

    • 问题 2(未找到捆绑包)您可以在 deploy.rb 中添加 set :bundle_cmd, "/path/to/your/bin/bundle"
    • Ähm 我的问题是现在。在服务器上是我们在/usr/local/rvm/gems/ruby-1.9.3-p125@myapp/bin/bundle 的捆绑包,在本地是安装$HOME/.rvm/gems/ruby-1.9.3-p125@myapp/bin/bundle 我可以在这里做什么?
    • 执行命令的服务器路径:/usr/local/rvm/gems/ruby-1.9.3-p125@myapp/bin/bundle
    • :-( 这没有运行抱歉` [myserver :: out] bash: /home/myapp/.rvm/bin/rvm-shell: 没有这样的文件或目录命令在 84 毫秒内完成 * ** [deploy:update_code] 回滚 * 执行 "rm -rf /home/myapp/myapp/releases/20120331180124; true" 服务器:["myserver"] [myserver] 执行命令 [myserver] rvm_path=$HOME/.rvm /$HOME/.rvm/bin/rvm-shell 'ruby-1.9.3-p125@myapp' -c 'rm -rf /home/myapp/myapp/releases/ 20120331180124; true'`
    • 这是 deploy.rb 中set :bundle_cmd, "/usr/local/rvm/gems/ruby-1.9.3-p125@myapp/bin/bundle" 的结果?
    【解决方案3】:

    你没有使用 rvm-capistrano 集成,这里描述了集成:

    请注意,rvm-capistrano 不再是 RVM 安装的一部分,它是单独的 gem,您需要将其包含在您的 Gemfile 中并要求在 config/deploy.rb 中,也不要忘记设置 set :rvm_ruby_string, ENV['GEM_HOME'].gsub(/.*\//,"")

    【讨论】:

    • :) 这个运行但它 failed: "rvm_path=/usr/local/rvm /usr/local/rvm/bin/rvm-shell 'ruby-1.9.3-p125@myapp' -c 'cd /home/myapp/myapp/rel eases/20120401103204 && /usr/local/rvm/gems/ruby-1.9.3-p125@myapp/bin/bundle exec rake RAILS_ENV=production RAILS_GROU PS=assets assets:precompile'" on myserver 最后一个错误在哪里
    • rake aborted! ** [out :: myserver] Invalid CSS after "...ing: 20px 0; */": expected selector or at-rule, was "}" (in /home/myapp/myapp/releases/20120401103755/app/assets/stylesheets/application.css) ** [out :: myserver] Tasks: TOP => assets:precompile:primary (See full trace by running task with --trace) command finished in 7986ms *** [deploy:update_code] rolling back * executing "rm -rf /home/myapp/myapp/releases/20120401103755; true" servers: ["myserver"] [myserver] executing command [myserver] rvm_path=/usr/local/rvm /usr/local/rvm/bin/rvm-shell 'ruby-1.9.3-p125@myapp' -c 'rm -rf
    • 它运行 :-) 问题是本地宝石不等于服务器宝石...感谢所有
    猜你喜欢
    • 1970-01-01
    • 2013-03-27
    • 1970-01-01
    • 2014-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-03
    • 1970-01-01
    相关资源
    最近更新 更多