Linux 上的 systemd 服务 for edison for Node

systemd service on Linux for edison for Node

我在启动时尝试 运行 以下服务。我制作了一个服务文件:

[Unit]
Description=Denny node server start
[Service]
WorkingDirectory=/home/root
Type=forking
Restart=always
StandardOutput=syslog
User=nobody                                 
Group=nobody                                
RemainAfterExit=true                        
ExecStart=/usr/bin/node /home/root/server.js
KillMode=process          
Environment=NODE_ENV=production
[Install]                 
WantedBy=multi-user.target

我把这个放在 /etc/systemd/system/ 然后我 运行

systemctl daemon-reload

然后

systemctl start denny

没有。没有服务器启动。好的,我检查一下:

root@denny:~# systemctl status denny

我回来了:

● denny.service - Denny node server start
   Loaded: loaded (/etc/systemd/system/denny.service; enabled)
   Active: active (exited) (Result: exit-code) since Fri 2015-02-13 17:13:21 UTC; 29min ago
 Main PID: 225 (code=exited, status=8)
   CGroup: /system.slice/denny.service

Feb 13 17:41:40 denny systemd[1]: Started Denny node server start.

我可能记错了,但似乎完全我在 Debian 上所做的并且它运行良好,即它保留了服务 运行ning 并作为它应该。我是否在这个 .service 文件中遗漏了一些东西,它会告诉爱迪生的默认 Linux 保留这个 运行ning?

此答案仅适用于 Node.js 答案,但一个解决方案(以及我使用的那个)是将我的节点应用程序放在文件系统中的 /node_app_slot 中,其中包含以下内容 package.json 也在 /node_app_slot:

{
  "name": "sample",
  "description": "",
  "version": "0.0.0",
  "main": "main.js",
  "engines": {
    "node": ">=0.10.0"
  },
  "dependencies": {
  }
}

这允许 XDK 守护程序在启动时获取并 运行 Node 应用程序。相当轻松和简单,但没有很好的记录。