Comment laisser le serveur Node.js sur EC2 fonctionner pour toujours?

Comme vous pouvez le constater par ma question, je suis nouveau dans ce domaine …

J’ai construit mon premier site Web, j’ai installé mon premier serveur Node.js pour le servir, puis j’ai tout mis en direct sur EC2.

J’ai tout testé sur mon adresse IP EC2 et tout semble fonctionner.

Jusqu’à présent, je testais localement mon application, il est donc logique que chaque fois que je ferme le terminal, app.js cesse de fonctionner pour que rien ne soit diffusé sur localhost.

Maintenant que mon serveur est sur EC2, la même chose se produit (“évidemment” pourrait-on dire ..) chaque fois que je ferme mon terminal.

Donc, ma question est de savoir comment faire pour que mon serveur Node.js fonctionne sur EC2 comme … pour toujours … pour que mon site rest actif .. pour toujours 🙂

J’ai lu quelque chose sur un module de noeud appelé “pour toujours” mais je me demande (étant nouveau et tout ..) pourquoi cette fonctionnalité “pour toujours” n’est-elle pas un paramètre par défaut du système Node.js-EC2?

Je veux dire, corrigez-moi si je me trompe, mais le but de mettre en place un serveur Web et de le faire vivre pour toujours n’est-il pas le but? N’est-ce pas ce que les serveurs sont censés faire de toute façon (écoute à l’infini des demandes)? Et si tel est le cas, pourquoi avons-nous besoin de modules / parameters supplémentaires pour y parvenir?

Merci pour votre aide .. Comme vous pouvez le constater, je ne cherche pas seulement une solution mais aussi une explication parce que je suis vraiment confus .. 🙂

EDIT (quelques détails dont vous pourriez avoir besoin) – Après avoir installé mon application sur EC2, voici les étapes que je suis sur le terminal (L’application est en cours d’exécution sur Amazon Linux ):

  • Je tape ssh -i xxxxxxxxxxx.pem ec2-user@ec2-xx-xx-xx-x.eu-west-1.compute.amazonaws.com sur le terminal

  • Après avoir ouvert une session sur la machine Amazon, accédez au dossier correspondant et exécutez le noeud 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 est mis en ligne sur mon IP EC2

  • Une fois le terminal fermé, tout est éteint

Avant d’appeler Node.js, exécutez la commande:

screen

Cela créera un environnement persistant qui permettra à votre processus de continuer à fonctionner après votre déconnexion.

Lorsque vous vous reconnectez, vous pouvez utiliser cette commande pour vous reconnecter à cet environnement:

screen -r

Voici un lien aléatoire pour en savoir plus sur l’écran:

http://www.rackaid.com/blog/linux-screen-tutorial-and-how-to/

Cependant, cela ne vous aidera pas si votre instance EC2 redémarre. Il y a plusieurs façons de faire cela. Ajouter votre commande de démarrage à /etc/rc.local est un moyen. Voici un lien vers un guide Amazon qui inclut l’ajout de quelque chose à /etc/rc.local.

http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/building-shared-amis.html

J’espère que cela t’aides,

James

J’ai travaillé avec la réponse valide pendant un certain temps, mais parfois, l’écran n’a plus aucune raison, l’écran n’a pas d’équilibrage et d’autres fonctionnalités dans un environnement de production, j’utilise actuellement un composant npm.

https://www.npmjs.com/package/pm2

C’est si facile à utiliser.

 $ npm install pm2 -g 

puis lancez simplement votre application avec pm2 comme ceci

 $ pm2 start app.js 

Dans le lien ci-dessus, vous pouvez trouver les différentes tâches à effectuer si vous en avez besoin.

J’espère que cela aidera les débutants comme moi.

Il y a une meilleure façon. Utilisez forever.js.

Voir ici: https://github.com/foreverjs/forever

Ceci 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 utilisez tmux Il suffit d’entrer un serveur de nœuds avec écran tmux Ctrl + b Appuyez sur D et vous avez terminé.

Je suis très en retard pour rejoindre le fil et semble son problème de base avec chaque débutant. Suivez les instructions ci-dessous pour configurer correctement votre premier serveur.

suivez les étapes sur l’instance ec2 (avant de faire cela, assurez-vous d’avoir un script de démarrage pour pm2 dans votre fichier package.json):

npm install pm2 -g

pm2 startup systemd

Voir la sortie et à la dernière ligne, il doit être comme ..

Vous devez exécuter cette commande en tant que root. Exécutez la commande suivante: sudo env PATH = $ PATH: / usr / bin / usr / lib / noeud_modules / pm2 / bin / pm2 démarrage systemd -u sammy –hp / home / sammy

Prenez la dernière commande de ligne et relancez avec les privilèges root.

(avant d’exécuter la commande suivante, fournissez un nouveau script de démarrage pour pm2 dans votre fichier package.json, par exemple: "pm2-start": "pm2 start ./bin/www" )

npm run pm2-start

pour plus d’infos suivez le lien.

https://www.digitalocean.com/community/tutorials/how-to-set-up-a-node-js-application-for-production-on-ubuntu-16-04