uWSGI其三:搭配Nginx

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项目的默认页面了.

原文地址:https://www.cnblogs.com/1qaz/p/7568447.html