姜玲 陳美旭 遼寧科技大學(xué)國際金融與銀行學(xué)院
網(wǎng)站的Web應(yīng)用程序開發(fā)完成后,需要將其部署到服務(wù)器上??蛻舳藦陌l(fā)送一個HTTP 請求到Flask處理請求,分別經(jīng)過了web服務(wù)器層,WSGI層,web框架層三個層次。
對于傳統(tǒng)的客戶端-服務(wù)器架構(gòu),其請求的處理過程是,客戶端向服務(wù)器發(fā)送請求,服務(wù)器接收請求并處理請求,然后給客戶端返回響應(yīng)。在這個過程中,服務(wù)器的作用是:接收及處理請求,并返回響應(yīng)。Web 服務(wù)器與應(yīng)用程序之間要進行交互,這時就出現(xiàn)了很多 Web 服務(wù)器與應(yīng)用程序之間交互的規(guī)范,比如 Python 專用的 WSGI 規(guī)范等等。有了統(tǒng)一標準,程序的可移植性就大大提高了。Web服務(wù)器是一類特殊的服務(wù)器,其作用是主要是接收HTTP請求并返回響應(yīng)。在三層結(jié)構(gòu)中,web服務(wù)器是最先接收用戶請求的,并將響應(yīng)結(jié)果返回給用戶。
Web框架的作用主要是方便開發(fā) web應(yīng)用程序,HTTP請求的動態(tài)數(shù)據(jù)就是由web框架層來提供的。常見的支持python語言的web框架有Flask,Django等。有了框架,開發(fā)者就不需要處理 WSGI,框架會解決這些,開發(fā)者只需處理 HTTP 請求和響應(yīng)即可。
WSGI 是一種接口協(xié)議,它只適用于Python語言,其全稱為Web Server Gateway Interface,即Web 服務(wù)器網(wǎng)關(guān)接口,它定義了web服務(wù)器和 web應(yīng)用之間的接口規(guī)范。只要 web服務(wù)器和 web應(yīng)用都遵守WSGI協(xié)議,那么 web服務(wù)器和 web應(yīng)用就可以隨意的組合,也可以將 WSGI 理解為溝通服務(wù)器與應(yīng)用程序之間的一座橋梁。
服務(wù)器操作系統(tǒng)選用目前流行的Linux發(fā)行版Ubuntu,Web框架采用Flask,Web服務(wù)器使用NginX,WSGI使用Python語言實現(xiàn)的uWSGI。Nginx是高效的Web服務(wù)器和反向代理服務(wù)器,可以用作負載均衡,與 Apache相比,Nginx支持高并發(fā),可以支持百萬級的TCP連接,十萬級別的并發(fā)連接,部署簡單,內(nèi)存消耗少,成本低。Nginx支持uWSGI 的uwsgi協(xié)議,因此我們可以將Nginx與uWSGI結(jié)合起來,Nginx通過uwsgi_pass將動態(tài)內(nèi)容交給uWSGI處理。
首先要在服務(wù)器上創(chuàng)建程序目錄,然后修改目錄權(quán)限,之后復(fù)制程序代碼,創(chuàng)建log目錄及虛擬目錄。
在ubuntu終端執(zhí)行:
sudo apt-get install nginx
安裝好以后,可直接用Nginxstart命令啟動,出現(xiàn)歡迎界面,說明nginx啟動成功了。
在python下,可以直接使用命令pip install uwsgi安裝。之后寫好配置文件就可以啟動。一下是一個配置文件uwsgi.ini的例子:
用命令行工具啟動uWSGI服務(wù)器:uwsgi --ini /path/…/uwsgi.ini
現(xiàn)在uwsgi這個Web Server已經(jīng)啟動起來了,接下來設(shè)置Nginx。Nginx的配置文件是/etc/nginx/nginx.conf,這個配置文件中又引用了/etc/nginx/conf.d/和/etc/nginx/sitesenabled/這兩個文件夾的配置文件,通過include來實現(xiàn)。所以,無論是直接在nginx.conf或者在conf.d、sites-enabled中配置都是可以的。
以上是一般的nginx反向代理的配置,如果使用http協(xié)議的話,與代理其它服務(wù)器的方式并無不同。
直接通過在站點配置文件中為location配置uwsgi_pass,即 可 將Nginx與uWSGI集 成,建 立 一 個 基 于Nginx+Python+uWSGI的正式站點。啟動后,輸入你的服務(wù)器IP地址,就可以直接訪了。部署也就完成了。
Web服務(wù)器是連接用戶瀏覽器與Python服務(wù)器端程序的中間節(jié)點,在網(wǎng)站建立的過程中起著重要的作用。Nginx是由俄羅斯工程師開發(fā)的一個高性能HTTP和反向代理服務(wù)器,它以運行穩(wěn)定、配置簡單、資源消耗低而聞名。應(yīng)用Nginx+Python+uWSGI可以快速地建立網(wǎng)站服務(wù)器,從而實現(xiàn)高效、穩(wěn)定的網(wǎng)絡(luò)應(yīng)用。