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