2014-05-17 12 views
6

Zaktualizowałem swój serwer do Ruby 2.1.1 i używam Capistrano do wdrożenia na moim serwerze. Jednak po wdrożeniu otrzymuję różne błędy. Za każdym razem zmieniając się podczas gry z moim kodem wdrożenia. Poniżej znajduje się aktualny numer, który mam.: Odmowa uprawnień

UPDATE/nowej emisji

Po ponownym zainstalowaniu RVM i Ruby Jestem teraz napotykając na różne kwestie wdrożenia. Oto mój plik 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' 

Uruchamiając Deploy spotykam tego błędu:

Error: RVM was unable to use 'default' 

Zakładam ten odnosi się do rvm_ruby_string której nie ustawiony. Poza tym nie mam pojęcia, dlaczego powstaje błąd. Może RVM nie potrafi rozpoznać rubinu na serwerze?

stary problem,

zaktualizowałem mojego serwera ruby ​​2.1.1. Po przejściu na serwer uruchamiam gem env chwytam względne cechy default environment.

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]" 
} 

Jednak gdy uruchamiam cap deploy uzyskać to:

* 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 

zakładam jego domyślną środowiska. Ponieważ jest to jedyna rzecz, którą zmieniłem w moim pliku deploy.rb. `

+0

SSH do maszyny, użyj 'which bundle', aby znaleźć plik wykonywalny pakietu, użyj' ls -l/path/to/bundle' aby sprawdzić uprawnienia i właściciela pliku. Spójrz na 'PATH', która została ustawiona powyżej dla innego pliku' bundle' również z 'find/path/one/-name bundle' dla każdej ścieżki. Spróbuj uruchomić komendę pakunku z powłoki. Spójrz na pierwszą linię, aby zobaczyć '#!/Path/to/ruby', i użyj' ls -l', aby sprawdzić jego uprawnienia. – Chloe

+0

'który pakiet' nie drukuje niczego w terminalu. – jason328

+0

Tak więc powiedział '/ usr/bin/który: brak pakietu w (...'? Ustaw ścieżkę do powyższej ścieżki, a następnie uruchom co jeszcze raz – Chloe

Odpowiedz

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

Pierwszym krokiem jest zapewnienie default_environment działa poprawnie. Chociaż nie mogę znaleźć direct reference (search for default_env on this page), czytałem że default_environment został zastąpiony przez default_env

Jeśli używasz capistrano 3.0+, należy użyć default_env tak:

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]" 
} 

Permission

Po drugie, Twój użytkownik nie będzie mieć odpowiednich uprawnień dostępu do instalacji Ruby/bundler

Jak już omówiono w komentarzach, może to być spowodowane przez ruby lub rvm niezainstalowanie w systemie lub brak uprawnień dostępu do niego.

@chloe ma niesamowity zalecenie - aby pracować na tym, by zalogować się za pomocą root użytkownika (do testu), aby upewnić się, że rzeczywiście można uzyskać dostęp do bundler lub rvm dane poprawnie

+0

Używam v2, więc default_env nie jest problemem. Zainstalowałem ponownie rvm, ruby ​​i bundler. Błąd zniknął, ale mam teraz nowy błąd, który pojawia się po uruchomieniu wdrożenia. '/usr/local/rvm/rubies/ruby-2.1.1/lib/ruby/2.1.0/rubygems/dependency.rb:298:in to_specs ': Nie można znaleźć' bundler '(> = 0) wśród 8 całkowitej liczby gem (s) (Gem :: LoadError) 'Dzięki za dotychczasową pomoc. – jason328

+0

Spróbuj zainstalować osobno paker oddzielnie za pomocą pakietu instalacyjnego gem –

1

Odinstaluj Bundler RVM, Ruby i ponownie je zainstaluj. To zadziałało dla mnie.

+0

Zrobiłem to już. Jaka jest Twoja logika w myśleniu, że znów będzie działać? – jason328

Powiązane problemy