Quelle est la bonne façon de deploy:setup
et de faire un déploiement à froid avec Capistrano?Comment configurer un serveur pour le déploiement et faire un déploiement à froid avec Capistrano?
En utilisant
- this
deploy.rb
- Capistrano v2.14.2
- Vagrant virtualiser mon serveur,
ceci est mon scénario:
lors de l'exécution
deploy:setup
, Capistrano utilise des privilèges root pour préparer la structure de répertoire pour le déploiement:$ cap deploy:setup * 2013-02-28 14:50:21 executing `deploy:setup' * executing "sudo -p 'sudo password: ' mkdir -p /home/vagrant/example /home/vagrant/example/releases /home/vagrant/example/shared /home/vagrant/example/shared/system /home/vagrant/example/shared/log /home/vagrant/example/shared/pids" servers: ["example.com"] [example.com] executing command command finished in 29ms * executing "sudo -p 'sudo password: ' chmod g+w /home/vagrant/example /home/vagrant/example/releases /home/vagrant/example/shared /home/vagrant/example/shared/system /home/vagrant/example/shared/log /home/vagrant/example/shared/pids" servers: ["example.com"] [example.com] executing command command finished in 11ms
encore sur
deploy:cold
Capistrano tente de la caisse (de git dans ce cas) et écrire que l'utilisateurvagrant
- l'utilisateur spécifié dansdeploy.rb
:$ cap deploy:cold * 2013-02-28 14:50:47 executing `deploy:cold' * 2013-02-28 14:50:47 executing `deploy:update' ** transaction: start * 2013-02-28 14:50:47 executing `deploy:update_code' updating the cached checkout on all servers executing locally: "git ls-remote [email protected]:mariusbutuc/realtime-faye.git master" command finished in 2360ms * executing "if [ -d /home/vagrant/example/shared/cached-copy ]; then cd /home/vagrant/example/shared/cached-copy && git fetch -q origin && git fetch --tags -q origin && git reset -q --hard a7c05516bc31c2c18f89057c02f84bfad83a6b59 && git clean -q -d -x -f; else git clone -q [email protected]:mariusbutuc/realtime-faye.git /home/vagrant/example/shared/cached-copy && cd /home/vagrant/example/shared/cached-copy && git checkout -q -b deploy a7c05516bc31c2c18f89057c02f84bfad83a6b59; fi" servers: ["example.com"] [example.com] executing command ** [example.com :: out] fatal: could not create work tree dir '/home/vagrant/example/shared/cached-copy'.: Permission denied command finished in 26ms *** [deploy:update_code] rolling back * executing "rm -rf /home/vagrant/example/releases/20130228195049; true" servers: ["example.com"] [example.com] executing command command finished in 7ms failed: "sh -c 'if [ -d /home/vagrant/example/shared/cached-copy ]; then cd /home/vagrant/example/shared/cached-copy && git fetch -q origin && git fetch --tags -q origin && git reset -q --hard a7c05516bc31c2c18f89057c02f84bfad83a6b59 && git clean -q -d -x -f; else git clone -q [email protected]:mariusbutuc/realtime-faye.git /home/vagrant/example/shared/cached-copy && cd /home/vagrant/example/shared/cached-copy && git checkout -q -b deploy a7c05516bc31c2c18f89057c02f84bfad83a6b59; fi'" on example.com
Bien sûr, le rapport
deploy:check
pas de surprises bares: l'utilisateurvagrant
ne peut pas écrire dans les répertoires créés lors dedeploy:setup
puisque les deux utilisateurs appartiennent à di groupes fférents -root:root
par rapportvagrant:vagrant
:$ cap deploy:check [...] The following dependencies failed. Please check them and try again: --> You do not have permissions to write to `/home/vagrant/example'. (example.com) --> You do not have permissions to write to `/home/vagrant/example/releases'. (example.com) --> `/home/vagrant/example/shared' is not writable (example.com)
Quel est le raisonnement derrière cela, et quelle condition ne se contente pas encore si le déploiement passe cette question?
et vous ne voulez pas modifier manuellement les autorisations? – gmaliar
J'ai eu exactement le même problème ... Je ne comprends pas pourquoi les répertoires sont créés en tant qu'utilisateur root au lieu de l'utilisateur spécifié dans le fichier 'deploy.rb'. Je suppose que c'est un bug? Je finis juste par entrer dans SSH et changer les permissions manuellement. – aardvarkk