Comment puis-je laisser Node.js serveur sur EC2 exécutant pour toujours?
Comme vous pouvez le dire à ma question, je suis nouveau sur ce...
J'ai construit mon premier site web, j'ai créé mon premier Node.js serveur de servir et ensuite poussé tout en direct sur EC2.
J'ai tout testé sur mon EC2 adresse IP et tout semble fonctionner.
Or jusqu'à maintenant, j'ai pu tester mon application localement, il est donc logique que chaque fois que j'ai fermé le terminal, app.js permettrait d'arrêter l'exécution de manière à n'en rien être servi sur localhost.
Maintenant que mon serveur est sur EC2, la même chose se produit ("évidemment" on peut dire..) à chaque fois que je ferme mon terminal.
Donc ma question est comment puis-je garder mon Node.js serveur en cours d'exécution sur EC2 pour... comme toujours..alors que mon site reste en live.. forever 🙂
J'ai lu quelque chose à propos d'un nœud module appelé "forever", mais je me demandais (étant nouveau et tout..) pourquoi n'est-ce pas "pour toujours" de la fonctionnalité par défaut du Nœud.js-EC2 système ?
Je veux dire, corrigez-moi si je me trompe, mais n'est-ce pas le point de l'ensemble de la configuration d'un serveur web et en le poussant à vivre pour l'avoir à rester vivre éternellement? N'est-ce pas ce que les serveurs sont censés faire de toute façon (à l'infini à l'écoute des demandes) ? Et si c'est le cas, pourquoi avons-nous besoin de modules supplémentaires/paramètres pour réaliser cela ?
Merci pour votre aide.. Comme vous pouvez le dire, je ne suis pas seulement la recherche d'une solution, mais une explication bien parce que je suis vraiment confus.. 🙂
MODIFIER (à quelques détails que vous pourriez avoir besoin) - Après l'installation de mon application sur EC2 ce sont les étapes que j'ai suivi sur le terminal (L'application est en cours d'exécution sur Amazon Linux
par la voie) :
-
J'type ssh -je xxxxxxxxxxx.pem [email protected] sur le
terminal -
Après l'enregistrement sur la machine Amazon je puis aller pour le dossier en question et exécuter nœud app.js
-
Il y a 3 dossiers dans la machine :
node
,node_modules
et*name of my app*
-
app.js
réside dans*name of my app*
-
Après cela, le site mis en ligne sur mon EC2 IP
-
Une fois que je ferme le terminal, tout est éteint
- Les réponses ici sont, essentiellement, de la date et de mal. Il vous suffit d'utiliser les pm2. stackoverflow.com/a/36907953/294884 parfaitement expliqué, est morte facile
- Double Possible de Amazon EC2 NodeJS serveur s'arrête au bout de 2 jours, même après l'utilisation de sudo nohup
Vous devez vous connecter pour publier un commentaire.
Avant d'appeler Node.js, exécutez la commande:
screen
Cela va créer une persistante de l'environnement qui permettra à votre processus de continuer à courir après vous vous déconnectez.
Lorsque vous vous reconnectez, vous pouvez utiliser cette commande pour vous reconnecter pour que l'environnement:
screen -r
Voici un lien menant à apprendre plus au sujet de l'écran:
http://www.rackaid.com/blog/linux-screen-tutorial-and-how-to/
Cependant, ce ne sera pas vous aider si votre instance EC2 redémarre. Il existe de nombreuses façons de le faire. L'ajout de votre commande de démarrage /etc/rc.local est un moyen. Voici un lien vers Amazon guide qui comprend l'ajout de quelque chose dans /etc/rc.locaux.
http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/building-shared-amis.html
Espère que cette aide,
James
screen
environnement, appuyez sur la touche CTRL+C pour l'arrêter (si cela ne fonctionne pas, vous devrez peut-être trouver l'ID de Processus ou de PID et de le tuer par l'intermédiaire d'un nouveau Mastic / terminal exécutant de l'environnement principal), et enfin le type deexit
pour fermer l'écran de l'environnement et de retour à la principale.screen
. Je suis à la recherche de quelque chose commescreen myScreenOne
,screen myScreenTwo
, etc? Pouvons-nous faire cela?J'ai travaillé avec la réponse valable pendant un certain temps, mais quelques fois l'écran juste à la fin avec pas de raison également de l'écran n'a pas de balance chargeur et d'autres caractéristiques que, dans une production de l'environnement, vous devez prendre soin , j'utilise Actuellement un mnp composant pour faire ce travail.
https://www.npmjs.com/package/pm2
C'est tellement facile à utiliser.
puis il suffit de lancer votre application avec les pm2, comme ce
Dans le lien ci-dessus vous pouvez trouver diferents tâches à effectuer si vous avez besoin d'.
Espère que cela aidera les débutants comme moi.
Il ya une meilleure façon. Utilisation forever.js.
Voir ici: https://github.com/foreverjs/forever
C'est un bon tutoriel pour savoir comment utiliser chkconfig avec forever sur CENTOS.
http://aronduby.com/starting-node-forever-scripts-at-boot-w-centos/
Ou de l'utilisation de combinaisons de
Il suffit d'Entrer un tmux écran exécuter nœud de serveur
Ctrl+b Frappé D et vous avez terminé.
Je suis très en retard pour rejoindre le fil et semble de son problème de base avec tous les débutants. Suivez ci-dessous pour configurer correctement votre premier serveur.
suivre le pas sur l'instance ec2(avant de le faire, assurez-vous que vous avez un script de démarrage pour les pm2 dans votre forfait.fichier json):
npm install pm2 -g
pm2 startup systemd
Voir la sortie et à la dernière ligne, il doit être comme..
Prendre la dernière ligne de commande et exécutez de nouveau avec les privilèges de root.
(avant d'exécuter la commande suivante, de Fournir un nouveau script de démarrage pour les pm2 dans votre forfait.fichier json e.g:
"pm2-start": "pm2 start ./bin/www"
)npm run pm2-start
pour plus d'info, suivez le lien.
https://www.digitalocean.com/community/tutorials/how-to-set-up-a-node-js-application-for-production-on-ubuntu-16-04
mpm
ànpm
. Laissez-moi savoir simpm
était délibérée. Je ne pense pas que c'est une chose... (heureux d'apprendre une nouvelle chose, quand même!)