2013-09-24 20 views
0

我有兩個網站建立在Django的,他們都使用gunicornsupervisor 2Supervisord - 多個項目對接洽談

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?

回答

0

爲每個站點配置不同的文件。

0

我用簡單的配置如下測試: -

[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

0

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