1. 程式人生 > 其它 >ubuntu-django+vue部署

ubuntu-django+vue部署

資源準備

  • vue專案資源打包dist(js、css、html、img)
  • django專案依賴檔案,pipreqs(通常專案開發使用獨立的虛擬環境,避免環境互相汙染)(可能有些包會收集不到,還有一些像uwsgi包本地開發用不到,需要手動新增)
  • django收集靜態資源(如:swagger、admin的靜態資源)
  • uwsgi.ini 配置檔案
  • nginx 配置檔案

部署準備

  • 本地合併程式碼並提交到遠端倉庫主分支
  • 環境配置工具:virtualenv,virtualenvwrapper,python3.6-dev
  • 配套服務:nginx、mysql、redis

部署

  • clone專案原始碼到伺服器
  • 執行資料庫遷移
  • nginx配置檔案替換,客戶端訪問nginx伺服器
  • 以守護程序啟動uwsgi服務,uwsgi -d --ini uwsgi.ini

其它亂七八糟的坑

  • 使用者
    • root使用者
    • 普通使用者
    • sudo命令,sudo以root使用者執行命令
      • pip3 --version => 20.0.0
      • sudo pip3 --version => 21.0.0
      • 版本是不同的
  • python版本
    • python2.7
    • python3
    • python3.6
    • python3.8
  • pip版本
  • uwsgi版本

使用虛擬環境

  • linux python虛擬環境 工具
  • 虛擬環境建立,啟用,退出,刪除
  • 虛擬環境python版本指定,可開發環境的版本要一致
  • 虛擬環境pip安裝uswgi(python3.6安裝uwsgi報錯一長串gcc,解決方法apt-get install python3.6-dev,之前用的apt安裝後還是報錯,用apt-get安裝後就好了???神馬情況?)

python環境配置:安裝和開發環境一致的python版本,建立虛擬環境,指定python版本,pip安裝依賴包,pip安裝uwsgi等其它依賴包
伺服器環境配置:nginx代理vue打包的靜態檔案資源,uwsgi.ini配置檔案,nginx配置代理uwsgi服務,django collectionstatic收集靜態資源,nginx代理這些靜態資源

nginx配置檔案

# 後端訪問配置
#upstream wtest {
#    server 127.0.0.1:8000;
#}

# 後端服務配置
server {
    listen 8001;  # 監聽埠
    server_name wtest-server;  # 服務名稱
    location /api {  # rest介面服務
	include uwsgi_params;  
	uwsgi_pass 127.0.0.1:8000;
    }
    location /static {  # 靜態資源服務
	alias /opt/wtest/wtest-server/static;
    }
}


# 前端服務配置
server {
    listen 80;  # 監聽埠
    server_name www.wtest.com;  # 設定訪問網站域名或者ip

    location / {  # 路由路徑
        root /opt/wtest/wtest-client/dist;  # vue打包的靜態資源包
        index index.html;   # index頁面
	try_files $uri $uri /index.html;  # 這個不知道是什麼,好像是抓不到的時候有用
    }

}

uwsgi配置檔案

#使用nginx連線時使用,django程式所在伺服器地址
socket=127.0.0.1:8000
#直接做web伺服器使用,django程式所在伺服器地址
#http=0.0.0.0:8080
#專案目錄
chdir=/opt/wtest/wtest-server
module=wtest:wsgi.py
#專案中wsgi.py檔案的目錄,相對於專案目錄
wsgi-file=wtest/wsgi.py
# 程序數
processes=4
# 執行緒數
threads=2
# uwsgi伺服器的角色
master=true
# 存放程序編號的檔案
pidfile=uwsgi.pid
# 日誌檔案,因為uwsgi可以脫離終端在後臺執行,日誌看不見。我們以前的runserver是依賴終端的
#daemonize=/var/log/uwsgi.log
# 指定依賴的虛擬環境
#pythonpath=/home/zyy/.virtualenvs/wtest-venv/lib/python3.6/site-packages
virtualenv=/home/zyy/.virtualenvs/wtest-venv
# clear environment on exit #退出時清除環境
vacuum = true