supervisor 加载系统环境变量问题

2017-10-25 11:30:34 +08:00
 wqchen

我用 supervisor 管理大概十多个进程,supervisor 处于启动状态。

新添加了一个进程,这个进程使用的环境变量我放到了/etc/profile.d/文件夹下,文件名为*.sh。然后添加 supervisor 配置,启动 supervisorctl,执行,update,新的进程在启动的时候无法读取/etc/profile.d/下 export 的环境变量,进程启动失败。想来想去不知道什么原因....

但是在 shell 环境下,直接启动进程,是可以读取到这些环境变量的,就是 supervisor 启动进程的时候获取不到...

求大神们解惑....

14412 次点击
所在节点    Python
7 条回复
chaegumi
2017-10-25 11:48:29 +08:00
我是直接上 systemd 的,如果在 systemd 中遇到这样的问题,定义一下
[Service]
EnvironmentFile=

就解决了。
defunct9
2017-10-25 17:24:27 +08:00
正常,supervisor 启动的时候是 /etc/init.d,所以环境变量根本没有加载起来。
你在你的启动脚本里加上就可以了
julyclyde
2017-10-25 17:50:46 +08:00
“无法读取”是你理解有问题
根本就不会去那读取

profile 是给 shell 用的。你这又没用到 shell
Dominator
2017-10-26 00:43:18 +08:00
你可以使用 配置文件里面的关键字 environment 来添加你需要使用的那个 python 来指定你启动的环境变量。同理可以添加别的环境变量信息。
wq2016
2017-10-30 16:19:00 +08:00
楼主解决了吗?
goinghugh
2017-11-13 10:02:28 +08:00
在 supervisor 配置文件.conf 中 加上 environment=PYTHONPATH=/opt/mypypath:%(ENV_PYTHONPATH)s,PATH=/opt/mypath:%(ENV_PATH)s
参考 https://stackoverflow.com/questions/12900402/supervisor-and-environment-variables
jinsongzhao
2021-02-05 13:18:06 +08:00
@goinghugh %(ENV_PATH)s 最后这个 s 是什么意思?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/400535

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX