GNU/Linux >> Znalost Linux >  >> Linux

Služba Systemd nespustí Nodejs?

Snažím se, aby se moje aplikace nodejs spustila při spouštění. Běží dobře, pokud jej spustím z příkazového řádku jako uživatel odroid.

Zde je můj soubor služeb:

[Unit]
Description=ProImage
After=network.target mysql.service

[Service]
ExecStart=/bin/node //eadn-wc01-5196795.nxedge.io/proimage/app.js
Restart=on-failure
RootDirectory=/proimage
WorkingDirectory=/proimage
User=root

[Install]
WantedBy=multi-user.target

Když běžím:

sudo systemctl status proimage_daemon

Chápu:

[email protected]:~$ sudo systemctl status proimage_daemon
● proimage_daemon.service - ProImage
   Loaded: loaded (/lib/systemd/system/proimage_daemon.service; enabled; vendor preset: enabled)
   Active: inactive (dead) (Result: exit-code) since Tue 2019-02-26 09:45:30 EST; 6s ago
  Process: 30797 ExecStart=/bin/node //eadn-wc01-5196795.nxedge.io/proimage/app.js (code=exited, status=200/CHDIR)
 Main PID: 30797 (code=exited, status=200/CHDIR)

Feb 26 09:45:29 odroid systemd[1]: proimage_daemon.service: Unit entered failed state.
Feb 26 09:45:29 odroid systemd[1]: proimage_daemon.service: Failed with result 'exit-code'.
Feb 26 09:45:30 odroid systemd[1]: proimage_daemon.service: Service hold-off time over, scheduling restart.
Feb 26 09:45:30 odroid systemd[1]: Stopped ProImage.
Feb 26 09:45:30 odroid systemd[1]: proimage_daemon.service: Start request repeated too quickly.
Feb 26 09:45:30 odroid systemd[1]: Failed to start ProImage.

Podíval jsem se na journalctl pomocí:

journalctl -u proimage_daemon.service

a dává mi to samé následující:

[email protected]:~$ journalctl -u proimage_daemon.service --since 09:38
-- Logs begin at Tue 2019-02-26 09:02:47 EST, end at Tue 2019-02-26 10:02:34 EST. --
Feb 26 09:38:12 odroid systemd[1]: proimage_daemon.service: Trying to enqueue job proimage_daemon.service/stop/replace
Feb 26 09:38:12 odroid systemd[1]: proimage_daemon.service: Installed new job proimage_daemon.service/stop as 13040
Feb 26 09:38:12 odroid systemd[1]: proimage_daemon.service: Enqueued job proimage_daemon.service/stop as 13040
Feb 26 09:38:12 odroid systemd[1]: proimage_daemon.service: Job proimage_daemon.service/stop finished, result=done
Feb 26 09:38:12 odroid systemd[1]: Stopped ProImage ICU.
Feb 26 09:39:19 odroid systemd[1]: Started ProImage ICU.
Feb 26 09:39:19 odroid systemd[1]: proimage_daemon.service: Main process exited, code=exited, status=200/CHDIR
Feb 26 09:39:19 odroid systemd[1]: proimage_daemon.service: Unit entered failed state.
Feb 26 09:39:19 odroid systemd[1]: proimage_daemon.service: Failed with result 'exit-code'.
Feb 26 09:39:19 odroid systemd[1]: proimage_daemon.service: Service hold-off time over, scheduling restart.
Feb 26 09:39:19 odroid systemd[1]: Stopped ProImage ICU.

Podíval jsem se na tucet příspěvků o tomto problému. Všichni říkají status=200/CHDIR označuje problém s pracovním adresářem.

V mém případě pracovní adresář rozhodně existuje a je vlastněn rootem. V tomto adresáři jsem nastavil oprávnění na 777 rekurzivně. Vyzkoušel jsem mnoho různých věcí se souborem služby, všechny bez úspěchu.

Má někdo návrh, co by mohl být můj problém?

Přijatá odpověď:

Podle dokumentace systemd exec nastavte RootDirectory je podobný chrootu. V kombinaci s nastavením WorkingDirectory , znamená to, že systemd chrootuje vaši aplikaci na /proimage a poté pokus v rámci tohoto adresáře na cd /proimage , což by znamenalo /proimage/proimage .

Pokud proces nepotřebujete chrootovat, odstraňte RootDirectory směrnice. Pokud máte v úmyslu proces chrootovat, odstraňte WorkingDirectory směrnice.

Související:Ssh – protokolování pokusů o přístup SSH?
Linux
  1. Jak vytvořit službu Systemd v Linuxu

  2. Přidání nové služby do Linux systemd

  3. Centos – Systemd ukončí službu ihned po spuštění?

  1. Systemd:Použití After a Requires

  2. systemd - Dávám mé službě více argumentů

  3. aktivace soketu systemd vs xinetd

  1. Spravujte spouštění pomocí systemd

  2. Začněte používat systemd jako nástroj pro odstraňování problémů

  3. Spuštění, zastavení a restartování služeb na systémovém serveru RHEL 7 Linux