2014-05-17 10 views
6

मैंने अपने सर्वर को रूबी 2.1.1 में अपडेट किया और मैं अपने सर्वर पर तैनाती के लिए Capistrano का उपयोग कर रहा हूं। हालांकि जब मैं तैनाती करता हूं, मुझे विभिन्न त्रुटियां मिलती हैं। जब मैं अपने तैनाती कोड के साथ खेलता हूं तो हर बार बदलता रहता है। मेरे पास वर्तमान मुद्दा है।बंडल: अनुमति अस्वीकार

अद्यतन/NEW ISSUE

rvm और गहरे लाल रंग का फिर से स्थापित करने के बाद मैं अब तैनाती पर विभिन्न मुद्दों भर में आ रहा हूँ। वर्तमान में मेरी 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/[email protected]/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/[email protected]", 
    "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' 

जब तैनाती चल मैं यह त्रुटि के पार चलो:

Error: RVM was unable to use 'default' 

मैं इस rvm_ruby_string जो मैं सेट नहीं किया है को संदर्भित करता मान। इसके अलावा, मुझे नहीं पता कि त्रुटि क्यों उत्पन्न की जा रही है। शायद आरवीएम सर्वर पर रूबी को पहचान नहीं सकता है?

पुराना मुद्दा

मैं 2.1.1 रूबी के लिए अपने सर्वर अपडेट किया गया। सर्वर में SSHing मैं gem env चलाता हूं default environment विशेषताओं को पकड़ो।

* 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 

मैं अपनी 'मेरा डिफ़ॉल्ट वातावरण मान:

set :default_environment, { 
    'PATH' => '/root/.rvm/gems/ruby-2.1.1/bin:/root/.rvm/gems/[email protected]/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/[email protected]" 
} 

हालांकि जब मैं cap deploy चलाने मैं इस मिलता है। जैसा कि मैंने केवल deploy.rb फ़ाइल में बदल दिया है। `

+0

मशीन में एसएसएच, फ़ाइल अनुमतियों और मालिक की जांच करने के लिए 'बंडल निष्पादन योग्य' खोजने के लिए 'कौन सा बंडल' का उपयोग करें, 'ls -l/path/to/bundle' का उपयोग करें। प्रत्येक पथ के लिए 'ढूंढें/पथ/एक/-नाम बंडल' के साथ' अन्य 'बंडल' निष्पादन योग्य के लिए ऊपर सेट किए गए 'पथ' में देखें। खोल से बंडल कमांड चलाने की कोशिश करें। '#!/Path/to/ruby' देखने के लिए पहली पंक्ति देखें, और इसकी अनुमतियों की जांच के लिए 'ls -l' का उपयोग करें। – Chloe

+0

'कौन सा बंडल' टर्मिनल में कुछ भी प्रिंट नहीं करता है। – jason328

+0

तो यह कहा गया है कि '/ usr/bin/जो: कोई बंडल (... '? ऊपर पथ पर अपना रास्ता सेट करें, फिर फिर से चलाएं। – Chloe

उत्तर

5
  1. You'll want to use default_env to define the SHELL vars
  2. Permission Denied means your SSH user does not have permission to use SSH, RVM or Bundler

Capistrano

पहला कदम default_environment काम करता है सही ढंग से सुनिश्चित करने के लिए है। हालांकि मैं direct reference (search for default_env on this page) नहीं मिल रहा है, मैंने पढ़ा है आप capistrano 3.0+ उपयोग कर रहे हैं कि default_environment द्वारा default_env

ले लिया है, तो आप ऐसा तरह default_env उपयोग करना चाहिए:

set :default_env, { 
    'PATH' => '/root/.rvm/gems/ruby-2.1.1/bin:/root/.rvm/gems/[email protected]/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/[email protected]" 
} 

अनुमति

दूसरा, आपके ssh उपयोगकर्ता कोकी स्थापना तक पहुंचने के लिए सही अनुमति नहीं होगी/bundler

आप टिप्पणी में चर्चा की है के रूप में, यह या तो द्वारा ruby या rvm आपके सिस्टम पर स्थापित किया जा रहा है, या उसकी पहुंच की अनुमति नहीं होने की वजह से हो सकता है।

@chloe एक अद्भुत सिफारिश है -, उस के साथ काम करने के लिए मैं root उपयोगकर्ता (परीक्षण के लिए) का उपयोग करके प्रवेश होता है, आप वास्तव में bundler या rvm डेटा सही ढंग से

+0

मैं v2 का उपयोग कर रहा हूं इसलिए default_env समस्या नहीं है। मैं आरवीएम, रूबी, और बंडलर पुनर्स्थापित किया। त्रुटि चली गई लेकिन अब मुझे एक नई त्रुटि है जो तैनात करते समय पॉप अप करती है। '/usr/local/rvm/rubies/ruby-2.1.1/lib/ruby/2.1.0/rubygems/dependency.rb998:in to_specs ': कुल मिलाकर' बंडलर '(> = 0) नहीं मिला मणि (जेम :: लोडरर) 'हालांकि अब तक सहायता के लिए धन्यवाद। – jason328

+0

मणि इंस्टॉल बंडल –

1

स्थापना रद्द Bundler, RVM उपयोग कर सकते हैं सुनिश्चित करने के लिए, रूबी, और उन्हें फिर से स्थापित करें। यह मेरे लिए काम किया।

+0

का उपयोग कर पहले बंडलर को अलग से इंस्टॉल करने का प्रयास करें मैंने इसे पहले से ही किया है। यह सोचने के साथ आपका तर्क क्या है कि यह इस बार फिर से काम करेगा? – jason328

संबंधित मुद्दे