jas*_*328 6 ruby capistrano ruby-on-rails bundler
我将我的服务器更新为ruby 2.1.1,并且我使用Capistrano进行部署到我的服务器.但是,当我部署时,我收到各种错误.我每次使用部署代码时都会更改.以下是我当前的问题.
重新安装rvm和ruby后,我现在遇到了部署的不同问题.这是我目前的deploy.rb文件.
require "bundler/capistrano"
require "rvm/capistrano"
set :rvm_type, :system
set :rvm_ruby_string, "ruby-2.1.1"
require 'bundler/capistrano'
# Capistrano
set :default_environment, {
'PATH' => '/root/.rvm/gems/ruby-2.1.1/bin:/root/.rvm/gems/ruby-2.1.1@global/bin:/usr/local/rvm/rubies/ruby-2.1.1/bin:/usr/local/rvm/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games',
'GEM_HOME' => "/root/.rvm/gems/ruby-2.1.1",
'GEM_PATH' => "/root/.rvm/gems/ruby-2.1.1:/root/.rvm/gems/ruby-2.1.1@global",
"MY_RUBY_HOME" => "/usr/local/rvm/rubies/ruby-2.1.1",
"BUNDLE_PATH" => "/usr/local/rvm/rubies/ruby-2.1.1/bin/bundle"
}
set :rails_env, "production"
set :branch, "master"
set :app_server, "ip"
set :db_server, "ip"
server app_server, :app, :web
role :db, db_server, :primary => true
set :keep_releases, 1
set :deploy_to, "/var/www"
set :user, :jason
set :password, "cool password here"
set :repository, "git url" # Your clone URL
set :scm, "git"
set :scm_username, "jason"
set :scm_passphrase, "password"
set :use_sudo, false
default_run_options[:pty] = true
set :ssh_options, {:forward_agent => true}
after 'deploy:restart', 'deploy:cleanup'
after 'deploy:update', 'deploy:create_symlink'
Run Code Online (Sandbox Code Playgroud)
运行部署时遇到此错误:
Error: RVM was unable to use 'default'
Run Code Online (Sandbox Code Playgroud)
我认为这是指rvm_ruby_string我没有设定的.除此之外,我不知道为什么会产生错误.也许RVM无法识别服务器上的ruby?
我将我的服务器更新为ruby 2.1.1.SSH连接到我运行的服务器gem env抓住相对default environment特征.
set :default_environment, {
'PATH' => '/root/.rvm/gems/ruby-2.1.1/bin:/root/.rvm/gems/ruby-2.1.1@global/bin:/usr/local/rvm/rubies/ruby-2.1.1/bin:/usr/local/rvm/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games',
'GEM_HOME' => "/root/.rvm/gems/ruby-2.1.1",
'RUBY_VERSION' => 'ruby 2.1.1',
'GEM_PATH' => "/root/.rvm/gems/ruby-2.1.1:/root/.rvm/gems/ruby-2.1.1@global"
}
Run Code Online (Sandbox Code Playgroud)
但是,当我跑步时,cap deploy我得到这个:
* executing "cd /var/www/releases/20140517014048 && bundle install --gemfile /var/www/releases/20140517014048/Gemfile --path /var/www/shared/bundle --deployment --quiet --without development test"
servers: ["ip address"]
["ip address"] executing command
** [out :: ipaddress] sh: 1: bundle: Permission denied
Run Code Online (Sandbox Code Playgroud)
我认为它是我的默认环境.因为这是我在deploy.rb文件中唯一更改的内容.`
- 您将要用于
default_env定义SHELL变量Permission Denied表示您的SSH用户无权使用SSH,RVM或Bundler
Capistrano的
第一步是确保default_environment正常工作.虽然我找不到直接引用(default_env在此页面上搜索),但我读到的default_environment已经被取代了default_env
如果你正在使用capistrano 3.0+,你应该这样使用default_env:
set :default_env, {
'PATH' => '/root/.rvm/gems/ruby-2.1.1/bin:/root/.rvm/gems/ruby-2.1.1@global/bin:/usr/local/rvm/rubies/ruby-2.1.1/bin:/usr/local/rvm/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games',
'GEM_HOME' => "/root/.rvm/gems/ruby-2.1.1",
'RUBY_VERSION' => 'ruby 2.1.1',
'GEM_PATH' => "/root/.rvm/gems/ruby-2.1.1:/root/.rvm/gems/ruby-2.1.1@global"
}
Run Code Online (Sandbox Code Playgroud)
允许
其次,您的ssh用户将无权访问Ruby/ 安装/bundler
正如您在评论中所讨论的,这可能是由系统安装ruby或未rvm安装,或者没有访问权限.
@chloe有一个惊人的建议 - 使用它,我会使用root用户登录(测试),以确保您可以实际正确访问bundler或rvm数据