198 votes

Début pour toujours (nœud), le système redémarre automatiquement

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 ?

348voto

Julian Lannigan Points 1550

Je vous recommande d'utiliser crontab. Il est facile à utiliser.

Comment

  1. 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
    
  2. 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.

  3. Une fois dans l'éditeur, ajoutez la ligne suivante:

    @reboot /usr/local/bin/forever start /your/path/to/your/app.js
    
  4. Enregistrez le fichier. Vous devriez obtenir de la rétroaction que le cron a été installé.

  5. 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

125voto

arva Points 43

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.

28voto

NiLL Points 2003

Ce cas valable pour Debian.
Ajouter suivant à``

``

remplacer {{utilisateur}} à votre nom d’utilisateur
remplacer {{chemin d’accès app}} à votre chemin d’app. Par exemple,``

13voto

Emre Points 315

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) :)

5voto

snez Points 1496

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X