8
votes

Comment garder l'application de nœud en cours d'exécution?

J'ai enfin fini de convertir l'un de mes projets pour utiliser node.js, mais je rencontre maintenant des problèmes de garder mon app exécutant sur le serveur: / Le problème est que si je ferme mon noeud de session de mastic s'arrête. J'ai fait beaucoup de recherche sur ce problème, et il semble que la création d'un script code> UPStart code> et à l'aide du module Forever code> est le moyen d'aller. p >

J'ai commencé à googler et j'ai créé ce script UPSTART: P>

jjmpsp@alex:~$ npm install forever
npm ERR! error installing forever@0.9.2 Error: No compatible version found: node-fork@'>=0.4.0- <0.5.0-'
npm ERR! error installing forever@0.9.2 No valid targets found.
npm ERR! error installing forever@0.9.2 Perhaps not compatible with your version of node?
npm ERR! error installing forever@0.9.2     at installTargetsError (/usr/local/lib/node_modules/npm/lib/cache.js:424:10)
npm ERR! error installing forever@0.9.2     at /usr/local/lib/node_modules/npm/lib/cache.js:406:17
npm ERR! error installing forever@0.9.2     at saved (/usr/local/lib/node_modules/npm/lib/utils/npm-registry-client/get.js:136:7)
npm ERR! error installing forever@0.9.2     at Object.cb [as oncomplete] (/usr/local/lib/node_modules/npm/node_modules/graceful-fs/graceful-fs.js:36:9)
npm ERR! Error: No compatible version found: node-fork@'>=0.4.0- <0.5.0-'
npm ERR! No valid targets found.
npm ERR! Perhaps not compatible with your version of node?
npm ERR!     at installTargetsError (/usr/local/lib/node_modules/npm/lib/cache.js:424:10)
npm ERR!     at /usr/local/lib/node_modules/npm/lib/cache.js:406:17
npm ERR!     at saved (/usr/local/lib/node_modules/npm/lib/utils/npm-registry-client/get.js:136:7)
npm ERR!     at Object.cb [as oncomplete] (/usr/local/lib/node_modules/npm/node_modules/graceful-fs/graceful-fs.js:36:9)
npm ERR! Report this *entire* log at:
npm ERR!     <http://github.com/isaacs/npm/issues>
npm ERR! or email it to:
npm ERR!     <npm-@googlegroups.com>
npm ERR!
npm ERR! System Linux 3.8.4-x86_64-linode31
npm ERR! command "node" "/usr/local/bin/npm" "install" "forever"
npm ERR! cwd /home/jjmpsp
npm ERR! node -v v0.5.11-pre
npm ERR! npm -v 1.0.106
npm ERR! Error: EACCESS, Permission denied 'npm-debug.log'
npm ERR! Report this *entire* log at:
npm ERR!     <http://github.com/isaacs/npm/issues>
npm ERR! or email it to:
npm ERR!     <npm-@googlegroups.com>
npm ERR!
npm ERR! System Linux 3.8.4-x86_64-linode31
npm ERR! command "node" "/usr/local/bin/npm" "install" "forever"
npm ERR! cwd /home/jjmpsp
npm ERR! node -v v0.5.11-pre
npm ERR! npm -v 1.0.106
npm ERR! path npm-debug.log
npm ERR! code EACCESS
npm ERR!
npm ERR! Additional logging details can be found in:
npm ERR!     /home/jjmpsp/npm-debug.log
npm not ok


4 commentaires

Semble Lite, vous exécutez une ancienne version du nœud. Pouvez-vous essayer de mettre à niveau et de voir si cela fait une différence. Pour voir quelle version vous exécutez, vous pouvez exécuter processus.version; dans une console de nœud. Je pense que vous souhaitez également exécuter l'installation avec le drapeau global. NPM Installer -g pour toujours


jjmpsp @ alex: ~ $ nœud> processus.version 'v0.10.5'


J'ai essayé de courir 'sudo npm install -g pour toujours' aussi: / hmm


Il est étrange que le journal d'erreur indique toujours «NPM ERR! Node -V V0.5.11-PRE 'Quand je sais que je cours v0.10.5


7 Réponses :


6
votes
  1. Tout d'abord, vous devez vous concentrer sur ce qui tue votre serveur de nœuds. Pour toujours ne va pas "corriger" le problème. Chaque fois que le nœud quitte / le redémarre sera causer des problèmes et que vos utilisateurs peuvent perdre des données. UPStart ou pour toujours ne viens que de la bande. (En fait, UPSTART redémarrera votre serveur, mais cela abandonnera si votre serveur ne reste pas en marche.)

    La seule solution à long terme pour trouver / corriger chaque source d'erreurs et écrire une suite de test de régression pour vérifier que chaque problème précédent a été corrigé.

  2. Démarrer le démarrage ne fonctionnera pas

  3. Votre pour toujours est enfoncé à cause des autorisations. Essayez sudo npm install -g pour toujours Avancée: Votre configuration de serveur entière doit être scriptée. De cette façon, vous pouvez configurer un serveur de test / de stadification qui mirent la production. Un moyen simple de faire est Vagrant . Vous pouvez développer "localement" sur le même système d'exploitation sur votre serveur. Et vous pouvez tester des choses comme "Le code est-il monté lorsque je redémarre?" ou "si le serveur est éliminé, puis-je recréer mon serveur à partir du système d'exploitation de base?"


1 commentaires

Comme vous pouvez le dire, je suis nouveau à tout cela: P J'ai essayé «Sudo NPM install -g pour toujours», mais je reçois toujours la même erreur qu'auparavant lorsqu'il est installé pour toujours. Il est étrange que le journal d'erreur indique toujours «NPM ERR! NODE -V V0.5.11-PRE 'Quand je sais que je cours v0.10.5. En ce qui concerne la recherche de la source d'erreurs, j'ai écrit mon code afin qu'il gère efficacement les erreurs, mais il semble que l'erreur que j'ai traçée dans le journal des erreurs a été causée par l'un des modules de noeud intégrés. Avez-vous des suggestions sur pourquoi ne pas toujours pas l'installation? Merci :)



5
votes

Après quelques heures douloureuses de read, je pense avoir finalement résolu mon problème! On dirait que j'aurais pu avoir 2 versions de noeud ou quelque chose! Pour une référence future: si vous êtes nouveau à nœud, assurez-vous d'installer nvm pour faciliter la gestion des versions de noeuds et vous ne rencontrerez pas ce problème :)


0 commentaires

0
votes

0 commentaires

0
votes

des journaux ce qui semble être le problème dans votre cas est votre connexion MySQL. Chaque fois que le serveur MySQL ferme la connexion, le serveur de nœuds mourrait. Vous pouvez utiliser une mise en commun de connexion Kealive ou utilisée.


0 commentaires

1
votes

Je pense que pour toujours ne quitte pas votre application Nodejs de manière inattendue, cela pourrait être dû au paramètre MySQL 'WAITT_TIMEOUT' défini sur 28800 secondes (I.E 8 heures) par défaut. Si l'application Nodejs n'interagit pas avec la base de données MySQL pendant 8 heures, la connexion est fermée. Vous devez définir la valeur WAIT_TIMEOUT sur 'Max Value' (c'est-à-dire 365 jours) ou toute autre valeur que vous avez besoin dans les paramètres MySQL DB.

lien pour les paramètres WAIT_TIMEOUT:

http://dev.mysql.com/doc/refman/5.0 /en/server-system-variables.html#ssysvar_wait_timeout

ou

ajoutez le code suivant dans votre code. Ce code ping le MySQL DB une fois dans une heure et votre connexion ne se cassera pas.

// code de ping mysql commence xxx

// mysql ping code extrémise

Vous pouvez également utiliser le code de HandleSConnect () et gérez l'erreur de connexion particulière dans le code comme indiqué dans l'exemple ci-dessous.

/// code démarre

fonction de fonctionnement de fonctionnement () { xxx


0 commentaires

0
votes

Utilisez Keymetric.IO, il redémarrera automatiquement votre application de nœud si un problème se produit.

https://keymetrics.io


0 commentaires

2
votes

Après beaucoup de recherches et de mauvaises solutions, j'ai trouvé PM2 (une partie de Keymetrics, recommandée par Karlos) sera de loin la meilleure solution. Vous pouvez le trouver ici:

http://pm2.keymetrics.io/


0 commentaires