姜玲 陳美旭 遼寧科技大學國際金融與銀行學院
網站的Web應用程序開發完成后,需要將其部署到服務器上。客戶端從發送一個HTTP 請求到Flask處理請求,分別經過了web服務器層,WSGI層,web框架層三個層次。
對于傳統的客戶端-服務器架構,其請求的處理過程是,客戶端向服務器發送請求,服務器接收請求并處理請求,然后給客戶端返回響應。在這個過程中,服務器的作用是:接收及處理請求,并返回響應。Web 服務器與應用程序之間要進行交互,這時就出現了很多 Web 服務器與應用程序之間交互的規范,比如 Python 專用的 WSGI 規范等等。有了統一標準,程序的可移植性就大大提高了。Web服務器是一類特殊的服務器,其作用是主要是接收HTTP請求并返回響應。在三層結構中,web服務器是最先接收用戶請求的,并將響應結果返回給用戶。
Web框架的作用主要是方便開發 web應用程序,HTTP請求的動態數據就是由web框架層來提供的。常見的支持python語言的web框架有Flask,Django等。有了框架,開發者就不需要處理 WSGI,框架會解決這些,開發者只需處理 HTTP 請求和響應即可。
WSGI 是一種接口協議,它只適用于Python語言,其全稱為Web Server Gateway Interface,即Web 服務器網關接口,它定義了web服務器和 web應用之間的接口規范。只要 web服務器和 web應用都遵守WSGI協議,那么 web服務器和 web應用就可以隨意的組合,也可以將 WSGI 理解為溝通服務器與應用程序之間的一座橋梁。
服務器操作系統選用目前流行的Linux發行版Ubuntu,Web框架采用Flask,Web服務器使用NginX,WSGI使用Python語言實現的uWSGI。Nginx是高效的Web服務器和反向代理服務器,可以用作負載均衡,與 Apache相比,Nginx支持高并發,可以支持百萬級的TCP連接,十萬級別的并發連接,部署簡單,內存消耗少,成本低。Nginx支持uWSGI 的uwsgi協議,因此我們可以將Nginx與uWSGI結合起來,Nginx通過uwsgi_pass將動態內容交給uWSGI處理。
首先要在服務器上創建程序目錄,然后修改目錄權限,之后復制程序代碼,創建log目錄及虛擬目錄。
在ubuntu終端執行:
sudo apt-get install nginx
安裝好以后,可直接用Nginxstart命令啟動,出現歡迎界面,說明nginx啟動成功了。
在python下,可以直接使用命令pip install uwsgi安裝。之后寫好配置文件就可以啟動。一下是一個配置文件uwsgi.ini的例子:

用命令行工具啟動uWSGI服務器:uwsgi --ini /path/…/uwsgi.ini
現在uwsgi這個Web Server已經啟動起來了,接下來設置Nginx。Nginx的配置文件是/etc/nginx/nginx.conf,這個配置文件中又引用了/etc/nginx/conf.d/和/etc/nginx/sitesenabled/這兩個文件夾的配置文件,通過include來實現。所以,無論是直接在nginx.conf或者在conf.d、sites-enabled中配置都是可以的。
以上是一般的nginx反向代理的配置,如果使用http協議的話,與代理其它服務器的方式并無不同。
直接通過在站點配置文件中為location配置uwsgi_pass,即 可 將Nginx與uWSGI集 成,建 立 一 個 基 于Nginx+Python+uWSGI的正式站點。啟動后,輸入你的服務器IP地址,就可以直接訪了。部署也就完成了。
Web服務器是連接用戶瀏覽器與Python服務器端程序的中間節點,在網站建立的過程中起著重要的作用。Nginx是由俄羅斯工程師開發的一個高性能HTTP和反向代理服務器,它以運行穩定、配置簡單、資源消耗低而聞名。應用Nginx+Python+uWSGI可以快速地建立網站服務器,從而實現高效、穩定的網絡應用。