Am încercat să urmez acest ghid pentru a rula o aplicație Node ca serviciu. Cu toate acestea, nu pornește, cu codul de ieșire 127. Există vreo modalitate de a remedia acest lucru?

Acesta este jurnalul.

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. 

Acesta este 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 

Acesta este în partea de sus a aplicației mele.js.

#!/usr/bin/env node 

Comentarii

  • Ce se întâmplă când executați /home/pi/projects/ServiceName/app.js din shell?
  • Funcționează perfect. De asemenea, rulează bine utilizând forever-service.
  • Care este rezultatul type node și 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ăspuns

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

Aceasta îi spune systemd să ruleze direct app.js. Este fișierul .js executabil direct? Dacă nu, shell-ul va lansa un cod de ieșire 127 – „Comandă necunoscută”.

Comentarii

  • Conform ghidului pe care l-am legat în întrebare, shebang-ul din partea de sus a app.js ar trebui să-l facă executabil, deoarece specifică nodul ca interpret.
  • Cred că @DopeGhoti se referea la permisiunea executabilă – ca în, " read-write-executable " permisiuni setate pe fișier.
  • " Dacă nu, shell-ul va lansa un cod de ieșire 127 " – indiferent de motivul exact al 127, systemd nu folosește shell-ul pentru a porni serviciile.

Răspuns

127 este o comandă care nu a fost găsită.

Asigurați-vă că utilizatorul root are acces la binar de nod altfel schimbați următoarele linii cu utilizatorul pentru care ați instalat nodul

User=root Group=root 

Altfel Încercați să urmați

[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 

Odată ce serverul dvs. Mac hine up & nu puteți accesa serverul, depanați verificând jurnalele din / var / log / syslog prin următoarea comandă

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

Pornire la pornire: sudo systemctl enable rocketch

Răspuns

Pentru depanare, rulați doar acest lucru (substituind < > cu valoarea din fișierul de unitate systemd:

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

Problema este dată User nu poate accesa ExecStart din PATH pe care l-ați setat.

Dacă cineva este încă blocat, am scris un ghid pas cu pas pentru: sistem de depanare

Răspuns

Salut pentru oricine este interesat, am avut această problemă și am încercat totul sub soare, dar până la urmă am făcut upgrade de la N Oda 6 la nodul 12 a rezolvat problema.

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *