保证/export/servers/nginx/是nginx的安装目录
/export/servers/nginx/conf/domain/xxx应用配置文件python
1.项目名称:Python_20160906,里面有2个应用
2.一个应用名字叫app,一个叫作api
3.项目路径/export/App/DevOPS/Python_20160906
uwsgi相关的东西在下图这个配置文件中(项目settings.py文件目录下)
nginx
(1)安装web
pip install uwsgi
(2)测试是否安装成功(uwsgi开启服务)django
--home:指定virtualenv的环境目录,若是没用virtualenv的话不用指定可选 --chdir:指定django项目的根路径:/export/App/DevOPS/Python_20160906 -w 指定django项目的wsgi文件位置,就是如图2的东西(由于项目目录为/export/App/DevOPS/Python_20160906,项目目录下还有个同名目录Python_20160906,存放项目配置文件的地方,里面有个wsgi.py文件,因此写做Python_20160906.wsgi) # uwsgi --http :8000 --home /home/siva/Env/first --chdir /export/App/DevOPS/Python_20160906 -w Siva_First.wsgi uwsgi --http :8000 --chdir /export/App/DevOPS/Python_20160906 -w Python_20160906.wsgi
(3)直接访问验证vim
curl http://127.0.0.1:8000/
mkdir -p /export/servers/nginx/conf/uwsgi/ cd /export/servers/nginx/conf/uwsgi/ vim Python_20160906.ini
<1>project:项目名
<2>chdir:指定django项目的根路径
<3>module:对应了上面命令行启动的-w参数,指定django项目的wsgi文件位置
<4>master:是否有主进程
<5>processes:几个工做进程
<6>socket:建立的socket套接字文件位置
<7>chmod-socket:套接字权限
<8>vacuum:当服务器退出的时候自动删除unix socket文件和pid文件后端
[uwsgi] project = Python_20160906 chdir = /export/App/DevOPS/%(project) module = %(project).wsgi master = true processes = 5 socket = /export/App/DevOPS/%(project)/%(project).sock chmod-socket = 664 vacuum = true
uwsgi --ini /export/servers/nginx/conf/uwsgi/Python_20160906.ini &
map $http_upgrade $connection_upgrade { default upgrade; '' close; } server { listen 80; server_name devops.xx.com devops.xx.local; access_log /export/servers/nginx/logs/devops.xx.local/devops.xx.local_access.log main; error_log /export/servers/nginx/logs/devops.xx.local/devops.xx.local_error.log warn; error_page 400 401 402 403 404 405 408 410 412 413 414 415 500 501 502 503 506 = http://www.jd.com/error2.aspx; charset utf-8; # #########################核心配置就这2行######################################### location / { include /export/servers/nginx/conf/uwsgi_params; uwsgi_pass unix:/export/App/DevOPS/Python_20160906/Python_20160906.sock; } ################################################################################# location /static/ { alias /export/App/DevOPS/Python_20160906/static/; } # websocket的匹配 location ~ /index/websocket_demo/ { include /export/servers/nginx/conf/uwsgi_params; uwsgi_pass unix:/export/App/DevOPS/Python_20160906/Python_20160906.sock; proxy_redirect off; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; } location = / { rewrite ^ /index/ permanent; } location = /favicon.ico { rewrite ^ /static/image/favicon.ico permanent; } location /devops/ { rewrite ^/devops/(.*)$ /$1 last; } location /software/ { alias /export/Data/software/; allow all; autoindex on; autoindex_exact_size off; autoindex_localtime on; } }
/etc/init.d/nginx restart
(1)修改django项目的settings.py,添加一条数据api
WEBSOCKET_FACTORY_CLASS = 'dwebsocket.backends.uwsgi.factory.uWsgiWebSocketFactory'
(2)修改uwsgi的配置文件,添加异步选项bash
async = 30 ugreen = '' http-timeout = 300
(3)重启uwsgi服务服务器
killall uwsgi