【问题标题】:How to use environment variables in a .service script如何在 .service 脚本中使用环境变量
【发布时间】:2018-02-16 15:07:58
【问题描述】:

我在 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 文件是否可以访问我服务器上的环境变量,因此我不必在每次在新服务器上使用此脚本时都编写它们。提前致谢

如果您想了解有关该项目的更多信息,请随时查看the repo! ????

【问题讨论】:

    标签: linux bash elixir systemd


    【解决方案1】:

    您正在[Service] 部分中寻找EnvironmentFile= 指令。

    EnvironmentFile=/path/to/some/textFile
    

    阅读here了解更多信息。

    【讨论】:

      【解决方案2】:

      除了 iamauser 所说的(这可能是您正在寻找的答案)之外,还有另一种方法可以在服务启动之前修改服务的环境变量。您可以使用systemctl's environment commands。请注意,这将影响 systemd 的环境本身以及它启动的所有未来服务。使用它的坏理由多于好处,因此如果 iamauser 的解决方案足够,请避免使用它。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-06-08
        • 1970-01-01
        • 2022-09-23
        • 2013-09-14
        • 1970-01-01
        • 1970-01-01
        • 2016-05-19
        • 2020-11-01
        相关资源
        最近更新 更多