systemd サービスが nodejs を開始できない

systemd サービスが nodejs を開始できない

起動時にNodejsアプリケーションを起動しようとしています。 odroidユーザーとしてコマンドラインから起動すると、正常に実行されます。

これは私のサービスファイルです。

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

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

[Install]
WantedBy=multi-user.target

私が実行したとき:

sudo systemctl status proimage_daemon

私は得る:

odroid@odroid:~$ 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 /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.

私は次のようにJournalctlを見ました:

journalctl -u proimage_daemon.service

それは私に次のような結果を与えます:

odroid@odroid:~$ 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.

私はこの問題に関する何十もの投稿を読んだ。彼らはすべて、status = 200 / CHDIRが作業ディレクトリに問題があることを示していると述べました。

私の場合、作業ディレクトリは間違いなく存在し、ルートが所有しています。このディレクトリの権限を再帰的に777に設定しました。私はサービスファイルを持っていろいろな方法を試しましたが、何の役にも立ちませんでした。

私の問題に対する提案がある人はいますか?

ベストアンサー1

~によるとシステム実行文書、設定はRootDirectorychrootに似ています。 setupと組み合わせると、WorkingDirectoryこれはsystemdがアプリケーションをルート化していることを意味します/proimageこのディレクトリにに変換するcd /proimageとに変換されます/proimage/proimage

chrootプロセスが必要ない場合は、このRootDirectoryディレクティブを削除してください。プロセスをchrootしたい場合は、このWorkingDirectoryディレクティブを削除してください。

おすすめ記事