Capistrano VPS部署错误

时间:2013-04-13 11:13:13

标签: ruby-on-rails deployment rvm capistrano rvm-capistrano

我正在使用Capistrano部署到VPS。在我的deploy.rb

require "bundler/capistrano"
server "xxx.xxx.xx.xxx", :web, :app, :db, primary: true
set :application, "riffbox"
set :user, "root"
set :deploy_to, "/home/#{user}/apps/#{application}"
set :deploy_via, :remote_cache
set :use_sudo, false
set :scm, "git"
set :repository, "https://xxxx@bitbucket.org/xxxx/iv.git"
set :branch, "master"
default_run_options[:pty] = true
ssh_options[:forward_agent] = true
after "deploy", "deploy:cleanup" # keep only the last 5 releases

运行cap deploy:cold时出现以下错误:

  * 2013-04-13 22:59:38 executing `bundle:install'
  * executing "cd /home/root/apps/riffbox/releases/20130413105936 && bundle install --gemfile /home/root/apps/riffbox/releases/20130413105936/Gemfile --path /home/root/apps/riffbox/shared/bundle --deployment --quiet --without development test"
    servers: ["198.199.74.146"]
    [198.199.74.146] executing command
 ** [out :: 198.199.74.146] **ERROR: Gem bundler is not installed, run `gem install bundler` first.**
 ** [out :: 198.199.74.146] 
    command finished in 915ms
*** [deploy:update_code] rolling back
  * executing "rm -rf /home/root/apps/riffbox/releases/20130413105936; true"
    servers: ["198.199.74.146"]
    [198.199.74.146] executing command
    command finished in 907ms
**failed: "sh -c 'cd /home/root/apps/riffbox/releases/20130413105936 && bundle install --gemfile /home/root/apps/riffbox/releases/20130413105936/Gemfile --path /home/root/apps/riffbox/shared/bundle --deployment --quiet --without development test'" on 198.199.74.146**

我可以看到有两个错误,找不到Bundler而另一个错误无法运行sh命令。我按照指令(https://www.digitalocean.com/community/articles/how-to-install-ruby-on-rails-on-ubuntu-12-04-lts-precise-pangolin-with-rvm)使用root用户在我的VPS上安装rvm,rubygem和rails。

我还缺少什么?

更新

我正在使用rvm-capistrano,并使用创建的用户安装了所有内容,并在部署时出现了不同的错误:cold:

  

执行“if [-d / home / app / riffbox / shared / cached-copy];然后执行cd   / home / app / riffbox / shared / cached-copy&& git fetch -q origin&&混帐   fetch --tags -q origin&& git reset -q --hard   2afbd8fb661f62a01e0940be38e70915fc3e32ea&& git clean -q -d -x -f;   否则git clone -q git@bitbucket.org:xxx/iv.git   / home / app / riffbox / shared / cached-copy&&光盘   / home / app / riffbox / shared / cached-copy&& git checkout -q -b deploy   2afbd8fb661f62a01e0940be38e70915fc3e32ea;网络连接“
      服务器:[“198.199.74.146”]
密码:
      [198.199.74.146]执行命令
** [198.199.74.146 ::错误] 致命:无法读取密码   'https://xxx@bitbucket.org':没有此类设备或地址
  密码:
      命令在7399ms完成
   * [deploy:update_code]回滚
*执行“rm -rf / home / app / riffbox / releases / 20130414224249; true”
      服务器:[“198.199.74.146”]
      [198.199.74.146]执行命令
      命令在586ms完成
  **失败:“rvm_path = $ HOME / .rvm / $ HOME / .rvm / bin / rvm-shell'1.9.3@myapp'-c'if [-d / home / app / riffbox / shared / cached-copy ];然后cd / home / app / riffbox / shared / cached-copy&& git fetch -q origin&& git   fetch --tags -q origin&& git reset -q --hard   2afbd8fb661f62a01e0940be38e70915fc3e32ea&& git clean -q -d -x -f;   否则git clone -q git@bitbucket.org:xxx/iv.git   / home / app / riffbox / shared / cached-copy&&光盘   / home / app / riffbox / shared / cached-copy&& git checkout -q -b deploy   2afbd8fb661f62a01e0940be38e70915fc3e32ea; fi'“on 198.199.74.146

1 个答案:

答案 0 :(得分:0)

您应该使用rvm-capistrano gem,它可以让您在部署期间访问RVM环境。

<小时/>

非常重要的一点:

您正在使用root用户进行部署,直接使用root用户是一种总体不好的做法,您应该考虑为每个应用程序使用新用户。