J'ai configuré un serveur Node.js, mais comment le lancer le mieux?Node.js, express et cluster
Ma stratégie pour l'instant est d'utiliser cluster (http://learnboost.github.com/cluster/). Cela fonctionne surtout très bien. J'ai la configuration suivante dans mon fichier app.js (créé avec express):
cluster(app)
.use(cluster.reload())
.use(cluster.reload('views', {extensions: ['.js', '.ejs']}))
.use(cluster.logger('logs'))
.use(cluster.stats())
.use(cluster.repl('/Users/testuser/work/1test/test.sock'))
.use(cluster.debug())
.use(cluster.pidfiles())
.use(cluster.cli())
.listen(3000);
Il fonctionne sur mon Mac quand j'effectuer un test local. Je lance avec la commande
nohup node app.js &
Mais quand je lance sur Linux et détachez du terminal maître meurt - les fils de travail travaillent encore. Sur Mac il fonctionne même quand je ferme le terminal.
Je lis qu'il pourrait être nécessaire de changer l'utilisateur, cela peut apparemment être fait en cluster avec: .set (« user », « rambo »)
Quelqu'un at-il une « meilleure pratique » pour lancer node.js en tant que "Daemon" avec cluster afin de pouvoir détacher le terminal?
Si je change d'utilisateur, à qui dois-je être connecté au démarrage? Dois-je utiliser un programme comme un écran pour se détacher du terminal sans tuer aucun processus?
Merci beaucoup pour la réponse - j'ai compris que j'avais par erreur mis à jour vers le noeud 0.5.x. De plus, je n'ai pas pu me connecter à mysql, ce qui a provoqué un timeout après lequel le thread principal est mort - sans aucune erreur écrite dans le journal. Une fois que j'ai rétrogradé à 0.4.9 et testé l'accès à MySQL, j'étais sûr que je pouvais me connecter à 127.0.0.1 avec le cluster utilisateur donné qui fonctionnait très bien et stable. Je peux aussi me détacher du terminal. – Baxter
On dirait que vous avez eu d'autres problèmes, mais la suggestion de @ idefine est bonne: forever est presque certainement une solution plus robuste que screen ou nohup. – mattbornski