Question

Je dirige Unicorn et j'essaie de faire fonctionner zéro des redémarrages sur les temps d'arrêt.

Jusqu'à présent, c'est toute une sauce géniale, le Master Process Forks et commence 4 nouveaux travailleurs, puis tue l'ancien, tout le monde est heureux.

Nos scripts envoient la commande suivante pour redémarrer la licorne:

kill -s USR2 `cat /www/app/shared/pids/unicorn.pid`

En surface, tout a l'air super, mais il s'avère que la licorne ne recharge pas la production.rb. (Chaque fois que nous déployons, nous changeons le config.action_controller.asset_host Valeur pour un nouveau point de terminaison de conteneur CDN avec nos actifs pré-compilés).

Après avoir redémarré Unicorn de cette manière, l'hôte d'actif pointe toujours vers l'ancienne version. Faire un réel Le redémarrage (c'est-à-dire: arrêter le processus maître, puis recommencer Unicorn à partir de zéro) ramasse les nouveaux modifications de configuration.

preload_app est réglé sur true dans notre fichier de configuration de la licorne.

Des pensées?

Était-ce utile?

La solution

Je suppose que vos licornes sont redémarrées dans l'ancien répertoire de production plutôt que dans le nouveau répertoire de production - en d'autres termes, si votre répertoire de travail dans Unicorn.rb est <capistrano_directory>/current, vous devez vous assurer que le lien symbolique se produit avant d'essayer de redémarrer les licornes.

Cela expliquerait pourquoi les arrêter et les démarrer fonctionnent manuellement: vous faites ce post-déploiement, probablement, ce qui les fait commencer dans le bon répertoire.

Lorsque dans votre processus de déploiement redémarrez-vous les licornes? Vous devez vous assurer que le signal USR2 est envoyé après que le nouveau répertoire de version est systémique comme courant.

Si cela n'aide pas, veuillez vous faire un œuvre Unicorn.rb et Deploy.rb; Cela rendra beaucoup plus facile de déboguer ce problème.

Autres conseils

Garde en tête que:Votre répertoire de travail dans Unicorn.rb doit être: / votre / Cap / Directory / Current

NE PAS être: file.expand_path ("../ ..", DOSSIER)

Parce que l'erreur de fourniture de liaison souple et Linux Soft: Link Soft ne peut pas bien fonctionner.

par exemple:

CD Current #Current est un lien souple vers un autre répertoire

... ...

Lorsque nous obtenons notre répertoire de travail, nous avons obtenu le chemin absolu et non le chemin du "courant"

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top