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