如何在.service脚本中使用环境变量

3

我在linux服务器上有一个elixir项目。我创建了一个 .service 脚本,可以使用以下命令启动和停止应用程序。

systemctl start "my_app".service
systemctl stop "my_app".service

".service文件看起来像这样..."
[Unit]
Description="example app_name daemon"

[Service]
Type=simple
User=root
Restart=on-failure
Environment=MIX_ENV=prod "PORT=4000"

WorkingDirectory="the file path to my app"

ExecStart=/usr/local/bin/mix phoenix.server

[Install]
WantedBy=multi-user.target

它的表现符合预期,唯一的例外是它无法读取环境变量。我可以通过手动将它们添加到脚本中(如上面的PORT=4000)来让应用程序访问它们。
我想知道是否有一种方法让.service文件访问我在服务器上拥有的环境变量,这样我就不必在每个新服务器上使用此脚本时都写入它们了。提前致谢。
如果您想了解更多关于该项目的信息,请随意查看repo
2个回答

6
您正在查找在[Service]部分中的EnvironmentFile=指令。
EnvironmentFile=/path/to/some/textFile

Read here for more info.


0
除了iamauser所说的,这可能是你要找的答案之外,还有另一种在服务启动之前修改环境变量的方法。您可以使用systemctl的环境命令。请注意,这将影响systemd本身的环境以及它启动的所有未来服务。有更多不好的原因使用它,比好的原因少,因此如果iamauser的解决方案足够,请避免使用它。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接