Implementar desde Git usando Capistrano sin un restablecimiento completo?
-
21-08-2019 - |
Pregunta
Tengo un problema en el momento en que se están ejecutando un CMS dentro de un sitio (browsercms) que permite a los usuarios subir archivos. Sin embargo, cada vez que hacer un despliegue Capistrano se ejecuta un restablecimiento por lo tanto atacar con armas nucleares que hayan sido cargados archivos.
¿Alguien tiene alguna sugerencia en cuanto a cómo prevenir el restablecimiento completo, y sólo hacer un tirón, o una manera de mover los archivos cargados en otro lugar, sin tener que cambiar el código de la aplicación?
Solución
Esto podría no ser el enfoque correcto.
Debe incluir la carpeta 'imágenes' en su .gitignore y enlazar simbólicamente la carpeta $ / current_release imágenes para compartir $ / imágenes.
Esto puede hacerse automáticamente en cada despliegue, si usted pone en su deploy.rb:
task :link_imgs do
run "ln -s #{shared_path}/photos #{release_path}/photos"
end
after "deploy:update_code", :link_imgs
He hecho lo mismo con mi CMS y funciona como un encanto
Otros consejos
Esto no satisface los criterios de "sin tener que cambiar el código de la aplicación".
Sin embargo después de funcionar en un problema similar cambié mi imagen cargada de /public/images
a /public/system/images
la /public/system
directorio no está 'versiona' en cada lance Capistrano por lo que las imágenes sobrevivir.
¿Podría ser el Capistrano 'versiones' que causa el problema (en lugar de un git reset)
tapa de desplegar Distribuir: update y Distribuir: reinicio
Distribuir: update hace que el control de versiones, la copia de material
Distribuir: reinicio hace el verdadero reinicio, sobrecargue a su convenince, por lo general en su config / deploy.rb archivo
namespace :deploy do
desc "Softly restart the server"
task :restart, :roles => :app, :except => { :no_release => true } do
my_own.restart_recipe
end
end