J'essaie de déployer ma petite application web Catalyst en utilisant Plack/Starman. Toute la documentation semble suggérer que je veux l'utiliser en combinaison avec nginx. Quels sont les avantages de cela? Pourquoi ne pas utiliser Starman directement sur le port 80?Pourquoi utiliser nginx avec Catalyst/Plack/Starman?
Répondre
Il n'a pas à être nginx en particulier, mais vous voulez une sorte de mandatement du serveur frontend à votre serveur d'applications pour quelques raisons:
Alors que vous pouvez exécuter le serveur Catalyst sur un Port élevé, en tant qu'utilisateur ordinaire, lors de l'exécution du serveur frontal sur le port 80.
Pour diffuser des fichiers statiques (ressources ordinaires telles que des images, JS et CSS, ainsi que tout type de téléchargement, vous pouvez utiliser X -Sendfile ou X-Accel-Redirect avec) sans attacher un processus perl pendant la durée du téléchargement.
Cela rend les choses plus faciles si vous voulez passer à une config plus complexe impliquant, par ex. Edge Side Inclut, ou que le serveur web serve directement depuis memcached ou mogilefs (les deux choses que nginx peut faire), ou une configuration d'équilibrage de charge/HA.
J'ai posé cette question sur #plack et a obtenu la réponse suivante @nothingmuch (j'ai ajouté le formatage):
Avec nginx, vous pouvez configurer loadbalancing/stuff type de basculement. Si le site est petit/simple, il pourrait être overkill.
Je ne connais aucun des inconvénients de que pourrait avoir Starman. Peut-être que si vous avez beaucoup de hits sur fichiers statiques nginx utiliserait moins cpu/mémoire pour les gérer, mais c'est peu probable d'être significatif dans une application web typique . De gros téléchargements pourraient amarrer les travailleurs Starman pour le fichier statique téléchargements si. (Peut-être pas, avec sendfile.) C'est à peu près tout ce que je peux penser.
... Une configuration de basculement peut être agréable si vous voulez faire des mises à niveau sans temps d'arrêt. (« Fail » l'ancienne version .)
Une autre raison est qu'un serveur frontend léger (même Apache est OK) consomme moins de mémoire par connexion à un processus Starman typique (quelques Mo par rapport à des dizaines ou plus de 100 Mo). Comme une connexion est ouverte depuis un certain temps, en particulier si vous souhaitez utiliser des connexions persistantes, vous pouvez prendre en charge un grand nombre de connexions simultanées avec beaucoup moins de RAM. Assurez-vous seulement que la taille de la mémoire tampon du serveur frontal proxy est suffisamment grande pour charger une réponse HTTP typique immédiatement à partir du backend. Ensuite, le backend est libre de traiter la demande suivante.
- 1. Comment utiliser nginx avec PHP?
- 2. Pourquoi Passenger 3.0 avec nginx planter au démarrage (?) Puis 403s?
- 3. nginx avec mod_wsgi
- 4. nginx avec passager
- 5. nginx/apache/php vs nginx/php
- 6. Problème SQLite3 avec nginx/passager
- 7. âge max avec nginx/passager/memcached/rails2.3.5
- 8. Avec nginx/php-fpm, l'en-tête de localisation est parfois ignoré par le navigateur. Pourquoi?
- 9. nginx + passager ne pas utiliser le fichier rackup
- 10. pourquoi devrais-je utiliser Java avec php
- 11. Règles de réécriture nginx avec Passager
- 12. L'installation du passager avec nginx échoue
- 13. Développement de module Nginx avec mysql posible?
- 14. php redirect ne fonctionne pas avec Nginx
- 15. Mod Rewrite pour NGINX
- 16. problème mvc dans nginx
- 17. LightHttpd vs Nginx
- 18. RVM, Passager, Nginx au-dessus de passagers existants/Nginx
- 19. Dois-je utiliser nginx pour mon site d'hébergement d'images avec un trafic élevé?
- 20. Module de téléchargement nginx
- 21. Pourquoi ne devrais-je pas utiliser async (evented) IO
- 22. Pourquoi utiliser Prism?
- 23. Nginx pour dir rewrite
- 24. nginx et auth_basic
- 25. question d'installation nginx
- 26. réécrire apache à nginx
- 27. problème syntaxe Nginx « ~ * »
- 28. nginx rewrite question
- 29. Nginx Rewrite URL Question
- 30. serveurs web nginx et apache
J'ai une question de suivi, Hobbs: si vous utilisez un framework tel que Dancer ou Catalyst, pourquoi avez-vous besoin de starman? Ne pourriez-vous pas simplement envoyer la requête au serveur par défaut fourni par Plack/Dancer? –
@Vijay Le serveur par défaut utilisé par Dancer, et par Catalyst si vous exécutez le script serveur sans les options '-f' ou' -k', ne peut gérer qu'une seule requête à la fois, donc ce n'est pas génial pour la production. D'un autre côté, si vous lancez le script du serveur Catalyst avec '-f', ce qu'il utilise est Starman :) – hobbs
Ah, excellent! Cela clarifie finalement la dernière chose que j'essayais de comprendre.J'ai écrit mon explication pour la pile nginx/starman/dancer ici (si vous avez des commentaires/idées supplémentaires que j'ai raté, je les apprécierais vraiment): http://stackoverflow.com/questions/12127566/an-explanation -de-la-nginx-starman-dancer-web-stack –