近期使用Django框架开发的一个微信小程序后端上线,记录一下核心步骤。
服务环境
操作系统 | Ubuntu20 |
---|---|
硬件环境 | 阿里云ECS服务器 |
后端环境 | Django2.2 + MySQL8.0 |
代理服务 | Nginx1.17 |
其他准备 | 域名 + SSL证书 |
项目配置
- 关闭DEBUG模式
在 settings.py 中设置 DEBUG = False - 取消访问限制
在 settings.py 中设置 ALLOWED_HOSTS = [’*’] - 设置数据库
在 settings.py 中设置部署环境下的数据库密码等信息 - 收集静态资源
运行 python manage.py collectstatic 收集静态资源
代码推送
# 安装Git
sudo apt-get upgrade
sudo apt-get install git
# 生成SSH公钥添加到码云
git config --global user.name "xxx"
git config --global user.email "xxx@xx.com"
ssh-keygen -t rsa
# 远程拉取代码
cd /srv
git init
git remote add origin git@gitee.com: xxx/daswx.git
git pull origin master
安装依赖
# 安装python3环境
sudo apt-get install python3
sudo apt-get install python3-pip
# 安装各种依赖
pip3 install django==2.2.17
# 安装uwsgi
pip3 install uwsgi
配置MySQL
# 安装MySQL
sudo apt-get install mysql-server mysql-client
# 设置MySQL
# 设置密码
alter user 'root'@'localhost' identified with mysql_native_password by '初始密码';
flush privileges;
# 打开远程连接权限便于数据维护(需在安全组中打开3306端口,维护完需关闭端口)
grant all on 数据库名.* to ‘数据库账户名’@’%’ identified by ‘密码’ with grant option;
flush privileges;
MySQL缓存设置视服务器配置而定,数据维护可以通过SQLyog之类的软件远程连接进行,这两项就不多说了
安装Redis
sudo apt-get install redis-server
pip3 install redis
配置Nginx和SSL证书
# 安装Nginx
apt-get install nginx
# 启动Nginx服务
service nginx start
# 新建Nginx服务配置文件并保存
vim
server {
listen 443 ssl; # https默认443端口,安全组策略需打开
server_name www.xxx.com; # IP或域名,小程序使用域名
# 转发到项目服务
location / {
proxy_pass http://127.0.0.1:8080;
}
# 静态资源路由
location ^~ /static/ {
root /srv/daswx/STATICFILES/;
}
# ssl证书设置
# 证书文件保存到 /etc/nginx/cert目录
ssl_certificate cert/xxx.pem;
ssl_certificate_key cert/xxx.key;
# 其它ssl设置,可参考阿里云帮助
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
}
:wq /etc/nginx/conf.d/daswx.conf
起动服务
# 刷新Nginx配置
nginx -s reload
# uwsgi起动后台
setsid uwsgi --http :8080 --chdir /srv/daswx/ --module DASWXsvr.wsgi:application
最后别忘记用postman测一下接口以及检查安全组策略