万物不为我所有,但为我所用|

注入灵魂

园龄:3年7个月粉丝:3关注:2

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进行绑定

本文作者:注入灵魂

本文链接:https://www.cnblogs.com/totopian/p/16020694.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   注入灵魂  阅读(77)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起
  1. 1 尚好的青春 孙燕姿
尚好的青春 - 孙燕姿
00:00 / 00:00
An audio error has occurred.