• 【云原生 | Docker】腾讯云部署Django项目 (服务器选型、git配置、docker三分钟部署)


    在这里插入图片描述

    🤵‍♂️ 个人主页: @计算机魔术师
    👨‍💻 作者简介:CSDN内容合伙人,全栈领域优质创作者。

    该文章收录专栏
    —【Django | 项目开发】从入门到上线 专栏—

    书接上文我们使用docker部署好了 nginx gunicorn mysql django,本文将项目部署到腾讯云服务器中进行线上测试
    【云原生 | Docker】部署 Django & Nginx & Gunicorn
    【云原生| Docker】 部署 Django & mysql 项目

    一、腾讯服务器部署

    1.1 服务器选择

    1. 服务器购买

    部署的第一步是购买云服务器,博主在第一次购买时很纠结与购买那个服务器(心疼钱😑),在网上查阅多方资料,推荐 校园云服务器,对于学生优惠好一点 一年60(点击链接跳转查看

    文章同款服务器 是, 校园云服务器 轻量应用服务器2核2G对于学习和部署小型应用已经足够使用了。

    在准备好服务器后,我们可以下载xshell,xftp连接工具 xshell官网地址(需要获取服务器公网ip连接和设置实例密码),连接到云服务器实例。

    注意:需要使用root管理员登录,不然没有权限进行操作

    1.2 启动项目

    1.2.1拉取代码

    有两种办法获取我们的代码

    1. 我们在github或者gitee上拉取我们的项目
      在这里插入图片描述

    a. 首先安装git

    sudo yum install -y git
    
    • 1

    他会自动安装所有的依赖,查看版本
    在这里插入图片描述
    b. 配置
    .配置一个用于提交代码的用户,输入指令:

    git config --global user.name "Your Name"
    
    • 1

    同时配置一个用户的邮箱,输入命令:

    git config --global user.email "email@example.com"
    
    • 1

    生成公钥和私钥(用于github)

    ssh-keygen -t rsa -C  "Your@email.com" //执行后一直回车即可
    
    • 1

    获取ssh key公钥内容(id_rsa.pub)

    cd ~/.ssh
    cat id_rsa.pub
    
    • 1
    • 2

    复制全部内容
    在这里插入图片描述

    第四步:Github账号上添加公钥
    进入Settings设置
    添加ssh key,把刚才复制的内容粘贴上去保存即可
    在这里插入图片描述
    在这里插入图片描述

    第五步:验证是否设置成功

    ssh -T git@github.com  // 而后填写 yes
    
    • 1

    显示如下信息表明设置成功
    在这里插入图片描述
    在clone仓库的时候使用ssh便不需要再次账号验证了
    在这里插入图片描述
    d. 拉取代码

    cd /   
    mkdir code
    cd code 
    git init 
    git pull git@github.com:Yourname/仓库名称.git 
    
    • 1
    • 2
    • 3
    • 4
    • 5

    拉取成功
    在这里插入图片描述

    1. 我们使用传输工具将文件传输过去(不推荐,一般部署项目都是拉取代码托管平台的)

    我们在选择镜像时已经在购买腾讯云服务器选择了docker,所以这里不用再安装
    在这里插入图片描述

    1.2.2 docker启动

    如果是其他云服务器,或者已有服务器但没有下载安装docker, 以下是我觉得挺不错的文章
    参考一:https://cloud.tencent.com/developer/article/1701451
    参考二:https://blog.csdn.net/JunyouYH/article/details/120584027

    docker命令启动镜像

    docker-compose up  --bulid
    
    • 1

    这一步的是 docker-compose buile --no-caheddocker-compose up -d的结合

    1. 错误一
      构建镜像,运行容器,但是对于mysql又可能会报如下错误
      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9EytzorG-1660916791410)(C:\Users\86181\AppData\Roaming\Typora\typora-user-images\image-20220819195804360.png)]

    解决过程:

    1. 根据报错一Different lower_case_table_names settings for server ('1') and data dictionary ('2').,猜测原因是docker-compose upmysql8数据库的问题,(linux自身启动默认开启 lower_case_table=0, 且无法启动镜像)
      方案cp配置文件下来,修改结束cp回去,修改lower_case_table=1,仍然报错,变化了数字,0 - > 1, 尝试设置为2, 报错回原来的信息,

    ​ 阿里云解答 https://help.aliyun.com/document_detail/147946.html

    1. 根据报错二:Data Dictionary initialization failed.
      a. 删除/var/lib/mysql文件,失败
      b. 注释掉#datadir=xxx , 失败
      c. 数据加载目录 datadir 中在上传文件时docker对于挂载在var/lib/mysql已存在文件,删除整个文件,重新构造镜像, 解决! 🎉🎉🎉

    ​ 参考:https://blog.csdn.net/liurui50/article/details/105478422
    参考:https://blog.csdn.net/qq_33801641/article/details/120756083

    1. 如果都解决不了最后思路:`mysql``,重新构造
    1. 错误二
      编码错误如下,存储内容包括特殊字符无法使用utf8存贮
      在这里插入图片描述
      修改默认编码
      参考文章一: https://blog.csdn.net/z_jianghai/article/details/119209544
      参考文章二https://www.codenong.com/cs105377341/
      参考文章三: https://blog.csdn.net/dy_miao/article/details/91461581

    建议直接挂载配置文件吧,docker容器默认给mysql编码就是latin1,这是不支持中文的
    挂载目标文件 :/etc/mysql/conf.d/mysql.cnf

    [client]
    default-character-set=utf8mb4
    
    [mysql]
    default-character-set=utf8mb4
    
    [mysqld]
    init_connect='SET collation_connection = utf8mb4_unicode_ci'
    init_connect='SET NAMES utf8mb4'
    character-set-server=utf8mb4
    collation-server=utf8mb4_unicode_ci
    skip-character-set-client-handshake
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    再在dockerfile.yml 中对 mysql容器加上命令 (这个命令只能让server 和 database 参数变为 utf8mb4 其他变量需要修改配置文件)

    command: "mysqld --user=root --explicit_defaults_for_timestamp --character-set-server=utf8mb4 --collation-server=utf8mb4_general_ci"
    
    
    • 1
    • 2

    假如我们已经生成了数据库中的表怎么办呢,此时修改数据库配置是无效的,因为这些表已经生成,配置是对以后生成的表设置,现在的表如何修改呢?最简单粗暴的方法就是删掉数据库,重新迁移便可(此时是测试使用,开发Django框架,弄了我一个下午🤷‍♀️)

    1.2、访问项目

    公网ip访问部署在云服务器的web项目,配置安全组

    配置安全组参考文章

    访问。登录后台后会出现

    在这里插入图片描述

    需要在settiing文件中添加公网ip
    在这里插入图片描述
    进入容器

    docker exec -it [container_id] /bin/bash
    
    python manage.py createsuperuser # 创建超级用户用于登录
    
    • 1
    • 2
    • 3

    在这里插入图片描述

    部署反思:

    1. 部署项目应该保持干净的目录

    2. 运行测试所生成的数据或文件不要带入部署文件中

    3. 测试代码与部署代码部分在上传也应该修改好

       		        🤞到这里,如果还有什么疑问🤞
       	🎩欢迎私信博主问题哦,博主会尽自己能力为你解答疑惑的!🎩
       		🥳如果对你有帮助,你的赞是对博主最大的支持!!🥳
      
      • 1
      • 2
      • 3
  • 相关阅读:
    树莓派在Raspbian系统(Bookworm)中无法获取RJ45网口eth0或end0的IP地址(没有IPv4的地址无法操作)
    分组聚合不再难:Pandas groupby使用指南
    初识进程以及父子进程
    Visual Studio 必备插件集合:AI 助力开发
    Docker从入门到进阶之进阶操作(6) —— 【在docker上运行gitlab】
    用关键词搜索商品拼多多数据接口
    GcExcel 6.2.3 for JAVA Crack GrapeCity Documents Excel
    Acwing 1927 自动补全(知识点:hash,二分,排序)
    CSS中常用属性
    ssm心理测验系统的设计与实现毕业设计-附源码211710
  • 原文地址:https://blog.csdn.net/weixin_66526635/article/details/126347191