9

我打算在环境变量中存储一些应用程序设置,比如MYSQL_URL=mysql://...我使用supervisord来管理应用程序进程。子进程启动前如何加载环境变量?特别是当这些设置发生变化时,我希望重新启动子进程会加载新的设置。

另外我想知道在哪里存储这些环境变量。我可以“导出 $(cat 文件名)”的文件?或者一些更好的方法。我很好奇 Heroku 如何管理它的环境变量。

4

2 回答 2

21

您可以在 [ ] 部分的 supervisord 配置中设置每个进程的环境变量program:x,这些将在启动时传递给进程:

[program:yourprocess]
# ... other settings
environment =
    MYSQL_URL=mysql://,
    OTHER_VAR="some other value"

请注意,您需要在每个变量之间使用逗号。我在上面的例子中也使用了换行符,这些是可选的。如果环境值中有空格,则需要将值括在引号中。

您还可以使用相同的格式为该部分中的所有进程设置环境变量。[supervisord]

最后但并非最不重要的一点是,在 supervisord 启动时设置的任何环境变量也会传递给 supervisord 管理的进程。有关详细信息,请参阅有关环境变量的文档部分

请注意,如果您更改配置文件中配置的环境变量,您需要向 supervisord 发出信号以重新加载配置并重新启动子进程以使它们获取这些更改:

supervisorctl update
supervisorctl restart yourprocess

但是,如果您在 supervisord 之外更改环境变量,则需要一起关闭 supervisord 以获取这些变量:

supervisorctl shutdown
supervisord
于 2012-08-05T10:02:08.767 回答
0

根据文档,“supervisord.conf包含一个名为[supervisord全局设置的部分”,例如environmont可以设置变量。(在链接页面上,搜索“环境”一词)。

环境变量也可以按程序设置

于 2012-08-05T09:54:55.797 回答