http 服务器未在 systemd 中启动

问题描述 投票:0回答:2

我正在使用

http-server
来服务一个简单的 Angular 应用程序。当我从 bash 运行该应用程序时,该应用程序运行良好。但是当我尝试从 systemd 单元文件运行时,它失败了。

这是我用来运行它的 systemd 单元文件。

[Unit]
Description=web_app
Requires=network.target
After=multi-user.target

[Service]
ExecStart=/usr/bin/http-server -p 80
Type=forking
WorkingDirectory=/home/ubuntu/jenkins/workspace/deepcareweb_dev  
Restart=always
RestartSec=10                        
StandardOutput=syslog               
StandardError=syslog                
SyslogIdentifier=web_app
User=root
#Group=<alternate group>
#Environment=NODE_ENV=production PORT=1337

[Install]
WantedBy=multi-user.target

我应该怎么做才能从 systemd 单元文件运行

http-server

编辑1:

systemctl status

$ sudo systemctl status web_app


● web_app.service - web_app
   Loaded: loaded (/etc/systemd/system/web_app.service; enabled; vendor preset: enabled)
   Active: inactive (dead) (Result: exit-code) since Sun 2017-03-05 06:17:14 UTC; 10s ago
  Process: 1879 ExecStart=/usr/bin/http-server -p 80 (code=exited, status=200/CHDIR)
 Main PID: 1354 (code=exited, status=200/CHDIR)

Mar 05 06:17:14 ip-172-31-22-251 systemd[1]: web_app.service: Control process exited, code=exited status=200
Mar 05 06:17:14 ip-172-31-22-251 systemd[1]: Failed to start web_app.
Mar 05 06:17:14 ip-172-31-22-251 systemd[1]: web_app.service: Unit entered failed state.
Mar 05 06:17:14 ip-172-31-22-251 systemd[1]: web_app.service: Failed with result 'exit-code'.
Mar 05 06:17:14 ip-172-31-22-251 systemd[1]: web_app.service: Service hold-off time over, scheduling restart.
Mar 05 06:17:14 ip-172-31-22-251 systemd[1]: Stopped web_app.
Mar 05 06:17:14 ip-172-31-22-251 systemd[1]: web_app.service: Start request repeated too quickly.
Mar 05 06:17:14 ip-172-31-22-251 systemd[1]: Failed to start web_app.
angularjs node.js linux systemd
2个回答
0
投票

尝试删除“Restart=always”行,因为它会触发“启动请求重复太快”错误。删除它后,您应该会看到一条真正的错误消息。

在我的例子中,错误“在步骤 CHDIR 生成 /usr/local/bin/http-server 时失败:没有这样的文件或目录”

将“WorkingDirectory”变量更改为“/”,将“ExecStart”更改为“/usr/bin/http-server WORKINGDIRECTORY -p 80”为我解决了这个问题。


0
投票

这是一个非常有趣的问题。 我也遇到了这个问题。 经过大量尝试,我刚刚解决了这个问题。 主要问题是无法执行命令。 如果将

ExecStart
行替换为此
ExecStart=/bin/bash -c "source /home/ubuntu/.nvm/nvm.sh && /home/ubuntu/.nvm/versions/node/v22.11.0/bin/http-server -p 8080"
,则可以解决此问题。 谢谢。

© www.soinside.com 2019 - 2024. All rights reserved.