J’utilise module de nœud pour toujours garder mon nœud de serveur en cours d’exécution. Jamais cependant se termine lorsqu’il y a un redémarrage du système. Est-il possible que je peux démarrer automatiquement le serveur noeud (avec forever) lorsque le système redémarre ?
Réponses
Trop de publicités?Je vous recommande d'utiliser crontab. Il est facile à utiliser.
Comment
-
Pour commencer l'édition d'exécuter les opérations suivantes en remplaçant le "testuser" avec votre choix à l'exécution par l'utilisateur pour le nœud de processus. Si vous choisissez un nom d'utilisateur différent des autres, puis vous-même, vous devrez exécuter la avec sudo.
$ crontab -u testuser -e
Si vous ne l'avez jamais fait avant, il va vous demander quel éditeur vous souhaitez modifier. J'aime vim, mais nous vous recommandons de nano pour la facilité d'utilisation.
-
Une fois dans l'éditeur, ajoutez la ligne suivante:
@reboot /usr/local/bin/forever start /your/path/to/your/app.js
Enregistrez le fichier. Vous devriez obtenir de la rétroaction que le cron a été installé.
-
Pour plus de confirmation de l'installation de la cron, exécutez la commande suivante (en remplaçant de nouveau "testuser" avec votre nom d'utilisateur cible) à la liste actuellement installés crons:
$ crontab -u testuser -l
Notez que, à mon avis, vous devriez toujours utiliser les chemins d'accès lors de l'exécution de fichiers binaires dans cron.
Aussi, si le chemin d'accès à votre forever script n'est pas correcte exécution which forever
pour obtenir le chemin d'accès complet.
Étant donné qu' forever
des appels node
, vous pouvez également fournir le chemin d'accès complet à l' node
:
@reboot /usr/local/bin/forever start -c /usr/local/bin/node /your/path/to/your/app.js
Lectures Complémentaires
Vous pouvez utiliser forever-service pour faire cela.
npm install -g forever-service
forever-service install test
Cette disposition sera app.js dans le répertoire courant comme un service via pour toujours. Le service redémarre automatiquement chaque fois que le système est redémarré. Aussi lorsqu'il est arrêté, il tentera d'un gracieux arrêter. Ce script dispositions de la logrotate le script.
Github url: https://github.com/zapty/forever-service
NOTE: je suis l'auteur de forever-service.
Une alternative crontab méthode inspirée par cette réponse et ce blog.
1. Créer un script bash fichier (changement de bob à d'utilisateur de votre choix).
vi /home/bob/node_server_init.sh
2. Copiez le et collez-le à l'intérieur du fichier que vous venez de créer.
#!/bin/sh
export NODE_ENV=production
export PATH=/usr/local/bin:$PATH
forever start /node/server/path/server.js > /dev/null
Assurez-vous de modifier les chemins d'accès ci-dessus en fonction de votre config!
3. Assurez-vous que le bash script peut être exécuté.
chmod 700 /home/bob/node_server_init.sh
4. Remplacer "bob" avec le moteur d'exécution de l'utilisateur pour le nœud.
crontab -u bob -e
5. Copiez et collez (changement de bob à d'utilisateur de votre choix).
@reboot /bin/sh /home/bob/node_server_init.sh
Enregistrer la crontab.
Vous l'avez fait à la fin, votre prix est un reboot (à tester) :)
Jamais ne fut faite pour permettre aux applications de nœud exécutant que les services. La bonne approche consiste à créer une entrée / etc/inittab (anciens systèmes linux) ou un parvenu (nouveaux systèmes linux).
Voici une documentation sur la façon de mettre en place comme un parvenu : https://github.com/cvee/node-upstart