Jai tenté de suivre ce guide pour exécuter une application Node en tant que service. Cependant, il ne démarre pas, avec le code de sortie 127. Y a-t-il un moyen de résoudre ce problème?

Voici le journal.

sudo journalctl --follow -u serviceName -- Logs begin at Tue 2017-08-08 16:27:10 GMT. -- Aug 08 17:06:57 raspberrypi systemd[1]: Started serviceName. Aug 08 17:06:57 raspberrypi app.js[7234]: [46B blob data] Aug 08 17:06:57 raspberrypi systemd[1]: serviceName.service: main process exited, code=exited, status=127/n/a Aug 08 17:06:57 raspberrypi systemd[1]: Unit serviceName.service entered failed state. Aug 08 17:06:57 raspberrypi systemd[1]: serviceName.service holdoff time over, scheduling restart. Aug 08 17:06:57 raspberrypi systemd[1]: Stopping serviceName... Aug 08 17:06:57 raspberrypi systemd[1]: Starting serviceName... Aug 08 17:06:57 raspberrypi systemd[1]: serviceName.service start request repeated too quickly, refusing to start. Aug 08 17:06:57 raspberrypi systemd[1]: Failed to start serviceName. Aug 08 17:06:57 raspberrypi systemd[1]: Unit serviceName.service entered failed state. 

Ceci est le serviceName.service.

[Unit] Description=ServiceName After=network.target [Service] ExecStart=/home/pi/projects/ServiceName/app.js Restart=always User=root Group=root Environment=PATH=/usr/bin:/usr/local/bin Environment=NODE_ENV=production WorkingDirectory=/home/pi/projects/ServiceName [Install] WantedBy=multi-user.target 

Ceci est en haut de mon app.js.

#!/usr/bin/env node 

Commentaires

  • Que se passe-t-il lorsque vous exécutez /home/pi/projects/ServiceName/app.js depuis le shell?
  • Il fonctionne parfaitement bien. Il fonctionne également correctement en utilisant forever-service.
  • Quelle est la sortie de type node et df /home/pi/projects/ServiceName/app.js?
  • 1. node is /home/pi/.nvm/versions/node/v7.8.0/bin/node 2. Filesystem 1K-blocks Used Available Use% Mounted on /dev/root 6166268 4446224 1383764 77% /

Réponse

ExecStart=/home/pi/projects/ServiceName/app.js 

Ceci indique à systemd dexécuter app.js directement. Ce fichier .js est-il directement exécutable? Sinon, le shell lancera un code de sortie 127 – « Commande inconnue ».

Commentaires

  • Selon le guide que jai lié dans la question, le shebang en haut de app.js devrait le rendre exécutable, car il spécifie Node comme interprète.
  • Je crois que @DopeGhoti faisait référence à lautorisation exécutable – comme dans, " read-write-executable " autorisations définies par fichier.
  • " Sinon, le shell lancera un code de sortie 127 " – quelle que soit la raison exacte du 127, systemd nutilise pas le shell pour démarrer les services.

Réponse

127 est une commande introuvable.

Assurez-vous que lutilisateur root a accès à node binary else changez les lignes suivantes avec lutilisateur pour lequel vous avez installé node

User=root Group=root 

Sinon Essayez de suivre

[Unit] Description="ServiceName" After=network.target [Service] ExecStart=path_to_node/node /home/pi/projects/ServiceName/app.js Restart=always # Restart service after 10 seconds if node service crashes RestartSec=10 # Output to syslog StandardOutput=syslog StandardError=syslog #Change this to find app logs in /var/log/syslog SyslogIdentifier=nodejs-api # Followig will require if you are using the PORT or Node from Envirnoment Environment=NODE_ENV=production PORT=3000 [Install] WantedBy=multi-user.target 

Une fois votre serveur mac hine is up & vous ne pouvez pas accéder au serveur, vous dépannez en vérifiant les journaux de / var / log / syslog par la commande suivante

sudo grep "nodejs-api" /var/log/syslog 

Démarrer au démarrage: sudo systemctl enable rocketch

Réponse

Pour déboguer, exécutez simplement ceci (en remplaçant les parties < > avec la valeur de votre fichier dunité systemd:

 sudo runuser -l <User> -g <Group> -c "cd <WorkingDirectory> && <PATH> <ExecStart>"  

Le problème est donné User ne peut pas accéder au ExecStart dans le PATH que vous avez défini.

Si quelquun est toujours bloqué, jai écrit un guide étape par étape pour: debugging systemd

Réponse

Salut pour tous ceux qui sont intéressés, jai eu ce problème et jai tout essayé sous le soleil, mais à la fin, je suis passé de N ode 6 à Node 12 a résolu le problème.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *