Nginx我这台机器有默认安装,新增配置:
server{ listen 80 ; #监听80端口 access_log /export/servers/nginx/logs/mypro.local_access.log; #日志文件位置 error_log /export/servers/nginx/logs/mypro.local_error.log; location / {#访问/时 include uwsgi_params; #加载uwsgi模块
proxy_pass http://127.0.0.1:9090; #将请求跳转到该端口 } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } location /static/ { alias /export/servers/mypro/static/; #访问/static时直接访问到/project/static } }
注意对access_log和error_log新建log文件.
uWSGI 配置
端口9090是uwsgi开启的,要接收80来的请求.uWSGI启动可以使用xml,ini,yaml,yml,json等格式的配置文件来启动.
1. xml 配置
请确定你在上一节中的django_wsgi.py文件已经存在了.新建一个XML文件:mypro.xml,将它放在/export/App/mypro/目录下:
<uwsgi> <socket>127.0.0.1:9090</socket> <listen>80</listen> <master>true</master> <pythonpath>/export/App/mypro</pythonpath> <processes>1</processes> <logdate>true</logdate> <daemonize>/var/log/uwsgi.log</daemonize> <plugins>python</plugins> </uwsgi>
然后执行命令:
$ uwsgi -x /export/App/mypro/mypro.xml
or
$ uwsgi --xml /export/App/mypro/mypro.xml
有时候因各种环境问题,-x --xml命令识别不了,比如我的系统版本为Centos6.6,uWSGI版本为2.0.15.可以使用下面ini配置方式:
2. ini配置
[uwsgi] vhost = false plugins = python socket = 127.0.0.1:9090 master = true enable-threads = true workers = 1 wsgi-file = /export/App/mypro/mypro/wsgi.py virtualenv = /export/servers/python/2.7.12 # python安装目录 chdir = /export/App/mypro
然后执行命令:
$ uwsgi --ini /export/App/mypro/mypro.ini & $ ps -fe | grep mypro admin 3192 13386 2 10:42 pts/0 00:00:00 uwsgi --ini /export/App/mypro/mypro.ini admin 3195 3192 0 10:42 pts/0 00:00:00 uwsgi --ini /export/App/mypro/mypro.ini admin 3232 13386 0 10:43 pts/0 00:00:00 grep mypro
在实际部署环境中,我通常使用之前命令行的形式后台启动9090端口保持监听.命令格式如下:
$ uwsgi --http :9090 --chdir /export/App/mypro --module django_wsgi -M -p 8 --http-buffer-size=64000 --buffer-size=64000 -d /export/Logs/mypro/uwsgi.log & --chdir Django程序目录 --module 使用django_wsgi,类似apache-tomcat的mod_jk和nginx-tomcat的mod_proxy -M enable master process -p spawn the specified number of workers/processes(开启8个进程) -d 记录启动日志
如无意外,在浏览器里直接访问80端口,就能看到Django项目的默认页面了.