【问题标题】:Supervisord - environment variables conflict for multiple projectsSupervisord - 多个项目的环境变量冲突
【发布时间】:2013-09-29 22:23:46
【问题描述】:

我有两个基于 Django 构建的站点,它们都使用 gunicorn 管理 supervisor 2

supervisord.conf

[program:site1]
environment=PYTHONPATH="/home/www/virtualenv/site1/bin/:/home/www/site1/"
command=/home/www/virtual/site1/bin/gunicorn wsgi:app -b localhost:1234
directory=/home/www/site1/
...

[program:site2]
environment=PYTHONPATH="/home/www/virtualenv/site2/bin/:/home/www/site2/"
command=/home/www/virtual/site2/bin/gunicorn wsgi:app -b localhost:1235
directory=/home/www/site2/
...

使用此配置,我注意到 site2 尝试从 site1 的设置开始,但由于找不到 site1 所需的软件包而失败,因为它们没有安装在 site2 的 virtualenv 中。 我认为这是因为PYTHONPATH 在两个站点之间混合。 如何正确设置两个站点以仅使用自己的 virtualenv?

【问题讨论】:

    标签: python django virtualenv gunicorn supervisord


    【解决方案1】:

    如果您使用的是 virtualenv,您只需要更改您的 PATH,而不是 PYTHONPATH,如 here 所述。

    【讨论】:

      【解决方案2】:

      我使用如下简单配置进行测试:-

      [supervisord]
      
      [program:a]
      command = /bin/bash pa.sh
      environment = PYTHONPATH=/tmp/a
      stdout_logfile = /tmp/a.log
      
      [program:b]
      command = /bin/bash pb.sh
      environment = PYTHONPATH=/tmp/b
      stdout_logfile = /tmp/b.log
      

      pa.shpb.sh 看起来像这样:-

      while :
          do echo $PYTHONPATH
          sleep 2s
      done
      

      然后我运行 supervisord:-

      supervisord -c sp.cfg -n
      2013-09-25 00:43:12,942 INFO supervisord started with pid 15362
      2013-09-25 00:43:13,945 INFO spawned: 'a' with pid 15365
      2013-09-25 00:43:13,948 INFO spawned: 'b' with pid 15366
      2013-09-25 00:43:14,967 INFO success: a entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
      2013-09-25 00:43:14,968 INFO success: b entered RUNNING state, process has stayed up for > than 1 seconds (startsecs) 
      

      检查/tmp/a.log/tmp/b.log:-

      cat /tmp/a.log 
      /tmp/a
      /tmp/a
      /tmp/a
      /tmp/a
      
      cat /tmp/b.log 
      /tmp/b
      /tmp/b
      /tmp/b
      /tmp/b
      

      所以两个环境都被选中了。 Supervisord 版本 - 3.0

      【讨论】:

        【解决方案3】:

        每个站点都有不同的配置文件。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-06-08
          • 2015-04-09
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多