gpt4 book ai didi

go - 使用 config.toml 文件部署 Golang 应用程序(api)

转载 作者:IT王子 更新时间:2023-10-29 02:35:27 26 4
gpt4 key购买 nike

我创建了一个小型 golang API (nrfapi),其中包含一个 config.toml 文件。我想在其他 ubuntu VM 上部署 api,因此我使用“GOOS=linux GOARCH=amd64 go build”构建 API,然后将构建文件 scp 到 VM/var/www/go 目录。我还在/etc/systemd/system 目录中创建了一个以 .service 结尾的单元文件 (nrf.service)。在 .service 文件中,我有以下配置

[Unit]
Description= instance to serve nrf api
After=network.target

[Service]
User=root
Group=www-data

ExecStart=/var/www/go/nrfapi)

[Install]
WantedBy=multi-user.target

错误

Error

● nrf.service - instance to serve nrf api
Loaded: loaded (/etc/systemd/system/nrf.service; enabled; vendor preset: enabled)
Active: failed (Result: exit-code) since Sat 2019-03-30 16:44:51 EET; 11s ago
Main PID: 4066 (code=exited, status=1/FAILURE)

Mar 30 16:44:51 ubuntu systemd[1]: Started instance to serve nrf api.
Mar 30 16:44:51 ubuntu nrfapi[4066]: 2019/03/30 16:44:51 open config.toml: no such file or directory
Mar 30 16:44:51 ubuntu systemd[1]: nrf.service: Main process exited, code=exited, status=1/FAILURE
Mar 30 16:44:51 ubuntu systemd[1]: nrf.service: Unit entered failed state.
Mar 30 16:44:51 ubuntu systemd[1]: nrf.service: Failed with result 'exit-code'.

但是,在使用以下命令启动 API 之后

sudo systemctl 启动 nrfapisudo systemctl 启用 nrfapi

API 未运行。我从上面的错误消息中意识到 API 需要 config.toml 文件配置。

我现在的问题是我不知道将 config.toml 文件放在哪个目录,以便 golang api 可以从那里读取配置参数。谁能帮我解决这个问题?我该怎么做?

最佳答案

如果您在 Go 脚本中使用文件的相对路径,那么可执行文件将相对于当前工作目录查找它们。要在 systemd 中更改工作目录,只需将 WorkingDirectory 参数添加到 Service 部分:

[Service]
WorkingDirectory=/var/www/go

并将 config.toml 文件放在 /var/www/go 目录中。

您还可以使用此库将静态文件嵌入到 Go 二进制文件中:https://github.com/gobuffalo/packr

关于go - 使用 config.toml 文件部署 Golang 应用程序(api),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55433127/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com