duanaozhong0696 2019-03-30 15:49
浏览 1184
已采纳

使用config.toml文件部署Golang应用(api)

I have created a small golang API (nrfapi) which include a config.toml file. I would like to deploy the api on other ubuntu VM therefore i build the API using the "GOOS=linux GOARCH=amd64 go build" and then scp the build file to the VM /var/www/go diretory. I also create a unit file (nrf.service) ending in .service within the /etc/systemd/system directory. In the .service file i have the following configuration

[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

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'.

However, after starting the API using the following commands

sudo systemctl start nrfapi sudo systemctl enable nrfapi

the API is not running. I realize from the error message above that the API need the config.toml file configurations.

My problem now is that i dont know which directory to place the config.toml file so that the golang api can read the configuration parameters from there. Can anyone help me solve this? How do i go about this?

  • 写回答

1条回答 默认 最新

  • 普通网友 2019-03-30 15:56
    关注

    If you use relative paths to files in your Go scrips then executable will look for them relative to the current working directory. To change working directory in systemd just add WorkingDirectory parameter to the Service section:

    [Service]
    WorkingDirectory=/var/www/go
    

    And place config.toml file inside /var/www/go dir.

    You can also embed static files into Go binary using this library: https://github.com/gobuffalo/packr

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog