我有一个节点应用程序,我正试图将其添加为一个服务,如果我转到安装它的目录并执行node start.js,该应用程序可以正常工作。但是,当我执行systemctl start app时,它只挂几分钟,然后journalctl -u darknet显示:
Dec 24 01:46:33 Skynet systemd[1]: Started darknet.
Dec 24 01:46:33 Skynet systemd[1]: Starting darknet...
Dec 24 01:46:34 Skynet darknet[32246]: module.js:434
Dec 24 01:46:34 Skynet darknet[32246]: return process.dlopen(module, path._makeLong(filename));
Dec 24 01:46:34 Skynet darknet[32246]: ^
Dec 24 01:46:34 Skynet darknet[32246]: Error: Module version mismatch. Expected 46, got 51.
Dec 24 01:46:34 Skynet darknet[32246]: at Error (native)
Dec 24 01:46:34 Skynet darknet[32246]: at Object.Module._extensions..node (module.js:434:18)
Dec 24 01:46:34 Skynet darknet[32246]: at Module.load (module.js:343:32)
Dec 24 01:46:34 Skynet darknet[32246]: at Function.Module._load (module.js:300:12)
Dec 24 01:46:34 Skynet darknet[32246]: at Module.require (module.js:353:17)
Dec 24 01:46:34 Skynet systemd[1]: darknet.service: main process exited, code=exited, status=1/FAILURE
Dec 24 01:46:34 Skynet systemd[1]: Unit darknet.service entered failed state.
Dec 24 01:46:34 Skynet systemd[1]: darknet.service failed.这是我的.service文件:
[Unit]
Description=darknet
After=network.target
[Service]
ExecStart=/usr/bin/node /home/botty/Darknet/start.js
Restart=always
RestartSec=180
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=darknet
User=botty
Group=botty
Environment=NODE_ENV=production
WorkingDirectory=/home/botty/Darknet
[Install]
WantedBy=multi-user.target我试着以普通用户和root用户的身份运行该进程,它运行得很好。但是无论我尝试什么,如果以systemd开头,它都会产生错误。
发布于 2016-12-23 23:58:19
与流行的误解相反,systemd与传统的Unix init脚本概念有很大的不同。我们将更详细地解释here和here。我注意到这里的很多人都在询问使用systemd运行Node时遇到的问题,他们很少得到任何解决方案。我的建议是使用传统的SysV init脚本或Upstart,这些脚本在发现不能使用systemd时也能正常工作。我从未见过Node应用程序无法轻松地使用Upstart或SysV init脚本运行的情况,但我已经看到了systemd的问题。我听说集群和其他更复杂的部署场景尤其有问题。只要遵循Unix哲学,使用简单的工具就可以完成一件事情,并且做得很好。Init脚本没有那么复杂。
另请参阅:
发布于 2017-07-30 09:16:26
我有这个问题。在systemd中,我没有使用与本地运行时相同的节点版本。
$ which node
/usr/local/bin/node将/usr/bin/node替换为/usr/local/bin/node (或which node中的等效值,例如在使用nvm时),在ExecStart中为我修复了它。
https://stackoverflow.com/questions/41309028
复制相似问题