恐慌;模式不匹配 VPS 服务上的任何文件

Panic; pattern matches no files on VPS service

我目前正在尝试将我的 golang 应用程序设置为 Linux VPS 上的服务。 golang 应用程序 运行 在我的本地主机上顺利运行。在服务器本身上,我可以用 go run main.go 启动它,并且可以通过 ip 地址调用应用程序。

服务配置:

[Unit]
Description=vfreight

[Service]
Type=simple
Restart=always
RestartSec=5s
ExecStart=/root/go/src/VFreight/main

[Install]
WantedBy=multi-user.target

但是当我尝试运行它作为一项服务时,该服务总是失败。

May 13 20:10:31 srv.vfreight.com systemd[1]: Started vfreight.
May 13 20:10:31 srv.vfreight.com main[3167]: panic: html/template: pattern matches no files: `template/*.tmpl`
May 13 20:10:31 srv.vfreight.com main[3167]: goroutine 1 [running]:
May 13 20:10:31 srv.vfreight.com main[3167]: html/template.Must(...)
May 13 20:10:31 srv.vfreight.com main[3167]: /usr/lib/golang/src/html/template/template.go:374
May 13 20:10:31 srv.vfreight.com main[3167]: VFreight/app/controller.init.0()
May 13 20:10:31 srv.vfreight.com main[3167]: /root/go/src/VFreight/app/controller/control.go:21 +0x9e
May 13 20:10:31 srv.vfreight.com systemd[1]: vfreight.service: main process exited, code=exited, status=2/INVALIDARGUMENT
May 13 20:10:31 srv.vfreight.com systemd[1]: Unit vfreight.service entered failed state.
May 13 20:10:31 srv.vfreight.com systemd[1]: vfreight.service failed.
May 13 20:10:36 srv.vfreight.com systemd[1]: vfreight.service holdoff time over, scheduling restart.
May 13 20:10:36 srv.vfreight.com systemd[1]: Stopped vfreight.

func init() { tmpl = template.Must(template.ParseGlob("template/*.tmpl")) }

我尝试将 template/*.tmpl 更改为 ../template/*.tmpl,但没有用。

go env

希望有人有办法解决这个问题。

您好 克里斯

您需要将 WorkingDirectory= 添加到您的应用程序目录中,其中存在 template 目录。

来自systemd.exec(5)

If not set, defaults to the root directory when systemd is running as a system instance

所以你的 main 问题是 运行 在 / (root) 和 ParseGlob 试图在 /template/*.tmpl.[=18 找到东西=]