med*_*nzo 4 linux webserver systemd daemon node.js
我为 Nodejs Express 服务器安装了以下单元文件:
[Unit]
Description=Server for SpeedBot
After=network.target
[Service]
ExecStart=/var/www/SpeedBot/server.js
Restart=always
User=nobody
Group=nobody
Environment=PATH=/usr/bin:/usr/local/bin
Environment=NODE_ENV=production
WorkingDirectory=/home/pi/SpeedBot/server.js
[Install]
WantedBy=multi-user.target
Run Code Online (Sandbox Code Playgroud)
当我运行它并做:service speedbotserver status我得到:
? speedbotserver.service - Server for SpeedBot
Loaded: loaded (/etc/systemd/system/speedbotserver.service; disabled)
Active: failed (Result: start-limit) since Thu 2017-06-29 01:31:18 UTC; 18h ago
Process: 19189 ExecStart=/var/www/SpeedBot/server.js (code=exited, status=216/GROUP)
Main PID: 19189 (code=exited, status=216/GROUP)
Run Code Online (Sandbox Code Playgroud)
组=没人
当错误消息告诉您设置服务运行所在的组时出现问题(即该状态代码正在执行的操作)时,您的第一个想法应该是“我是否为此服务配置了有效的组?”
nobody顺便说一下,不要将服务作为 运行。这是一个坏主意,世界在 1990 年代学会了不要这样做。 nobody具有与 NFS 相关的特定用法,这意味着它是文件系统中(可能是许多)事物的(明显)所有者。它不适合运行守护进程,其用户帐户通常应该只拥有文件系统中与其操作直接相关的有限数量的东西。
作为特定于该服务的专用用户帐户运行您的服务。
您可以尝试使用以下单位配置:
[Unit]
Description=Server for SpeedBot
After=network.target
[Service]
ExecStart=/bin/sh -c "exec /usr/bin/node /var/www/SpeedBot/server.js"
Restart=always
User=nobody
Group=nobody
Environment=PATH=/usr/bin:/usr/local/bin
Environment=NODE_ENV=production
WorkingDirectory=/var/www/SpeedBot
[Install]
WantedBy=multi-user.target
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
16324 次 |
| 最近记录: |