環境:
django:1.8.16 ?
python:2.7.13
pip:2.7
uwsgi:2.0.15
project路徑: /opt/cmdb/
Uwsgi的安裝配置
1、安裝python2.7 (省略安裝過程)
2、安裝pip2.7 (省略安裝過程)
3、安裝uwsgi(注意:要用pip2.7安裝)
1 2 3 | pip2.7? install ?uwsgi pip2.7? install ?requests ln ?-s? /usr/local/python2 .7 /bin/uwsgi ?/usr/bin/uwsgi |
4、配置uwsgi.ini?
路徑: /opt/cmdb/uwsgi.ini
文件內容:
[root@localhost cmdb]# cat uwsgi.ini?
1 2 3 4 5 6 7 8 9 10 11 | [uwsgi] socket?=?127.0.0.1:8088 chdir= /opt/cmdb wsgi- file ?=?cmdb /wsgi .py pidfile?=? /var/run/uwsgi .pid daemonize?=? /var/log/uwsgi .log perl-auto-reload?=?2 #buffer-size?=?102400 master?=? true processes?=?2 threads?=?4 |
Uwsgi:常用參數和選項
關于參數的具體使用,可以閱讀官方文檔http://uwsgi-docs.readthedocs.org/en/latest/Options.html?,在這里列出一些常用的參數:
-
chdir 項目目錄
-
home virtualenv目錄(如沒有運行virtualenv虛擬環境,則無需設置)
-
socket 套接字文件或TCP套接字,例如:site1.uwsgi.sock 或 127.0.0.1:8000
-
uid 用戶id
-
gid 用戶組id
-
processes 工作進程數
-
harakiri 進程超過該時間未響應就重啟該進程(默認單位為秒)
-
module 要啟動的wsgi模塊入口,如:mysite.wsgi:application
-
ini 指定ini配置文件
-
xml 指定xml配置文件(與ini類似)
-
file 指定要運行的wsgi程序文件,如:test.py
-
emperor Emperor模式
-
so-keepalive 開啟TCP KEEPALIVE(unix套接字方式下無效)
uwsgi服務init腳本 /etc/init.d/cmdb
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 | #!/bin/bash #?Comments?to?support?chkconfig?on?Linux #?chkconfig:?35?85?15 #?description:?uwsgi?is?an?HTTP(S)?server,?HTTP(S)?reverse # #?author?????mail@zhaoyanan.cn # #?chmod?+x?/etc/rc.d/init.d/uwsgi #?chkconfig?--add?uwsgi #?chkconfig?--level?2345?uwsgi?on # #?Change?History: #?date????????author??????????note #?2016/11/16??mail@zhaoyanan.cn??create,?refer?to?nginx,?and?http://uwsgi-docs.readthedocs.io/en/latest/Management.html ? ?set ?-e PATH= /usr/local/sbin : /usr/local/bin : /sbin : /bin : /usr/sbin : /usr/bin DESC= "uwsgi?daemon" NAME=uwsgi???????????? DAEMON= /usr/bin/ $NAME?? ##指向uwsgi的命令路徑 SCRIPTNAME= /etc/init .d/$NAME?? ##啟動腳本路徑 CONFFILE= /opt/cmdb/uwsgi .ini?? ##uwsgi.ini配置文件路徑 PIDFILE= /var/run/uwsgi .pid??? ##pid文件路徑 test ?-x?$DAEMON?||? exit ?0 ? ?d_start(){ ???? $DAEMON?--ini?$CONFFILE?||? echo ?-n? "?already?running" } ? ?d_stop()?{ ???? $DAEMON?--stop?$PIDFILE?||? echo ?-n? "?not?running" } ? ?d_reload()?{ ???? $DAEMON?--reload?$PIDFILE?||? echo ?-n? "?counld?not?reload" } ? ?d_freload()?{ ???? $DAEMON?--die-on-term?$PIDFILE?||? echo ?-n? "?counld?not?force?reload" } ? ?case ?"$1" ?in start) ???? echo ?-n? "Starting?$DESC:$NAME" ???? d_start ???? echo ?"." ;; stop) ???? echo ?-n? "Stopping?$DESC:$NAME" ???? d_stop ???? echo ?"." ;; reload) ???? echo ?-n? "Reloading?$DESC?configuration..." ???? d_reload ???? echo ?"reloaded." ;; force_reload) ???? echo ?-n? "The?official?provision?of?the?parameters,?tested?and?found?not?to?support..." ???? #?d_freload ???? #?echo?"force?reloaded." ???? echo ?"." ;; restart) ???? echo ?-n? "Restarting?$DESC:?$NAME" ???? d_stop ???? sleep ?2 ???? d_start ???? echo ?"." ;; *) ???? echo ?"Usage:?$SCRIPTNAME?{start|stop|restart|reload|force_reload}" ?>&2 ???? exit ?3 ;; esac ? ?exit ?0 |
Nginx安裝配置
1、安裝nginx
1 | yum?-y? install ?nginx |
2、配置nginx
[root@localhost cmdb]# cat /etc/nginx/conf.d/cmdb.conf?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | upstream?django?{ ???? server?127.0.0.1:8088; ???? } server?{ ???? listen??????80; ???? server_name?172.16.42.128; ???? charset?????utf-8; ???? client_max_body_size?10M; ???? location? /static ?{ ???????? alias ?/opt/cmdb/static ; ???? } ???? location?/?{ ???????? uwsgi_send_timeout?300; ???????? uwsgi_connect_timeout?300; ???????? uwsgi_read_timeout?300; ???????? uwsgi_pass??django; ???????? include????? /etc/nginx/uwsgi_params ; ???? } } |
啟動站點
1、啟動nginx服務
/etc/init.d/nginx start (刪除默認的default.conf配置)
2、啟動uwsgi
/etc/init.d/cmdb start
排錯:
1、在實際操作中發現,啟動uwsgi服務后,訪問站點出現“502 Bad Gateway”的報錯,后來發現是在settings中設置了不允許訪問站點
1 | ALLOWED_HOSTS?=?[] |
改成
1 | ALLOWED_HOSTS?=?[‘*’] |
后問題解決。
2、由于python2.6 不支持django1.8 ,所以需要在服務器上安裝python2.7,并且在安裝之前,最好輸入以下命令,將可能用到的包都裝上,否則出現問題時,需要重新編譯安裝python2.7
1 2 3 4 | yum?-y? install ?zlib-devel? bzip2 -devel?openssl-devel? yum?-y? install ?ncurses-devel?sqlite-devel?readline-devel? yum?-y? install ?tk-devel?gdbm-devel?db4-devel?libpcap-devel yum?-y? install ?xz-devel?libffi-devel |
3、用pip安裝uwsgi時,一定要用pip2.7(用python2.7安裝的pip) 進行安裝
4、invalid request block size: 4161 (max 4096)...skip報錯解決
在訪問站點時,出現了invalid request block size: 4161 (max 4096)...skip報錯解決的報錯。
解決辦法是在uwsgi.ini配置文件中增加一條配置:buffer-size = 102400
將buffer-size設置大一些