Django项目云部署

DJango项目部署

网站备案

在国内,互联网必须由开发者或者拥有者进行实名备案:

  1. 进入某云网站(腾讯云,阿里云,华为云)进行备案
  2. 网站备案需要有合法的公网服务器,并且服务器可用时长超过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进行绑定

posted @ 2022-03-18 10:35  注入灵魂  阅读(91)  评论(0)    收藏  举报