【寶塔面板】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'
# 解決 因為你需要進入到虛擬環境中去執行: PS:manage.py文件找不到的話就要指定到絕對路徑
  1:source /www/wwwroot/項目名/虛擬環境名vevn(就是你存放依賴庫的文件夾)/bin/activate # 進入虛擬環境
  2:python3 manage.py makemigrations # 遷移數據庫
3: python3 manage.py migrate # 生成遷移文件 ‘


# 問題1-1:Nginx使用靜態文件不渲染?/只渲染media 不渲染static? (這個問題屬於前端不分離,)更新:這里只是用於收集,使用NGNIX后就不用管這里了
# 解決:
首先你需要先收集下靜態文件:
  1:source /www/wwwroot/項目名/虛擬環境名vevn(就是你存放依賴庫的文件夾)/bin/activate # 進入虛擬環境
  2: python /www/wwwroot/項目名/manage.py collectstatic # 收集靜態文件 更新:這里也可以cd 到項目文件夾 直接Python manage.py co... 收集 收集完后復制靜態文件到你nginx所配置的/static/下即可
  nginx反向代理添加:

              location /static/ {
                 alias 你靜態文件存放的路徑;
              }


              location /media/ {
                 alias /www/wwwroot/daily_fresh-master/media;  
              }





# 問題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:配置問題

# uwsgi配置問題?耗時幾天決定改用gunicorn啟動后端服務器
# 解決(后端啟動):
  1:在安裝完虛環境后進入虛擬環境安裝gunicorn: source命令進入虛擬環境后安裝:pip install gunicorn 或者再項目管理器里面直接安裝模塊
  2:進入項目管理器啟動即可
 




# 問題:前端的靜態文件與后端的靜態文件以及media用戶的靜態文件如何處理
# 解決:
1:將前端編譯好的文件夾dist復制到django的/static下,在nginx里面制定好前端靜態文件夾的訪問路徑:

 

 

 

 

 

 

 

 

 
         

 

 
         

 

 
         

 

 

# 問題:反向代理需要設置django路由的訪問路徑:

# 解決:

    假設我的路由接口都是以api開頭:url(r"api/order/cancel$",order_cancel.OrderCancel.as_view()),

 

      寶塔面板-網站-設置-反向代理:

      

 

 

 

 

 

 

 

 

3:大概流程

1:上傳前端編譯文件與后端文件夾,注意將前端編譯文件夾放到django的/static下(這是為了方便管理前端跟后端的靜態文件不沖突相同名)
2:創建django項目后,項目管理器安裝gunicorn依賴包,運行起來,如果報錯請看報錯日志
4:創建並添加站點,打開設置-配置文件:修改root 下的靜態文件夾路徑 添加靜態文件路徑/static/ 與/media/配置 這是用於瀏覽器訪問的時候返回給靜態文件
5:4完成后,打開反向代理,添加后端訪問路徑前綴(這里需要看你的路由請求前綴標志)我的是/api/路徑 修改后就完成了整個部署
 PS:部署新手最大的坑:后端的路徑必須要有一個統一的標志,不然會跟前端的路由起沖突,這樣子nginx就不知道去找誰拿數據或者網頁了

 

 

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM