Django项目云部署
DJango项目部署
网站备案
在国内,互联网必须由开发者或者拥有者进行实名备案:
- 进入某云网站(腾讯云,阿里云,华为云)进行备案
- 网站备案需要有合法的公网服务器,并且服务器可用时长超过3个月
域名备案
目的是减少IP重复和记忆对用户带来的困难
- 需要有网站备案
- 网站备案之后就会得到备案号(这是必须的)
- 购买云服务器
- 勾选分配免费公网IP
- 服务器就会被分配一个公网IP和内网IP
项目打包
activate 虚拟环境名
pip freeze > requirement.txt
服务器环境部署
python3环境部署
# CentOS 系统
# 安装系统依赖
yum install zlib-devel bzip2-devel ncurses-devel sqlite-devel readline-devel tk-devel openssl-devel gcc* make libffi-devel -y
# 安装python3
# 下载(版本自己选择)
wget https://www.python.org/ftp/python/3.7.2/Python-3.7.2.tgz
# 或者使用xshell进行ftp
tar -zxvf python-3.7.2.tgz
# 配置安装
./configure prefix=/usr/local/python3 # 配置安装路径
# 安装
make && make install
# 创建链接
ln -s /usr/local/python3/bin/python3 /usr/bin/python3
ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3
安装mariadb
mariadb就是开源不收费的mysql
# 安装
yum install mariadb mariadb-server.x86_64 mariadb-devel -y
# 启动mariadb服务
systemctl start mariadb
# 登陆
mysql
默认是开发模式,不需要密码就能进入数据库,需要命令进入生产模式
mysql_secure_installation
# 1.回车
# 2.输入y,设置root密码
# 3.输入y,删除匿名用户
# 4.输入y,禁止远程登陆
# 5.输入y,移除test数据库,因为是在生产环境
# 6.输入y,刷新授权表
mysql -uroot -p**** # 输入用户名和密码登陆
# 创建数据库
>create database 库名 charset=utf8
项目模块安装
安装python包
pip3 install -r requirement.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
关闭debug,开启访问接口
DEBUG = False
ALLOWED_HOST = [*]
uwsgi服务安装
pip3 install uwsgi -i https://pypi.tuna.tsinghua.edu.cn/simple
ln -s /usr/local/python3/bin/uwsgi /usr/bin/uwsgi
nginx服务安装
# 解压
tar -zxvf nginx-1.12.2.tar
# 配置安装
./configure \
# 编译安装
make && make install
# 创建链接
ln -s /usr/local/nginx/sbin/nginx /usr/bin/nginx
# 启动
nginx
项目配置
编写uwsgi.ini
makdir /opt/scripts
touch uwsgi.ini
vim uwsgi.ini
-----------------------------------
# 理解为主
[uwsgi]
chdir=项目路径
module=项目名.wsgi:application
socket=/opt/scripts/uwsgi.sock
workers=5 # 代表进程
pidfile=/opt/scripts/uwsgi.pid
http=内网IP:端口
static-map=/static=/opt/项目路径/static # 让nginx去找静态文件
uid=root
gid=root
master=true
vacumm=true
enable-thread=true
thunder-lock=true
harakiri=30 # 设置请求中断时间
post-buffering=4096 # 缓存大小
daemonize=/opt/项目路径/uwsgi.log # uwsgi日志
配置nginx.conf
# 先备份
cp nginx.conf nginx.conf.bak
# /usr/local/nginx/conf/nginx.conf
http{
... # 保持原来的不动
access_log logs/access.log main; # nginx访问日志
... # 保持原来的不动
gzip on;
gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript; # 支持压缩的格式
server{
listen 80;
server_name 服务名;
charset utf-8;
location /{
include uwsgi_params;
uwsgi_connect_timeout 30; # 连接uwsgi 30秒后超时
uwsgi_pass unix:/opt/sricpts/uwsgi.sock; # uwsgi生成的sock文件
}
error_page 500 502 503 504 /50x.html;
location = /static/{ # 静态文件
alias 项目路径/static;
index index.htm index.html;
}
}
}
启动服务
uwsgi --init uwsgi.ini
# 若启动异常,查看uwsgi.log文件
nginx
# 浏览器访问公网IP:80
# 杀进程
# pkill -9 uwsgi
# pkill -9 nginx
pymysql模块配置
# 项目路径/__init__.py
# 用pymysql替换mysqldb
import pymysql
pymysql.install_as_MySQLsb()
# 迁移
python3 manage.py makemigrations
python3 manage.py migrate
域名解析
在云平台中找到自己的域名,点击域名解析与对公网IP进行绑定

浙公网安备 33010602011771号