指向 systemctl 使用文件中的变量

指向 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-directive

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!"}

相关内容