恐慌;模式不匹配 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
目录。
If not set, defaults to the root directory when systemd is running as a system instance
所以你的 main
问题是 运行 在 /
(root) 和 ParseGlob
试图在 /template/*.tmpl
.[=18 找到东西=]
我目前正在尝试将我的 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
目录。
If not set, defaults to the root directory when systemd is running as a system instance
所以你的 main
问题是 运行 在 /
(root) 和 ParseGlob
试图在 /template/*.tmpl
.[=18 找到东西=]