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

一、腾讯服务器部署

1.1 服务器选择

  1. 服务器购买

文章同款服务器 是, 校园云服务器 轻量应用服务器2核2G对于学习和部署小型应用已经足够使用了。用轻量云就是看上这个带宽了,本身业务的流量不会很多,但是有突发带宽的需求,普通云服务器的固定带宽费用死贵又用不上,只能说这个高带宽的流量包用的很舒服,还有各种镜像,直接部署也很方便不过需要注意的是,每个用户的使用感受可能因个人需求和具体应用场景而异。大家可以按照自己的需求来选择啦

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

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

1.2 启动项目

1.2.1拉取代码

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

  1. 我们在github或者gitee上拉取我们的项目

a. 首先安装git

bash 复制代码
sudo yum install -y git

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

bash 复制代码
git config --global user.name "Your Name"

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

bash 复制代码
git config --global user.email "email@example.com"

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

bash 复制代码
ssh-keygen -t rsa -C  "Your@email.com" //执行后一直回车即可

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

bash 复制代码
cd ~/.ssh
cat id_rsa.pub

复制全部内容

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

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

bash 复制代码
ssh -T git@github.com  // 而后填写 yes

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

bash 复制代码
cd /   
mkdir code
cd code 
git init 
git pull git@github.com:Yourname/仓库名称.git 

拉取成功

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

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

1.2.2 docker启动

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

docker命令启动镜像

bash 复制代码
docker-compose up  --bulid

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

  1. 错误一 构建镜像,运行容器,但是对于mysql又可能会报如下错误

解决过程:

  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

sh 复制代码
[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

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

bash 复制代码
command: "mysqld --user=root --explicit_defaults_for_timestamp --character-set-server=utf8mb4 --collation-server=utf8mb4_general_ci"

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

1.2、访问项目

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

配置安全组参考文章

访问。登录后台后会出现

需要在settiing文件中添加公网ip 进入容器

bash 复制代码
docker exec -it [container_id] /bin/bash

python manage.py createsuperuser # 创建超级用户用于登录

部署反思:

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

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

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

    复制代码
     		        🤞到这里,如果还有什么疑问🤞
     	🎩欢迎私信博主问题哦,博主会尽自己能力为你解答疑惑的!🎩
     		🥳如果对你有帮助,你的赞是对博主最大的支持!!🥳
相关推荐
半路程序员1 分钟前
Go内存泄漏排查pprof和trace使用
开发语言·后端·golang
WongLeer2 分钟前
Go + GORM 多级分类实现方案对比:内存建树、循环查询与 Preload
开发语言·后端·mysql·golang·gorm
Victor3569 分钟前
Hibernate(34)Hibernate的别名(Alias)是什么?
后端
superman超哥12 分钟前
Rust HashMap的哈希算法与冲突解决:高性能关联容器的内部机制
开发语言·后端·rust·哈希算法·编程语言·冲突解决·rust hashmap
Victor35615 分钟前
Hibernate(33) Hibernate的投影(Projections)是什么?
后端
a程序小傲16 分钟前
【Node】单线程的Node.js为什么可以实现多线程?
java·数据库·后端·面试·node.js
奋进的芋圆9 小时前
DataSyncManager 详解与 Spring Boot 迁移指南
java·spring boot·后端
计算机程序设计小李同学10 小时前
个人数据管理系统
java·vue.js·spring boot·后端·web安全
Echo娴10 小时前
Spring的开发步骤
java·后端·spring
追逐时光者10 小时前
TIOBE 公布 C# 是 2025 年度编程语言
后端·.net