如何在.service脚本

时间:2018-02-16 15:07:58

标签: linux bash elixir systemd

我在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文件是否有办法访问我服务器上的env变种,所以我不必每次都在新服务器上使用这个脚本。提前致谢

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

2 个答案:

答案 0 :(得分:5)

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

EnvironmentFile=/path/to/some/textFile

阅读here了解详情。

答案 1 :(得分:0)

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