【寶塔面板】centOS部署前後端分離所有遇到的坑,Django
阿新 • • 發佈:2020-10-02
1:剛剛買完伺服器,在寶塔面板安裝完一切工具,Django順利執行後(不能執行一般是起了中文名)
# 問題:想遷移資料庫,結果發現-bash: python3: command not found
# 解決:系統版本的Python是3.7.8 解除安裝不了,所以你只需要安裝個3.7.2的版本即可,遷移命令後python的命令變為:/root/.pyenv/versions/3.7.2/bin/python -V
# 問題:命名安裝完依賴包為什麼輸入/root/.pyenv/versions/3.7.2/bin/python manage.py 報錯了:No module named 'django'
# 解決 因為你需要進入到虛擬環境中去執行:
1:source /www/wwwroot/專案名/虛擬環境名vevn(就是你存放依賴庫的資料夾)/bin/activate # 進入虛擬環境
2:python3 manage.py makemigrations # 遷移資料庫
3: python3 manage.py migrate # 生成遷移檔案 ‘
# 問題1-1:Nginx使用靜態檔案不渲染?/只渲染media 不渲染static? (這個問題屬於前端不分離)
# 解決:
首先你需要先收集下靜態檔案:
1:source /www/wwwroot/專案名/虛擬環境名vevn(就是你存放依賴庫的資料夾)/bin/activate # 進入虛擬環境
2: python /www/wwwroot/專案名/manage.py collectstatic # 收集靜態檔案
nginx反向代理新增 後面不加/:
location /static {
alias /static;
}
location /media {
alias /www/wwwroot/daily_fresh-master/media; # 這個需要自己測試下 沒用的話 就寫/static
}
# 問題1-2:admin使用靜態檔案?只用uwsgi返回靜態檔案即可:(這個問題屬於前後端不分離部署)
# 解決:
首先你需要先收集下靜態檔案:
1:source /www/wwwroot/專案名/虛擬環境名vevn(就是你存放依賴庫的資料夾)/bin/activate # 進入虛擬環境
2: python /www/wwwroot/專案名/manage.py collectstatic # 收集靜態檔案
我的伺服器是收集在根目錄下所以我的靜態檔案路徑是/static,uwsgi配置在最後配置:
static-map = /static=/static # 最後等號後面配置靜態檔案收集路徑,media需要後面測試,是否是寫media-map=/media=收集路徑或者專案的media路徑
# 致命問題:uwsgi配置了http = 0.0.0.0:8000埠為什麼瀏覽器訪問不到介面:
# 解決:
因為你需要開啟寶塔面板的安全模組:接著放行8000埠,這樣子就可以訪問到了,但是這是測試階段的,部署完uwsgix跟nginx後配合的埠,最好需要關閉其他放行埠
2:配置問題惹的禍(博主認為寶塔面板的啟動對於 python實在太不友好所以啟動還是用命令列比較好)
# uwsgi配置問題?耗時幾天決定改用gunicorn啟動後端伺服器
# 解決(後端啟動):
1:在安裝完虛環境後進入虛擬環境安裝gunicorn: source命令進入虛擬環境後安裝:pip install gunicorn
2:進入專案目錄進行開啟:
2-1:cd /www/wwwroot/PlayEarn/ # 進入專案目錄
2-2:gunicorn -w1 -t3 -b 127.0.0.1:8000 PlayEarn.wsgi -D # w-程序 t-執行緒 -D-後臺執行
# 問題:前端的靜態檔案與後端的靜態檔案以及media使用者的靜態檔案如何處理?
# 解決:
1:將前端編譯好的資料夾dist複製到django的/static下,
2:配置nginx檔案,新增靜態檔案路徑:
# 問題:反向代理需要設定django路由的訪問路徑:
# 解決:
假設我的路由介面都是以api開頭:url(r"api/order/cancel$",order_cancel.OrderCancel.as_view()),
寶塔面板-網站-設定-反向代理:
3:大概流程
1:上傳前端編譯檔案與後端資料夾,注意將前端編譯資料夾放到django的/static下
2:建立django專案,使用uwgis去配置虛擬環境會比較方便,建立完後點擊停止執行專案
3:接著進入終端,進入虛擬環境,安裝gunicorn依賴庫,接著使用啟動django 8000埠 ------ 2與3部署啟動完後端伺服器
4:配置nginx,建立並新增站點,開啟設定-配置檔案:修改root 下的靜態資料夾路徑 新增靜態檔案路徑/static/ 與/media/配置 這是用於瀏覽器訪問的時候返回給靜態檔案
5:4完成後,開啟反向代理,新增後端訪問路徑字首(這裡需要看你的路由請求字首標誌)我的是/api/路徑 修改後就完成了整個部署
PS:部署新手最大的坑:後端的路徑必須要有一個統一的標誌,不然會跟前端的路由起衝突,這樣子nginx就不知道去找誰拿資料或者網頁了
&n