简体   繁体   English

无法使用RVM Capistrano部署应用

[英]Can't Deploy App Using RVM Capistrano

First, I have development app rails on ubuntu using rvm 1.15.8 (stable) by wayne, and I will deploy to my vps. 首先,我通过Wayne使用rvm 1.15.8(稳定)在ubuntu上开发了开发应用程序,然后将其部署到我的vps。

Here's history of build rails app on my vps : 这是我的VPS上构建Rails应用程序的历史:

  1. Install rvm using user "user" on my vps, I tried from this , and here's is rvm info 我在vps上使用用户“ user”安装rvm,我从这里尝试过, rvm info

     [user@myhost ~]$ rvm info ruby-1.9.3-p392: system: uname: "Linux mydomain.com 2.6.32-358.6.1.el6.i686 #1 SMP Tue Apr 2 3 18:13:20 UTC 2013 i686 i686 i386 GNU/Linux" system: "centos/6.4/i386" bash: "/bin/bash => GNU bash, version 4.1.2(1)-release (i386-redhat-l inux-gnu)" zsh: " => not installed" rvm: version: "rvm 1.19.6 (stable) by Wayne E. Seguin <wayneeseguin@gmail.co m>, Michal Papis <mpapis@gmail.com> [https://rvm.io/]" updated: "16 hours 9 minutes 44 seconds ago" ruby: interpreter: "ruby" version: "1.9.3p392" date: "2013-02-22" platform: "i686-linux" patchlevel: "2013-02-22 revision 39386" full_version: "ruby 1.9.3p392 (2013-02-22 revision 39386) [i686-linux]" homes: gem: "/usr/local/rvm/gems/ruby-1.9.3-p392" ruby: "/usr/local/rvm/rubies/ruby-1.9.3-p392" binaries: ruby: "/usr/local/rvm/rubies/ruby-1.9.3-p392/bin/ruby" irb: "/usr/local/rvm/rubies/ruby-1.9.3-p392/bin/irb" gem: "/usr/local/rvm/rubies/ruby-1.9.3-p392/bin/gem" rake: "/usr/local/rvm/gems/ruby-1.9.3-p392/bin/rake" environment: PATH: "/usr/local/rvm/gems/ruby-1.9.3-p392/bin:/usr/local/rvm/gems/r uby-1.9.3-p392@global/bin:/usr/local/rvm/rubies/ruby-1.9.3-p392/bin:/usr/local/r vm/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/user/bin" GEM_HOME: "/usr/local/rvm/gems/ruby-1.9.3-p392" GEM_PATH: "/usr/local/rvm/gems/ruby-1.9.3-p392:/usr/local/rvm/gems/ruby- 1.9.3-p392@global" MY_RUBY_HOME: "/usr/local/rvm/rubies/ruby-1.9.3-p392" IRBRC: "/usr/local/rvm/rubies/ruby-1.9.3-p392/.irbrc" RUBYOPT: "" gemset: "" 
  2. I'm using kloxo control panel for my vps with directory root on /home/admin/myapp/public 我正在使用vlo的kloxo控制面板,目录为/home/admin/myapp/public

  3. I will deploy, and here's deploy.rb 我将进行部署,这是deploy.rb

 require "bundler/capistrano" require "rvm/capistrano" server "xxx.xxx.xxx.xxx", :web, :app, :db, primary: true set :bundle_cmd, "/usr/local/rvm/gems/ruby-1.9.3-p392@global" set :bundle_dir, "/usr/local/rvm/gems/ruby-1.9.3-p392" set :rvm_ruby_string, EVN['GEM_HOME'].gsub(/.*\\?/,"") set :rvm_type, :user set :default_environment, { 'PATH' => "/usr/local/rvm/gems/ruby-1.9.3-p392/bin:/usr/local/rvm/gems/r uby-1.9.3-p392@global/bin:/usr/local/rvm/rubies/ruby-1.9.3-p392/bin:/usr/local/r vm/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/user/bin", 'RUBY_VERSION' => 'ruby 1.9.3', 'GEM_HOME' => "/usr/local/rvm/gems/ruby-1.9.3-p392", 'GEM_PATH' => "/usr/local/rvm/gems/ruby-1.9.3-p392:/usr/local/rvm/gems/ruby- 1.9.3-p392@global", 'BUNDLE_PATH' => "/usr/local/rvm/gems/ruby-1.9.3-p392" } set :application, "myapp" set :user, "user" set :deploy_to, "/home/admin/#{application}" set :deploy_via, :remote_cache set :use_sudo, false set :scm, "git" set :repository, "git@github.com:myuser/#{application}.git" set :branch, "master" default_run_options[:pty] = true ssh_options[:forward_agent] = true after "deploy", "deploy:cleanup" # keep only the 

I try run cap deploy:setup , I got an error 我尝试运行cap deploy:setup ,出现错误

executing "mkdir -p /home/admin/myapp /home/admin/myapp/release /home/admin/myapp/shared /home/admin/myapp/shared/system /home/admin/myapp/shared/log /home/admin/myapp/shared/pids"
   servers: ["xxx.xxx.xxx.xx"]
Password:
   [xxx.xxx.xxx.xxx] executing command
** [out :: xxx.xxx.xxx.xxx] env : /home/user/.rvm/bin/rvm-shell: No such file or directory
failed : "env PATH: .........etc"

Could you please help me correct my steps and my code ? 您能帮我纠正我的步骤和代码吗?

Try moving the require for rvm-capistrano to the end of the file. 尝试将rvm-capistrano的需求移至文件末尾。 I recently did this as well. 我最近也这样做了。

When you are using rvm you don't need to set the bundle cmd, bundle_dir, or default_environment (unless maybe you are doing it for something else?. 当您使用rvm时,不需要设置bundle cmd,bundle_dir或default_environment(除非您可能正在为其他目的这样做?)。

It also looks like you are trying to detect the ruby version you are using locally to use in your deployment, to do that set :rvm_ruby_string, :local is all you need 看起来您似乎正在尝试检测要在本地用于部署的红宝石版本,要做的就是set :rvm_ruby_string, :local是您所需要的

For me, 为了我,

set :rvm_ruby_string, :local #doesn't work

didn't work. 没有用 I had to use explicit version: 我必须使用显式版本:

set :rvm_ruby_string, "2.1.2" #works
  • capistrano (2.15.5) Capistrano(2.15.5)
  • rvm-capistrano (1.5.2) rvm-capistrano(1.5.2)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM