【寶塔面板】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
                         } python






# 問題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實在太不友好因此啓動仍是用命令行比較好)nginx

# 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路由的訪問路徑:數據庫

# 解決:django

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

 

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

      

 

 

 

3:大概流程瀏覽器

1:上傳前端編譯文件與後端文件夾,注意將前端編譯文件夾放到django的/static下
2:建立django項目,使用uwgis去配置虛擬環境會比較方便,建立完後點擊中止運行項目
3:接着進入終端,進入虛擬環境,安裝gunicorn依賴庫,接着使用啓動django 8000端口 ------ 2與3部署啓動完後端服務器
4:配置nginx,建立並添加站點,打開設置-配置文件:修改root 下的靜態文件夾路徑 添加靜態文件路徑/static/ 與/media/配置 這是用於瀏覽器訪問的時候返回給靜態文件
5:4完成後,打開反向代理,添加後端訪問路徑前綴(這裏須要看你的路由請求前綴標誌)個人是/api/路徑 修改後就完成了整個部署

PS:部署新手最大的坑:後端的路徑必需要有一個統一的標誌,否則會跟前端的路由起衝突,這樣子nginx就不知道去找誰拿數據或者網頁了