我为 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
当我运行它并执行以下操作时: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)
答案1
组=无人
当错误消息告诉您设置服务运行的组时出现问题(这就是状态代码正在执行的操作)时,您的第一个想法应该是“我是否为此服务配置了有效的组?”
nobody
顺便说一句,不要将服务运行为。这是一个坏主意,世界在 20 世纪 90 年代已经学会不要这样做。 nobody
具有与 NFS 相关的特定用法,这意味着它是文件系统中(可能是许多)事物的(明显)所有者。它不适合运行守护进程,其用户帐户通常只拥有文件系统中与其操作直接相关的有限数量的内容。
作为特定于服务的专用用户帐户运行您的服务。
进一步阅读
答案2
Group=nobody
组应该与您的用户相同。如果您还没有为 SonarQube 创建用户,请先创建它。
单击此处请按照分步指南获取更多信息
您需要将 SonarQube 配置为以声纳用户身份运行。您可以使用以下命令来执行此操作:
sudo nano /opt/sonarqube/bin/linux-x86-64/sonar.sh
进行以下更改:
RUN_AS_USER=sonar
保存并关闭文件,然后使用该用户访问您的服务属性
答案3
您可以尝试使用以下单位配置:
[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