Rails - Nginx doit être redémarré après le déploiement avec Capistrano?
Je suis à l'aide de Capistrano pour déployer mon application Rails. chaque fois que je le déployer, les changements ne seraient pas présentées sur le navigateur, et j'ai encore besoin de redémarrer nginx pour mettre à jour le site (sudo /etc/init.d/nginx restart). Je ne suis pas vraiment sûr pourquoi, mais ce n'est pas censé être mis à jour après le redémarrage de l'application? (l'utilisation du tactile /app/tmp/restart.txt)
Voici mon déployer.rb
require "rvm/capistrano"
set :rvm_ruby_string, 'ruby-1.9.3-p194@app_name'
set :rvm_type, :user
require "bundler/capistrano"
set :application, "app_name"
set :user, "me"
set :deploy_to, "/home/#{user}/#{application}"
set :deploy_via, :copy
set :use_sudo, false
set :scm, :git
set :repository, "~/Sites/#{application}/.git"
set :branch, "master"
role :web, '1.2.3.4'
role :app, '1.2.3.4'
role :db, '1.2.3.4', :primary => true
role :db, '1.2.3.4'
namespace :deploy do
task :start do ; end
task :stop do ; end
task :restart, :roles => :app, :except => { :no_release => true } do
run "#{try_sudo} touch #{File.join(current_path,'tmp','restart.txt')}"
end
end
êtes-vous sûr de "redémarrer" au lieu de gracieux recharger?
À l'aide de recharger ne semblent être mieux, mais il semble que le code était en fait de travail, après tout. J'ai été le déploiement de la mauvaise façon (cap deploy:froid). Je n'ai pas vraiment besoin de reload/restart nginx l'aide de cap déployer.
À l'aide de recharger ne semblent être mieux, mais il semble que le code était en fait de travail, après tout. J'ai été le déploiement de la mauvaise façon (cap deploy:froid). Je n'ai pas vraiment besoin de reload/restart nginx l'aide de cap déployer.
OriginalL'auteur gerky | 2012-08-13
Vous devez vous connecter pour publier un commentaire.
J'ai réalisé que le déploiement de l'installation correspond à
http://coding.smashingmagazine.com/2011/06/28/setup-a-ubuntu-vps-for-hosting-ruby-on-rails-applications-2/
Lorsque j'ai suivi ce tutoriel(sur un an), j'ai installé légèrement les versions plus récentes de nginx et passenger. À partir de ce que je me souviens, je pense que ces nouvelles versions qui m'a incité à utiliser nginx en tant que service quand j'ai couru n'importe quel type d'init.d commande. (Ubuntu 10.04)
De toute façon je changerais le code
à
Et voir si cela fonctionne.
L'exécution du service est la nouvelle façon de faire les choses est tout ce que je sais. Vous devez uniquement utiliser
:cold
sur le premier déploiement, toutes les mises à jour après faut juste êtrecap deploy
, vous pouvez également exécutercap deploy:restart
Heres une liste utileohh..bon, je viens de découvrir que cap deploy:le froid s'exécute déployer:début au lieu de déployer:redémarrer. Je vais juste utiliser casquette déployer, merci!
OriginalL'auteur hellocodes
Vous ne devriez pas avoir à redémarrer ou de rechargement de nginx. Il suffit de toucher tmp/restart.txt suffisant pour dire passager pour recharger l'application.
Si vous utilisez une version récente de capistrano, vous pouvez même laisser tomber tout l'espace de noms :déploiement de la partie. Capistrano déjà touche tmp/restart.txt après avoir réussi à déployer.
Pas vrai si vous utilisez des Passagers Autonome et le déploiement avec Capistrano à l'aide de /versions/XXX dossiers. Toucher tmp/restart.txt ne semble pas remarquer le changement dans le lien symbolique du dossier actuel/ ~> communiqués de/le plus récent-libération
Sans doute il y a quelque chose de personnalisé avec que de déployer. Par défaut, Capistrano liens à jour avec la dernière version. Passager autonome fonctionne en tant que passager compilé avec nginx ou Apache mod: quand il détecte un fichier nommé current/tmp/restart.txt il redémarre.
OriginalL'auteur Tiago Franco
Peut-être le problème, c'est comment exactement vous avez commencé à Passagers. Capistrano points le lien 'en cours' à la dernière version. La tâche
est l'aide que 'en cours' à la place restart.txt. Mais selon http://code.google.com/p/phusion-passenger/issues/detail?id=547 , le Passager est "épinglé" pour le 'courant' il a été lancé, et que la tâche écrit "restart.txt' au courant 'en cours', pour ainsi dire. Si le Passager ne pas "voir" qu'il est censé redémarrer.
Si vous cd ed au "courant" et a commencé à Passagers à partir de là, il est épinglé dans le répertoire le lien symbolique pointe vers à ce point et ne pas suivre l'évolution du lien symbolique. Donc, vous pourriez avoir besoin pour vous débarrasser de la "cd ... && passager commencer..." et indiquez le chemin d'accès pour les Passagers directement. J'ai étendu le déployer:de début et de déployer:arrêter les tâches que vous avez dans votre recipie ainsi dire
OriginalL'auteur Henning Kockerbeck