web-django+vue部署
资源准备
- vue项目资源打包dist(js、css、html、img)
- django项目依赖文件,pipreqs(通常项目开发使用独立的虚拟环境,避免环境互相污染)(可能有些包会收集不到,还有一些像uwsgi包本地开发用不到,需要手动添加)
- django收集静态资源(如:swagger、admin的静态资源)
- uwsgi.ini 配置文件
- nginx 配置文件
部署准备
- 本地合并代码并提交到远程仓库主分支
- 环境配置工具安装:virtualenv,virtualenvwrapper,python3.6-dev,git
- 配套服务安装:nginx、mysql、redis
部署&检查
- clone项目源码到服务器
- 执行数据库迁移
- nginx配置文件替换,客户端访问nginx服务器
- 以守护进程启动uwsgi服务,uwsgi -d --ini uwsgi.ini
- 检查dist静态资源是否正常访问,检查django服务是否正常访问,检查django静态资源是否正常访问
- 检查日志是否正常记录
其它乱七八糟的坑
- 用户
- 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