Comment redémarrer gracieusement thin + nginx?

J’ai mes serveurs Thin configurés avec nginx et mon application ROR s’exécute dessus.

Lancer thin restart lorsque je publie une mise à jour de mon code introduit un temps d’arrêt dans mon application. J’essayais de comprendre comment redémarrer gracieusement les instances Thin en cours d’exécution, mais je n’arrivais pas à trouver une bonne solution.

Quelqu’un a-t-il pu y parvenir?

 # Restart just the thin server described by that config sudo thin -C /etc/thin/mysite.yml restart 

Nginx continuera à exécuter et à traiter les demandes. Si vous avez votre ensemble Nginx pour utiliser plusieurs serveurs en amont, par exemple

 server { listen 80; server_name myapp.mysite.com; # ... location / { try_files $uri $uri/index.html /cache$uri.html $uri.html @proxy; } location @proxy { proxy_pass http://myapp.rails; } } upstream myapp.rails { server 127.0.0.1:9001 max_fails=1 fail_timeout=10s; server 127.0.0.1:9002 max_fails=1 fail_timeout=10s; server 127.0.0.1:9003 max_fails=1 fail_timeout=10s; } 

… alors chaque instance sera redémarrée à son tour et Nginx acheminera automatiquement les requêtes autour de l’un des proxys s’il est en panne.