развернуть приложение Golang (API) с файлом config.toml - PullRequest
0 голосов
/ 30 марта 2019

Я создал небольшой API golang (nrfapi), который включает в себя файл config.toml.Я хотел бы развернуть API на других виртуальных машинах Ubuntu, поэтому я собираю API, используя «GOOS = linux GOARCH = amd64 go build», а затем копирую файл сборки в директорию VM / var / www / go.Я также создаю файл модуля (nrf.service), заканчивающийся на .service в каталоге / etc / systemd / system.В файле .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 start nrfapi sudosystemctl enable nrfapi

API не работает.Из сообщения об ошибке выше я понимаю, что API нужны конфигурации файла config.toml.

Моя проблема сейчас в том, что я не знаю, в какой каталог поместить файл config.toml, чтобы API-интерфейс golang мог читать конфигурациюпараметры оттуда.Может кто-нибудь помочь мне решить это?Как мне это сделать?

1 Ответ

1 голос
/ 30 марта 2019

Если вы используете относительные пути к файлам в своих скриптах Go, исполняемый файл будет искать их относительно текущего рабочего каталога.Чтобы изменить рабочий каталог в systemd, просто добавьте параметр WorkingDirectory в раздел Service:

[Service]
WorkingDirectory=/var/www/go

И поместите файл config.toml в /var/www/go dir.

Вы можететакже вставьте статические файлы в двоичный файл Go, используя эту библиотеку: https://github.com/gobuffalo/packr

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...