• 1.django部署(案例)


    安装步骤

    通常,我们的web服务是部署在云服务厂商的云主机上,比如阿里云的ECS云主机,或者企业的IT机房。

    这里大家练习的时候,可以先用一台安装了Linux的虚拟机。

    安装好后, 为了方便后续apt安装其它软件时,能从国内的apt源高速下载,需要设置一下apt源,具体操作参考我们这篇教程有详细讲解

    做好产品发布包

    以后当你负责产品发布,你需要准备发布的产品包。

    产品的发布包,是不是只是需要把你的代码 用zip打个包?

    不是那样简单的。

    产品往往会 涉及到好多子系统,前端通常包括 web前端、app前端, 后端 包括 业务处理系统、数据库系统、消息队列、异步任务系统、缓存系统等等。

    为了保证这些子系统能在生产环境 友好配合 , 需要仔细的规划、配置、产生发布包。

    我们先从基本的做起,我们现在的系统 包括 web前端系统(包括web前端的HTML、css、图片、js业务代码、js库等文件)、后端业务处理系统、数据库系统。

    需要做到产品发布包里面的 包括 web前端系统 和 业务处理系统 的代码。

    不同的运营架构,部署的方式不同,需要构建发布包的方式也不同。

    这里,根据我们的架构图,可以把 前端系统代码 做在一个发布包中, 后端系统做在另一个发布包中。

    我们完全可以 把 前后端系统 分别部署到 两台 Linux主机上。当有请求需要Django后端业务系统处理的时候,转发给Django所在的主机即可。 如果请求只是获取一些静态资源,比如HTML、图片等,在前端主机处理完即可。 这样 做到 部署的前后端分离。

    目前我们先按照简单的来, 根据我们的架构图, 都部署在同一台机器上。

    首先,我们需要为当前版本的发布,准备 web前端发布包,和web后端发布包。

    现在我们假定发布的 版本号为 1.5

    你们作为后端的开发人员,当然由你提供,后端的发布包。

    基于Django开发的后端系统,要发布正式版本:

    • 首先拷贝你的开发项目目录到一个新的目录中,可以改名为 bysms_back_v1.5

    修改其中 bysms/settings.py ,把下面的 配置项DEBUG值为 False

    1. # SECURITY WARNING: don't run with debug turned on in production!
    2. DEBUG = True
    • 把数据库改为生产环境的数据库

    前面我们为了开发简单,一直用的SQLite数据库,现在需要改为生产环境的MySQL数据库。

    按照如下示例,修改 bysms/settings.py

    1. #DATABASES = {
    2. # 'default': {
    3. # 'ENGINE': 'django.db.backends.sqlite3',
    4. # 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    5. # }
    6. #}
    7. DATABASES = {
    8. 'default': {
    9. 'ENGINE': 'django.db.backends.mysql',
    10. 'NAME': 'bysms', # 数据库名
    11. 'USER': 'byhy', # 数据库 用户名
    12. 'PASSWORD': 'Mima123$',# 数据库 用户密码
    13. 'HOST': '127.0.0.1', # 数据库服务主机名
    14. 'PORT': '3306', # 数据库服务端口
    15. 'CONN_MAX_AGE': 0
    16. }
    17. }

    当然,上面配置的 MySQL连接的 用户名、密码、数据库名、数据库服务主机名、端口 都要和你的环境匹配。

    • 添加 Linux 启动shell脚本

    生产环境,我们使用 Gunicorn 作为 Django的WSGI前端,首先我们需要创建一个 Gunicorn启动配置文件 ./bysms/gunicorn_conf.py(和setting.py一个目录) ,内容如下

    1. # gunicorn/django 服务监听地址、端口
    2. bind = '127.0.0.1:8000'
    3. # gunicorn worker 进程个数,建议为: CPU核心个数 * 2 + 1
    4. workers = 3
    5. # gunicorn worker 类型, 使用异步的event类型IO效率比较高
    6. worker_class = "gevent"
    7. # 日志文件路径
    8. errorlog = "/home/byhy/gunicorn.log"
    9. loglevel = "info"
    10. import sys,os
    11. cwd = os.getcwd()
    12. sys.path.append(cwd)

    要保证我们的Django后端服务在linux上一个命令就能启动,需要开发一个 Linux 启动shell脚本 ./run.sh 。(在setting.py上级目录创建)

    可以参考下面的 shell脚本内容

    1. #!/bin/bash
    2. DIR="$( cd "$( dirname "$0" )" && pwd )"
    3. echo $DIR
    4. cd $DIR
    5. # ulimit -n 50000
    6. nohup gunicorn --config=bysms/gunicorn_conf.py bysms.wsgi &> /dev/null &
    • 我们可以在该文件的末尾,加上版本号
    VERSION = '1.5'
    

    然后,删除 所有app 的 migrations 目录。

    最好把整个Django后端的代码打包,包名为 bysms_back_v1.5.zip

  • 相关阅读:
    【C++进阶(八)】C++继承深度剖析
    国庆周《Linux学习第二课》
    【注解】注解解析与应用场景
    FreeRTOS个人笔记-支持时间片
    测试必会的如何利用fiddler连接手机抓包APP
    c++中的特殊类设计
    算法通关村第18关【青铜】| 回溯
    【Docker】软链接安装Docker到非系统盘(如D盘),并更改镜像位置
    stdmap和stdmultimap的使用总结
    csdn关注打开文章,自动取关脚本(设置为仅粉丝查看的文章)
  • 原文地址:https://blog.csdn.net/qq_39502419/article/details/126911469