保證/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