1. 程式人生 > >【寶塔面板】centOS部署前後端分離所有遇到的坑,Django

【寶塔面板】centOS部署前後端分離所有遇到的坑,Django

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