nginx+uwsgi部署多个python应用

nginx+uwsgi部署多个python应用
2015-01-12 17:35:52
标签:python应用 shell

参考文章:

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”

1
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的一个很有用的虚拟环境工具。

1
easy_install virtualenv

然后设置一个/多个app基准环境

1
virtualenv /www/fabric-bolt/

应用环境,在此环境下安装的软件仅在此环境下有效

1
2
3
4
source /www/fabric-bolt/
pip install django
pip install mako
...

最后配置nginx,注意每个站点必须单独占用一个server

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
    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的配置

1
2
3
4
5
6
7
8
9
<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应用:

nginx+uwsgi部署多个python应用


nginx+uwsgi部署多个python应用