A. nginx+uwsgi+flask搭建後怎麼訪問.py文件
一、介紹
最近開發要用一個測試環境,是這樣的Nginx+uwsgi+flask 的一個結構。下面是一些記錄,在Centos 系統上使用Flask 架構部署一個簡單的python應用。然後使用Nginx作為前端反向代理,設置uWSGI應用網關處理web應用程序。
二、條件
1) 環境要求
Server OS:最小化安裝 Centos 6.8
Nginx :反向代理
Python2.6~2.7:開發語言
Flask/uWSGI:框架
Pip:python包管理工具
iptables&selinux:開放用到的埠,關閉selinux。
以上內容代理了uwsgi的埠,客戶端通過訪問nginx的80埠,然後nginx在將請求轉發到後台flask應用的8000埠上。
啟動nginx
在瀏覽器內測試訪問一下nginx:http://192.168.30.58
每個人都應是守望者,守望我們的心智,我們的理想,以防它在生活中不知不覺地墜落、被操控和被自己遺忘。。。
B. Python3+Gunicorn+Nginx 部署Flask項目
前言: 之前在本地測試項目的過程中一直使用python app.py的方式來啟動項目,這種方式在本地測試的話還可以,但是在生產環境的話就不能使用這種方式。
原因:
1.可能會出現無響應情況
2.無法支持高並發和多線程
3.無法合理利用伺服器資源
生產環境: Centos7、Python3
需要模塊: Gunicon、Nginx、Flask
一、安裝Gunicorn
Gunicorn是一個高效的Web伺服器,地位相當於Java中的Tomcat。簡單來說gunicorn封裝了HTTP的底層實現,我們通過gunicorn啟動服務,用戶請求與服務相應都經過gunicorn傳輸。
1.創建虛擬環境
項目上傳到伺服器指定目錄下,然後創建python3的虛擬環境,激活並進去虛擬環境,在虛擬環境下可以看到命令前有虛擬環境的名稱。(之前在使用Gunicorn模塊的過程中,沒有使用虛擬環境,導致我啟動項目有一直提示沒有找到gunicorn這個命令,可能是我在使用python全局環境的過程中,有某些模塊影響到這個gunicorn模塊,後面在使用虛擬環境就沒有出現這個問題。)
2.安裝項目所需的模塊
3.安裝gunicorn
二、項目配置啟動
1.創建一個簡易的web程序
2.啟動服務
4--啟動4個進程來分配服務
0.0.0.0--允許任意主機訪問
5000--啟動埠(與nginx轉發的埠一致)
app:目標文件
app:指定模塊
補充部分: gunicorn和nginx關系
gunicorn 可以單獨提供服務,但生產環境一般不這樣做。首先靜態資源(jscssimg)會佔用不少的請求資源,而對於 gunicorn 來講它本身更應該關注實際業務的請求與處理而不應該把資源浪費在靜態資源請求上;此外,單獨運行 gunicorn 是沒有辦法起多個進程多個埠來負載均衡的。
nginx 的作用就是彌補以上問題,首先作為前端伺服器它可以處理一切靜態文件請求,此時 gunicorn 作為後端伺服器,nginx 將會把動態請求轉發給後端伺服器,因此我們可以起多個 gunicorn 進程,然後讓 nginx 作均衡負載轉發請求給多個 gunicorn 進程從而提升伺服器處理效率與處理能力。最後,nginx 還可以配置很多安全相關、認證相關等很多處理,可以讓你的網站更專注業務的編寫,把一些轉發規則等其它業務無關的事情交給 nginx 做。
參考鏈接: https://www.jianshu.com/p/da28ec28ef4b