ubuntu-django+vue部署
阿新 • • 發佈:2021-09-04
資源準備
- 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.0sudo 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