基於centos搭建nginx+uwsgi運行django環境


環境:

CentOS 7

nginx/1.9.12

Python 2.7.5

一:安裝依賴包5

yum install zlib-devel bzip2-devel pcre-devel openssl-devel ncurses-devel 
sqlite-devel readline-devel tk-devel python-pip  -y

二:安裝uwsgi

uwsgi:https://pypi.python.org/pypi/uWSGI

uwsgi參數詳解:http://uwsgi-docs.readthedocs.org/en/latest/Options.html

pip install uwsgi
uwsgi --version

三:測試uwsgi是否正常:

新建test.py文件,內容如下:

def application(env, start_response):
    start_response('200 OK', [('Content-Type','text/html')])
    return "liuyao"

然后在終端運行:

uwsgi --http :8080 --wsgi-file test.py

在瀏覽器內輸入:http://127.0.0.1:8080,
看是否有“liuyao”輸出,若沒有輸出,請檢查你的安裝過程。

四:安裝django

pip install django

測試django是否正常,運行:

django-admin.py startproject newsite
cd newsite
python manage.py runserver 0.0.0.0:8000

在瀏覽器內輸入:http://127.0.0.1:8000,檢查django是否運行正常。

五:安裝nginx

1.下載
wget http://nginx.org/download/nginx-1.9.12.tar.gz
2.解壓
tar xf nginx-1.9.12.tar.gz
cd nginx-1.9.12.tar.gz
3.編譯
./configure --prefix=/usr/local/nginx-1.9.12 \
--with-http_stub_status_module \
--with-http_gzip_static_module
4.安裝
make && make install
注:您可自行改變參數設置,具體請上官網學習,如果已經存在nginx服務,那么此步可省略

六:配置uwsgi

uwsgi支持ini、xml等多種配置方式,但個人感覺ini更方便:

在/ect/目錄下新建uwsgi.ini,添加如下配置:
[uwsgi]
socket = 127.0.0.1:9090 //運行端口號
master = true           //主進程
vhost = true           //多站模式
no-stie = true         //多站模式時不設置入口模塊和文件
workers = 2            //子進程數
reload-mercy = 10     
vacuum = true          //退出、重啟時清理文件
max-requests = 1000   
limit-as = 512
buffer-sizi = 30000
pidfile = /var/run/uwsgi.pid    //pid文件,用於下面的腳本啟動、停止該進程
daemonize = /日志目錄/uwsgi.log
啟動方式:
uwsgi /etc/uwsgi.ini

七:設置nginx

找到nginx的安裝目錄,打開conf/nginx.conf文件,修改server配置

server {
    	listen       80;      //設置網站運行端口
    	server_name  localhost;  
    	
    	location / {            
        	include  uwsgi_params;
        	uwsgi_pass  127.0.0.1:9090;         //必須和uwsgi中的設置一致
        	uwsgi_param UWSGI_SCRIPT newsite.wsgi;  //入口文件,即wsgi.py相對於項目根目錄的位置,“.”相當於一層目錄
        	uwsgi_param UWSGI_CHDIR /newsite;       //項目根目錄,
        	index  index.html index.htm;
        	client_max_body_size 35m;
    	}
	 }

注:
1.uwsgi腳本

請放在/etc/init.d/uwsgi 設置可執行

DESC="uwsgi daemon"
NAME=uwsgi
DAEMON=/usr/bin/uwsgi
CONFIGFILE=/etc/$NAME.ini
PIDFILE=/var/run/$NAME.pid
SCRIPTNAME=/etc/init.d/$NAME
set -e
[ -x "$DAEMON" ] || exit 0
	
do_start() {
$DAEMON $CONFIGFILE || echo -n "uwsgi  running"	
}

do_stop() {
	$DAEMON --stop $PIDFILE || echo -n "uwsgi not running"
	rm -f $PIDFILE
	echo "$DAEMON STOPED."
}

do_reload() {
	$DAEMON --reload $PIDFILE || echo -n "uwsgi can't reload"
}

do_status() {
	ps aux|grep $DAEMON
}

case "$1" in
status)
	echo -en "Status $NAME: \n"
	do_status
;;
start)
	echo -en "Starting $NAME: \n"
	do_start
;;
stop)
	echo -en "Stopping $NAME: \n"
	do_stop
;;	
reload|graceful)
	echo -en "Reloading $NAME: \n"
	do_reload
;;
*)
	echo "Usage: $SCRIPTNAME {start|stop|reload}" >&2
	exit 3
;;
esac
exit 0

八:測試

OK,一切配置完畢,在終端運行

/etc/init.d/uwsgi start
/usr/local/nginx/sbin/nginx -s reload 或者直接啟動

在瀏覽器輸入:http://127.0.0.1,恭喜你可以看到django的“It work”了~

九:多站配置

使用多個uwsgi服務的方法來實現多個站點。

重復第六步,創建uwsgi9091.ini,並相應修改文件中的

socket = 127.0.0.1:9091
pidfile = /var/run/uwsgi9091.pid
daemonize = /日志目錄/uwsgi9091.log

並且設置腳本 啟動服務

然后新建nginx的配置文件為:

server {
    listen  8000;
    server_name 127.0.0.1;
    location / {            
        include  uwsgi_params;
        uwsgi_pass  127.0.0.1:9091;
        uwsgi_param UWSGI_SCRIPT oldsite.wsgi;
        uwsgi_param UWSGI_CHDIR /web/oldsite;
        index  index.html index.htm;
    }
}

然后我們就可以通過http://127.0.0.1:8000來訪問新的網站了。

完畢!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM