web-dev-qa-db-ja.com

Nodejsのカスタムsystemdサービスを開始できません:Node not found

私はDebianJessieに Rocket.chat をインストールしましたが、うまく機能し、サービスとしての起動時に自動的に起動したいと思います。

Rocket.chatを手動で開始するには、次のことを行う必要があります

$ cd /home/hung/Rocket.chat
$ node main.js

これは私の/etc/systemd/system/rocket-chat.serviceです

[Service]
ExecStart=/usr/local/bin/node main.js
Restart=always
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=rocket-chat
User=hung
Group=hung
WorkingDirectory=/home/hung/Rocket.chat

[Install]
WantedBy=multi-user.target

サービスが開始されません:

# systemctl start rocket-chat
# systemctl status rocket-chat
● rocket-chat.service
   Loaded: loaded (/etc/systemd/system/rocket-chat.service; disabled)
   Active: failed (Result: start-limit) since Fri 2018-03-02 22:30:16 +07; 4s ago
  Process: 1169 ExecStart=/usr/local/bin/node main.js (code=exited, status=200/CHDIR)
 Main PID: 1169 (code=exited, status=200/CHDIR)

Mar 02 22:30:16 debian systemd[1]: rocket-chat.service: main process exited, code=exited, status=200/CHDIR
Mar 02 22:30:16 debian systemd[1]: Unit rocket-chat.service entered failed state.
Mar 02 22:30:16 debian systemd[1]: rocket-chat.service holdoff time over, scheduling restart.
Mar 02 22:30:16 debian systemd[1]: Stopping rocket-chat.service...
Mar 02 22:30:16 debian systemd[1]: Starting rocket-chat.service...
Mar 02 22:30:16 debian systemd[1]: rocket-chat.service start request repeated too quickly, refusing to start.
Mar 02 22:30:16 debian systemd[1]: Failed to start rocket-chat.service.
Mar 02 22:30:16 debian systemd[1]: Unit rocket-chat.service entered failed state.

/ var/log/syslogの内容は次のとおりです。

# tail /var/log/syslog 
Mar  2 22:17:21 debian systemd[1]: Started rocket-chat.service.
Mar  2 22:17:21 debian systemd[1068]: Failed at step CHDIR spawning /usr/local/bin/node: No such file or directory
Mar  2 22:17:22 debian systemd[1]: rocket-chat.service: main process exited, code=exited, status=200/CHDIR
Mar  2 22:17:22 debian systemd[1]: Unit rocket-chat.service entered failed state.
Mar  2 22:17:22 debian systemd[1]: rocket-chat.service holdoff time over, scheduling restart.
Mar  2 22:17:22 debian systemd[1]: Stopping rocket-chat.service...
Mar  2 22:17:22 debian systemd[1]: Starting rocket-chat.service...
Mar  2 22:17:22 debian systemd[1]: rocket-chat.service start request repeated too quickly, refusing to start.
Mar  2 22:17:22 debian systemd[1]: Failed to start rocket-chat.service.
Mar  2 22:17:22 debian systemd[1]: Unit rocket-chat.service entered failed state.

/usr/local/bin/nodeが存在します:

$ /usr/local/bin/node --version
v8.9.3

/usr/local/bin/nodeが見つからないという問題を解決するにはどうすればよいですか?

1
Hung Tran

ExecStart

ExecStart=/usr/local/bin/node /home/hung/Rocket.chat/main.js

これは私の最終バージョンのファイル(/etc/systemd/system/rocketchat.service)です。

[Unit]
Description=RocketChat Server
After=network.target remote-fs.target nss-lookup.target mongod.target Apache2.target

[Service]
ExecStart=/home/hung/.nvm/versions/node/v8.9.3/bin/node /var/www/chat/Rocket.Chat/main.js
Restart=always
RestartSec=10
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=rocketchat
Environment=NODE_ENV=production
Environment=PORT=3001
Environment=ROOT_URL=https://domain.com/
Environment=MONGO_URL=mongodb://localhost:27017/rocketchat
Environment=MAIL_URL='smtp://user@domain:password@domain:587/'

[Install]
WantedBy=multi-user.target

サービスを開始します:Sudo systemctl start rocketchat

起動時に開始:Sudo systemctl enable rocketchat

1
Hung Tran