Déployer de Git en utilisant Capistrano sans un redémarrage à froid?
-
21-08-2019 - |
Question
J'ai un problème au moment où nous courons un CMS dans un site (browsercms) qui permet de les télécharger des fichiers utilisateur. Cependant, chaque fois que je faire un Déployez Capistrano court un redémarrage à froid nuking ainsi tout Uploaded fichiers.
Quelqu'un at-il des suggestions quant à la façon de prévenir le redémarrage à froid, et juste faire une traction ou une façon de déplacer les fichiers téléchargés ailleurs, sans avoir à modifier le code d'application?
La solution
Cela pourrait ne pas être la bonne approche.
Vous devez inclure votre dossier 'images' dans votre .gitignore et un lien symbolique dans le dossier current_release de $ / images à $ shared / images.
Cela peut être fait automatiquement à chaque déploiement si vous mettez dans votre deploy.rb:
task :link_imgs do
run "ln -s #{shared_path}/photos #{release_path}/photos"
end
after "deploy:update_code", :link_imgs
Je l'ai fait la même chose avec mon CMS et il fonctionne comme un charme
Autres conseils
Cela ne correspond pas tout à fait vos critères de « sans avoir à modifier le code d'application ».
Cependant après avoir exécuté un problème similaire, je bougeais mon image téléchargée à partir de /public/images
le répertoire /public/system/images
ne /public/system
« versionné » par chaque déploiement de Capistrano de sorte que les images survivre.
pourrait-il être le Capistrano 'versioning' origine du problème (au lieu d'une remise à zéro git)
cap Déployez deploy: mise à jour et deploy: restart
deploy: mise à jour rend le versioning, la copie des choses
deploy: restart ne le vrai redémarrage, surcharger votre convenince, généralement dans votre fichier config / deploy.rb
namespace :deploy do
desc "Softly restart the server"
task :restart, :roles => :app, :except => { :no_release => true } do
my_own.restart_recipe
end
end