3

私のnginx conf:

location / {
    include uwsgi_params;
    uwsgi_param UWSGI_PYHOME /usr;
    uwsgi_pass unix:/var/run/uwsgi-python/uwsgi/socket;
    uwsgi_param UWSGI_CHDIR /var/www/my_site;
    uwsgi_param UWSGI_SCRIPT my_site:app;
    uwsgi_param SERVER_NAME my_site;
    uwsgi_param UWSGI_SETENV DEPLOY_VERSION=Development;
}

私のuwsgiパラ:

/usr/local/bin/uwsgi --master --processes 2 --logdate --chmod-socket=666 --uid www --gid www --limit-as 512 --harakiri 60 --max-requests 1000 --no-orphans —-reload-os-env --daemonize /var/log/uwsgi-python/uwsgi.log --pidfile /var/run/uwsgi-python/uwsgi/pid --socket /var/run/uwsgi-python/uwsgi/socket --xmlconfig /etc/uwsgi-python/apps-enabled/uwsgi.xml

uwsgi xml:

<uwsgi>
<master/>
<vhost/>
<memory-report/>
<no-site/>
</uwsgi>

私のフラスコアプリで

print os.environ.get('DEPLOY_VERSION', 'NONE')  #pring NONE

env_vars を取得するにはどうすればよいですか?

<vhost/><no-site/> モードの UWSGI_SETENV で env_vars の設定を取得できないのでしょうか?

ところで:仮想環境なしで1台のマシンにアプリのマルチバージョン(開発/ベータ/リリース)をどのように展開しますか?

4

2 に答える 2

3

django Mezzanine CMS 展開の環境構成を定義する際にも同様の問題がありました。

DEPLOY_VERSION は、uWSGI サービスではなく、基礎となるアプリケーションをターゲットにしているように見えるため、Nginx の代わりに uWSGI 構成ファイルに配置するのが正しい場所だと思います。

.xml ファイルを次のように変更してみてください。

<uwsgi>
<master/>
<vhost/>
<memory-report/>
<env>DEPLOY_VERSION=Development</env> <!-- this -->
<no-site/>
</uwsgi>
于 2013-07-14T14:35:30.673 に答える
3

それ以外の:

uwsgi_param UWSGI_SETENV DEPLOY_VERSION=開発;

nginx でリクエスト変数ごとに設定できます。uwsgi_param DEPLOY_VERSION 'Development';

次に、Flask 内で、request.environ を介して変数にアクセスします。request.environ['DEPLOY_VERSION']

(私は同様の問題を抱えていて、uwsgiメーリングリストで上記の解決策を指摘されました)

于 2012-08-01T12:14:50.727 に答える