部署Apache服務器
1、apache服務的安裝這里不做贅述,因為網上一大堆,
鏈接:https://blog.csdn.net/qq_24394093/article/details/90550134
安裝Python環境
鏈接:https://blog.csdn.net/L_15156024189/article/details/84831045
為Apache配置Python環境
1、打開apache安裝目錄下apache/conf/http.conf組態檔
我們需要添加的配置專案如下(本文以windows為例子,如果是linux環境,更換路徑即可):
Listen 8000 # 配置程式埠
LoadFile "c:/users/29582/appdata/local/programs/python/python35/python35.dll" # 配置python庫加載 LoadModule wsgi_module "c:/users/29582/appdata/local/programs/python/python35/lib/site-packages/mod_wsgi/server/mod_wsgi.cp35-win_amd64.pyd" # 配置python環境及靜態可執行pyd檔案 WSGIPythonHome "c:/users/29582/appdata/local/programs/python/python35" # 配置python.exe路徑 WSGIScriptAlias / C:/Users/29582/Desktop/IVSWebServer/WebADM/WebADM/wsgi.py # 配置啟動檔案 WSGIPythonPath C:/Users/29582/Desktop/IVSWebServer/WebADM #配置專案路徑 <Directory C:/Users/29582/Desktop/IVSWebServer/WebADM/WebADM> # 授權 <Files wsgi.py> Require all granted </Files> </Directory>
至此,如果你僅僅是使用python來部署你的django程式的話,就已經可以啟動程式,重啟apache,環境即部署成功,不需要關注下一步,
websocket處理
如果你的代碼中使用到了websocket,那上述步驟無法讓你的程式成功運行
你的程式可能報以下錯誤:liveVideo.vue?cd97:480 WebSocket connection to 'ws://192.168.222.146:8000/analysis/longconnect/' failed: Error during WebSocket handshake: Unexpected response code: 400
那就表示你的websocket在apache無法正常運行,
1、首先我們先了解下程式原本的運行方式:
如果開發環境是在本地,采用python manage.py runserver 127.0.0.1:8000來運行程式的話,前端發送的websocket請求可以直接發送到127.0.0.1:8000這臺服務器程式上,
但是如果你使用apache服務器,apache會過濾掉websocket請求,所以才會報錯,
apache支持代理,可通過代理將所有的websocket請求轉發到另外一臺專門處理websocket的服務器上處理
原先請求流程圖如下:

例外情況流程同意圖:

解決方案流程圖:

圖中的django程式有兩個,雖然名字相同,程式相同,但是跑的是兩個服務(一個是apache啟動的,一個是命令列啟動的),
根據上述流程圖我們可以知道apache無法將ws直接轉發給dajngo程式,可以這么理解如果apache代碼的django程式是127.0.0.1:8000埠的服務,那么websocket無法通過apache轉發到8000埠,那是不是我們就沒有解決方案了呢??
答案是肯定有解決方案的,通過查詢apache官方的檔案:http://httpd.apache.org/docs/2.0/mod/mod_proxy.html#page-header
我們看到,apache是支持代理websocket
具體配置方式如下:
1、打開apache安裝目錄下apache/conf/http.conf組態檔使能mod_proxy.so、mod_proxy_wstunnel.so(將#號去掉即為使能),用來處理ws和wss服務

2、打開apache安裝目錄下apache/conf/http.conf組態檔在最下方配置

如果此解決方案對您有幫助,記得給我點贊哈,如有疑問歡迎聯系qq:295823911一起探討,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/45152.html
標籤:Python
