nginx+uwsgi部署多個python應用

參考文章:

http://kb.cnblogs.com/page/86907/ (配置Nginx+uwsgi更方便地部署python應用)

http://projects.unbit.it/uwsgi/wiki/VirtualHosting (uWSGI VirtualHosting Mode)

http://uwsgi-docs.readthedocs.org/en/latest/Configuration.html (Configuring uWSGI)



爲了讓多個站點共享一個uwsgi服務,必須把uwsgi運行成虛擬站點:去掉“-w myapp”加上”–vhost”

uwsgi -M -p 2 -t 30 --limit-as 128 -R 10000 -x /usr/local/nginx/conf/uwsgi.xml -d /tmp/uwsgi.log --vhost

然後必須配置virtualenv,virtualenv是python的一個很有用的虛擬環境工具。

easy_install virtualenv

然後設置一個/多個app基準環境

virtualenv /www/fabric-bolt/

應用環境,在此環境下安裝的軟件僅在此環境下有效

source /www/fabric-bolt/
pip install django
pip install mako
...

最後配置nginx,注意每個站點必須單獨佔用一個server

    server {
        listen       80;
        server_name  app1.blogex.com;

        location / {
            root /www/fabric-bolt/lib/python2.7/site-packages/fabric_bolt;
            include   uwsgi_params;
            uwsgi_pass  192.168.1.121:9001;
            uwsgi_param UWSGI_PYHOME /www/fabric-bolt;
            uwsgi_param UWSGI_CHDIR /www/fabric-bolt/lib/python2.7/site-packages/fabric_bolt;
            uwsgi_param UWSGI_SCRIPT wsgi;
            access_log /usr/local/nginx/logs/access.log;
        }
        location /static/ {
            alias /www/fabric-bolt/lib/python2.7/site-packages/fabric_bolt/work/myweb/static/;
            index index.html;
}

}


        server {
            listen       80;
            server_name  app2.blogex.com;

            location / {
                root /www/fabric-bolt/lib/python2.7/site-packages/fabric_bolt/work;
                include   uwsgi_params;
                uwsgi_pass  192.168.1.121:9001;
                uwsgi_param UWSGI_PYHOME /www/fabric-bolt;
                uwsgi_param UWSGI_CHDIR /www/fabric-bolt/lib/python2.7/site-packages/fabric_bolt/work;
                uwsgi_param UWSGI_SCRIPT django_wsgi;
                access_log /usr/local/nginx/logs/access.log;
        }
}


uwsgi.xml的配置

<uwsgi>
<pidfile>/usr/local/nginx/conf/uwsgi.pid</pidfile>
<socket>192.168.1.121:9001</socket>
<processes>4</processes>
<pythonpath>/www/fabric-bolt/lib/python2.7/site-packages</pythonpath>
<pythonpath>/www/fabric-bolt/lib/python2.7/site-packages/fabric_bolt</pythonpath>
<pythonpath>/www/fabric-bolt/lib/python2.7/site-packages/fabric_bolt/work</pythonpath>
<daemonize>/tmp/uwsgi.log</daemonize>
</uwsgi>


重啓nginx服務,兩個站點就可以共用一個uwsgi服務了。


結語:

上篇文章配置好了dns服務器,這裏分別訪問nginx虛擬主機app1.blogex.com跟app2.blogex.com,可以看到django應用:

wKiom1SzlIjQ0JgJAAGwJ1iU5eg116.jpg


wKiom1SzlOOR20EgAAGdg7tzkis005.jpg

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章