Próbowałem postępować zgodnie z tym przewodnikiem , aby uruchomić aplikację Node jako usługę. Jednak nie można go uruchomić z kodem zakończenia 127. Czy można to naprawić?

To jest dziennik.

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. 

To jest nazwa_usługi. usługa.

[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 

To jest na górze mojej aplikacji.js.

#!/usr/bin/env node 

Komentarze

  • Co się dzieje po uruchomieniu /home/pi/projects/ServiceName/app.js z powłoki?
  • Działa doskonale. Działa również dobrze, używając forever-service.
  • Jaki jest wynik działania 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% /

Odpowiedź

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

To nakłania systemd do bezpośredniego uruchomienia app.js. Czy ten plik .js jest bezpośrednio wykonywalny? Jeśli nie, powłoka wyśle kod zakończenia 127 – „Nieznane polecenie”.

Komentarze

  • Zgodnie z przewodnikiem, do którego dołączyłem w pytaniu, shebang na górze app.js powinien uczynić go wykonywalnym, ponieważ określa węzeł jako interpreter.
  • Myślę, że @DopeGhoti odnosił się do uprawnienia wykonywalnego – jak in, " plik wykonywalny do odczytu i zapisu " uprawnienia ustawione na plik.
  • " Jeśli nie, powłoka wyśle kod zakończenia 127 " – niezależnie od dokładnej przyczyny 127, systemd nie używa powłoki do uruchamiania usług.

Odpowiedź

127 nie znaleziono polecenia.

Upewnij się, że użytkownik root ma dostęp do binarny węzeł w przeciwnym razie zmień następujące wiersze na użytkownika, dla którego zainstalowałeś węzeł

User=root Group=root 

W przeciwnym razie Spróbuj śledzić

[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 

Gdy twój serwer mac hine działa & nie możesz uzyskać dostępu do serwera, rozwiązujesz problemy, sprawdzając dzienniki z / var / log / syslog za pomocą następującego polecenia

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

Rozpocznij przy starcie: sudo systemctl włącz rocketch

Odpowiedź

Aby debugować, po prostu uruchom to (zastępując części < > z wartością z pliku systemowego jednostki:

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

Problem jest podany User nie ma dostępu do ExecStart w ustawionym PATH.

Jeśli ktoś nadal utknął, napisałem przewodnik krok po kroku, aby: debugować systemd

Odpowiedź

Hej dla wszystkich zainteresowanych, miałem ten problem i próbowałem wszystkiego pod słońcem, ale w końcu aktualizacja z N ode 6 do Węzła 12 rozwiązało problem.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *