Je déploie mon application Rails 3 en utilisant capistrano.Sudo n'a pas accès aux commandes shell lors du déploiement avec Capistrano
J'ai sur l'utilisateur (déploiement) qui a été ajouté à sudoers. C'est l'utilisateur avec lequel je déploie.
Lorsque je me connecte au serveur que je Déployez avoir accès à toutes les commandes de pierres précieuses dont j'ai besoin .ie: bundle, chaque fois, etc.
Capistrano semble fonctionner comme si sudo, et lorsque je tente:
sudo whenever
Je reçois
sudo: whenever: command not found
Cela signifie que chaque fois que j'essaie de déployer, il échoue et annule.
J'ai essayé d'installer: use_sudo false dans mon fichier deploy.rb mais toujours pas de chance
set :user, "deploy"
set :runner, user
set :use_sudo, false
Toutes les suggestions?
Voici mon script de déploiement complet dans le cas où il y a quelque chose là-bas que je l'ai manqué:
require 'config/boot'
require 'hoptoad_notifier/capistrano'
require 'capistrano/ext/multistage'
require "whenever/capistrano"
#
set :whenever_command, "bundle exec whenever"
set :application, "MYAPP"
set :repository, "[email protected]:myAccount/myRepos.git"
# only keep 3 previous releases after cleanup
set :keep_releases, 3
set :scm, "git"
set :scm_user, "me"
set :branch, lambda {rails_env}
set :deploy_to, lambda {"/var/www/#{application}/#{rails_env}"}
default_run_options[:pty] = true
role :web, "xxx.xxx.xxx.xxx" # Your HTTP server, Apache/etc
role :app, "xxx.xxx.xxx.xxx" # This may be the same as your `Web` server
role :db, "xxx.xxx.xxx.xxx", :primary => true # This is where Rails migrations will run
set :user, "deploy"
set :runner, user
set :use_sudo, false
ssh_options[:paranoid] = false
ssh_options[:port] = 22
namespace :deploy do
task :start do ; end
task :stop do ; end
task :restart, :roles => :app do
run " touch #{File.join(current_path,'tmp','restart.txt')}"
end
end
namespace :bundle do
desc "run bundle install"
task :install do
run "cd #{current_release} && bundle install"
end
end
namespace :tail do
desc "Tail the current environment's log file"
task :log, :roles => :app do
stream "tail -f #{shared_path}/log/#{rails_env}.log"
end
desc "Tail the new relic log file"
task :new_relic, :roles => :app do
stream "tail -f #{shared_path}/log/new_relic.log"
end
end
before "deploy:restart", "bundle:install"
after "deploy:restart", "deploy:cleanup"
after "deploy:restart", "whenever:update_crontab"
Je dois ajouter que j'utilise plusieurs étapes Capistrano donc la variable RAILS_ENV est situé dans /deploy/staging.rb – bodacious
Gavin, s'il vous plaît ajouter l'erreur et stacktrace que vous obtenez? Ce – Augusto
est la partie pertinente: ** [out :: xxx.xxx.xxx.xxx] sh: chaque fois: Introuvable commande terminé *** [déployer: update_code] * reculer exécution « rm - rf/var/www/mysite/staging/releases/20110215174217; true " serveurs: [" xxx.xxx.xxx.xxx "] [xxx.xxx.xxx.xxx] commande d'exécution commande terminée Echec:" sh -c 'cd/var/www/mysite/staging/releases/20110215174217 && chaque fois --clear-crontab mysite' "on xxx.xxx.xxx.xxx – bodacious