重點:500錯誤是服務器內部錯誤而返回的相應,一般來說能返回500,屬於服務端後臺應用錯誤,即flask應用錯誤
運行flask需要https server網關,之前已經說到python應用網關常規使用uwsgi,所以配置flask 項目的網關也是使用uwsgi
在服務器上,需要做以下幾步:
1、安裝uwsgi,pip install uwsgi安裝即可
2、安裝flask,本地開發的時候pycharm是安裝後才加載的flask,pycharm都提供好了,然而第一次部署到服務器上的時候,服務器是沒有flask的
所以服務器需要安裝flask,pip install flask即可,很多未知的請求500錯誤,這是排查的第一步
3、啓動flask應用方式:
假定我的flask py文件叫app.py
uwsgi --http :9090 --chdir=/data/uwsgi/ -w app:app 可以
uwsgi --http :9090 -w app:app 可以
uwsgi --socket :9090 -w app:app 可以
uwsgi -s /tmp/uwsgi.sock -w app:app 可以
uwsgi --http :9090 --chdir=/data/uwsgi/ --wsgi-file app.py 錯誤
uwsgi --socket :9090 --chdir=/data/uwsgi/ --wsgi-file app.py 錯誤
以上多種啓動方式,能夠正常啓動的例如前四種,而後面兩張會在請求的時候報錯500,分析啓動因子:
uwsgi + (啓動方式) + (端口)+|(工作目錄)...參數| + -w +項目名(去除py後綴):app
以上的啓動方式,括號裏面的都可以寫道配置文件中,最後直接指定配置文件啓動
啓動方式(必須要):
可以是http直接作爲web api請求,可以是socket作爲nginx後端api請求,可以是-s把請求類型定義爲根據系統socket走
端口(必須要):
用http方式,端口可以ip直接訪問,用socket方式,智能訪問nginx的端口,nginx會自動跳轉到uwsgi服務端口(前提是nginx配置好了)
工作目錄/虛擬空間等等:
可以配置可以不配置,大多數情況下不影響啓動,因爲我後期是用docker跑服務,也算是獨立隔離的,所以沒有配置這些
項目名:
比如我的是app.py文件,所以叫app,當你的文件時server.py時,項目名叫server,xxx.py時,項目名叫server,xxx
最後的app:
這個app代表的是py文件裏面的程序,名叫app,和if __name__ 那裏的app.run()的這個app是對應的,默認就是app,一般不需要改
注意:測試請求的時候返回500錯誤,基本上都是flask程序錯誤或者網關配置不對,和nginx沒有太多關係
而程序錯誤排查順序是:
1、uwsgi先打開前臺運行模式,觀察啓動日誌,確保不是uwsgi網關配置錯誤,如果uwsgi運行錯誤日誌會有輸出
2、查看uswgi是否有錯誤日誌,如果有,看是否是uswgi錯誤導致未運行項目
如果是項目錯誤:
2、python版本是否一致
3、程序依賴是否齊全,比如flask包
4、程序邏輯是否正確
5、最後找不到原因的時候,開啓debug和log輸出