Укажите systemctl, чтобы использовать переменные из файла
Я использую systemctl
запустить и сохранить мое приложение живым. Ниже мой .service
файл. Обратите внимание на Environment='METEOR_SETTINGS={"privateKey": "ohnoyouseemyprivatekey!"}'
, Здесь я буду хранить личные ключи, и я не хочу, чтобы они были видны в этом месте.
Мой вопрос, как именно я могу попросить systemctl прочитать его из файла в определенном месте в
[Service]
ExecStart=/usr/bin/node /home/wow-doge/experimental/wow_doge_builds/bundle/main.js
Restart=always
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=logdoge
#User=root
#Group=root
Environment=NODE_ENV=production
Environment=PORT=3000
Environment=HTTP_FORWARDED_COUNT=1
Environment=MONGO_URL=mongodb://127.0.0.1:27017/wow-doge
Environment=ROOT_URL=https://localhost
Environment='METEOR_SETTINGS={"privateKey": "ohnoyouseemyprivatekey!"}'
[Install]
WantedBy=multi-user.target
1 ответ
Решение
Взято из https://coreos.com/os/docs/latest/using-environment-variables-in-systemd-units.html
EnvironmentFile аналогичен директиве Environment, но считывает переменные среды из текстового файла. Текстовый файл должен содержать разделенные новой строкой присвоения переменных.
Пример:
[Service]
EnvironmentFile=/etc/envfile
Содержание /etc/envfile
:
NODE_ENV=production
PORT=3000
HTTP_FORWARDED_COUNT=1
MONGO_URL=mongodb://127.0.0.1:27017/wow-doge
ROOT_URL=https://localhost
METEOR_SETTINGS={"privateKey": "ohnoyouseemyprivatekey!"}