J'ai suivi le Screencast de Ryan et déployé à VPS. J'utilise donc Unicorn + Nginx + Github + Ubuntu 12.04 LTS + Capistrano. J'utilise aussi I18N pour traduire l'application.
Je voudrais aussi remarquer que j'utilise Carriakrewave pour la photo Téléchargement. CARAIRAIREWAVE garde des photos sur VPS localement. Lorsque je télécharge des images, il fonctionne bien et que les images téléchargées apparaissent. P>
mais chaque fois que je déploie de nouvelles modifications sur le serveur, toutes mes photos sont cassées. C'est vraiment terrible. J'ai essayé manuellement de redémarrer nginx: p> et j'ai essayé de redémarrer Unicorn: p> Ça n'aide pas aussi . P> Lorsque j'essaie d'ouvrir ma page cassée manuellement, il dit: p> lorsque j'essaie de trouver des images dans la console: P> require "bundler/capistrano"
server "my_ip_here", :web, :app, :db, primary: true
set :application, "My_app"
set :user, "deployer"
set :deploy_to, "/home/#{user}/apps/#{application}"
set :deploy_via, :remote_cache
set :use_sudo, false
set :scm, "git"
set :repository, "git@github.com:MyName/#{application}.git"
set :branch, "master"
default_run_options[:pty] = true
ssh_options[:forward_agent] = true
after "deploy", "deploy:cleanup" # keep only the last 5 releases
namespace :deploy do
%w[start stop restart].each do |command|
desc "#{command} unicorn server"
task command, roles: :app, except: {no_release: true} do
run "/etc/init.d/unicorn_#{application} #{command}"
end
end
task :setup_config, roles: :app do
sudo "ln -nfs #{current_path}/config/nginx.conf /etc/nginx/sites-enabled/#{application}"
sudo "ln -nfs #{current_path}/config/unicorn_init.sh /etc/init.d/unicorn_#{application}"
run "mkdir -p #{shared_path}/config"
put File.read("config/database.example.yml"), "#{shared_path}/config/database.yml"
puts "Now edit the config files in #{shared_path}."
end
after "deploy:setup", "deploy:setup_config"
task :symlink_config, roles: :app do
run "ln -nfs #{shared_path}/config/database.yml #{release_path}/config/database.yml"
end
after "deploy:finalize_update", "deploy:symlink_config"
desc "Make sure local git is in sync with remote."
task :check_revision, roles: :web do
unless `git rev-parse HEAD` == `git rev-parse origin/master`
puts "WARNING: HEAD is not the same as origin/master"
puts "Run `git push` to sync changes."
exit
end
end
before "deploy", "deploy:check_revision"
end
3 Réponses :
OK, j'ai trouvé la solution. Le problème est apparu parce que je n'ai pas changé le dossier par défaut pour conserver des images. Vous pouvez trouver votre dossier par défaut dans Pour résoudre ce problème, vous devez créer un autre dossier qui ne vit pas dans votre application. Je choisis le moyen le plus simple. J'ai créé Symlinlk. P> Mes étapes: p> 1) sur votre serveur Allez dans le dossier partagé de votre application (il généré automatiquement via Capistrano). Puis créez votre dossier pour conserver de nouvelles images: p> 2) donne les droits nécessaires à un dossier créé: p> 3) Sur votre ordinateur local dans config / déployable.rb Ajouter: P> public / uploads code>. Cela signifie que chaque
capaclacs déployé code> créera un nouveau dossier vide qui ne contient pas vos fichiers plus anciens.
$ git push
$ cap deploy:symlink
$ cap deploy
Hey, je sais, beaucoup de temps ont passé, mais j'ai le même problème. Et à propos de vos pas. Je ne comprends pas, dans votre première étape, pourquoi devons-nous créer un dossier s'il est automatiquement créé?
bon! J'ai étendu votre recette Capistrano.
# config/recipes/carrierwave.rb namespace :carrierwave do task :uploads_folder do run "mkdir -p #{shared_path}/uploads" run "#{sudo} chmod 775 #{shared_path}/uploads" end after 'deploy:setup', 'carrierwave:uploads_folder' task :symlink do run "ln -nfs #{shared_path}/uploads #{release_path}/public/uploads" end after 'deploy', 'carrierwave:symlink' end
@exire & @charlie Réponse fonctionne sur Capistrano 2.x. Dans Capistrano 3.x, commande Alors, j'ai résolu ceci avec les étapes suivantes: p> ajoutez la ligne suivante à la fin de votre ajoutez ces tâches dans Votre image téléchargée restera enregistrée dans
LIB / CAPISSISRANO / TÂCHES / CORPERWAVE.RAKE CODE> Avec le contenu: LI>
ol>
capfile code> si cela ne l'a pas.
dir.glob ('lib / capistrano / tâches / *. Rake'). Chaque {| r | Importer r} code> p>
li>
config / déployé.rb code> avec d'autres tâches. p>
li>
ol>
après "Déployer: Publishing", 'Carrierwave: Uploads_Folder' Code> LI>
après "Déployer: Publishing", "Carrierwave: Symlink ' Code> Li>
ul>
partagée / téléchargements code> après un nouveau déploiement. p> p>