我打算在环境变量中存储一些应用程序设置,比如MYSQL_URL=mysql://...我使用supervisord来管理应用程序进程。子进程启动前如何加载环境变量?特别是当这些设置发生变化时,我希望重新启动子进程会加载新的设置。
另外我想知道在哪里存储这些环境变量。我可以“导出 $(cat 文件名)”的文件?或者一些更好的方法。我很好奇 Heroku 如何管理它的环境变量。
我打算在环境变量中存储一些应用程序设置,比如MYSQL_URL=mysql://...我使用supervisord来管理应用程序进程。子进程启动前如何加载环境变量?特别是当这些设置发生变化时,我希望重新启动子进程会加载新的设置。
另外我想知道在哪里存储这些环境变量。我可以“导出 $(cat 文件名)”的文件?或者一些更好的方法。我很好奇 Heroku 如何管理它的环境变量。
您可以在 [ ] 部分的 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