參考文章:
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應用: