Weisen Sie systemctl an, Variablen aus einer Datei zu verwenden

Weisen Sie systemctl an, Variablen aus einer Datei zu verwenden

Ich verwende es, systemctlum meine App zu starten und am Leben zu erhalten. Unten ist meine .serviceDatei. Beachten Sie das Environment='METEOR_SETTINGS={"privateKey": "ohnoyouseemyprivatekey!"}'. Hier werde ich private Schlüssel speichern und ich möchte sie an diesem Ort nicht sichtbar platzieren.

Meine Frage ist, wie genau ich systemctl auffordere, es aus einer Datei an einem bestimmten Ort in zu lesen

[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

Antwort1

Genommen vonhttps://coreos.com/os/docs/latest/using-environment-variables-in-systemd-units.html#environmentfile-directive

EnvironmentFile ähnelt der Environment-Direktive, liest aber die Umgebungsvariablen aus einer Textdatei. Die Textdatei sollte durch Zeilenumbrüche getrennte Variablenzuweisungen enthalten.

Beispiel:

[Service]
EnvironmentFile=/etc/envfile

Inhalt von /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!"}

verwandte Informationen