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

🤵♂️ 个人主页: @计算机魔术师👨💻 作者简介:CSDN 内容合伙人,全栈领域优质创作者。
该文章收录专栏✨---【Django | 项目开发】从入门到上线 专栏---✨
书接上文我们使用 docker 部署好了 nginx gunicorn mysql django
,本文将项目部署到腾讯云服务器中进行线上测试【云原生 | Docker】部署 Django & Nginx & Gunicorn【云原生| Docker】 部署 Django & mysql 项目
@[toc]
一、腾讯服务器部署
1.1 服务器选择
购买服务器
部署的第一步是购买云服务器,博主在第一次购买时很纠结与购买那个服务器(心疼钱😑),在网上查阅多方资料,觉得腾讯云对于新用户和学生优惠还是比较卷的,相比阿里云和华为云还是要优惠一点。如果是新老用户的话推荐这款,对于新用户来说折扣还是很大的(第一次购买服务器优惠是很大的,所以一定要好好珍惜) 点击链接跳转查看

想必读者们大都是学生,那么就强烈建议购买 校园云服务器,对于学生优惠真的巨大(华为云与阿里云也有,但是腾讯云在这方面比较卷),一年的话才 60 元,配置好一点的话也贵不多。点击链接跳转查看

下文所部署使用的服务器便是校园云服务器的轻量应用服务器2核2G
, 对于学习和部署小型应用已经足够使用了。
点击购买
选择地域, 选择离你最近的一个地区就好了
选择镜像, 这里选择
centOS7.6 & Docker 20
镜像这里说一点腾讯云做的比较好的一点的地方,之前我也是买过阿里云的服务器,但是镜像的话并没有这么多的选型,要使用Docker
的话需要在服务器实例内另外安装Docker
在验证身份,人脸识别即可购买啦!

在购买好服务器后,我们可以下载xshell,xftp
连接工具 xshell官网地址(需要获取服务器公网 ip 连接和设置实例密码),连接到云服务器实例。也可以使用腾讯云控制台自带的webshell
点击登录连接服务器(网络卡的时候会挺卡的)

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


1.2 启动项目
1.2.1 拉取代码
有两种办法获取我们的代码
我们在
github
或者gitee
上拉取我们的项目
a. 首先安装git
他会自动安装所有的依赖,查看版本

b. 配置.配置一个用于提交代码的用户,输入指令:
同时配置一个用户的邮箱,输入命令:
生成公钥和私钥(用于 github)
获取 ssh key 公钥内容(id_rsa.pub)
复制全部内容

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


第五步:验证是否设置成功
显示如下信息表明设置成功

在 clone 仓库的时候使用 ssh 便不需要再次账号验证了

d. 拉取代码
拉取成功

我们使用传输工具将文件传输过去(不推荐,一般部署项目都是拉取代码托管平台的)
我们在选择镜像时已经在购买腾讯云服务器选择了 docker,所以这里不用再安装

1.2.2 docker 启动
如果是其他云服务器,或者已有服务器但没有下载安装 docker, 以下是我觉得挺不错的文章参考一:https://cloud.tencent.com/developer/article/1701451
参考二:https://blog.csdn.net/JunyouYH/article/details/120584027
docker 命令启动镜像
这一步的是 docker-compose buile --no-cahed
与 docker-compose up -d
的结合
构建镜像,运行容器,但是对于 mysql 又可能会报如下错误

解决过程:
根据报错一:
Different lower_case_table_names settings for server ('1') and data dictionary ('2').
,猜测原因是docker-compose up
中mysql8
数据库的问题,(linux
自身启动默认开启lower_case_table=0
, 且无法启动镜像) 方案:cp
配置文件下来,修改结束cp
回去,修改lower_case_table=1
,仍然报错,变化了数字,0 - > 1, 尝试设置为 2, 报错回原来的信息,
阿里云解答 https://help.aliyun.com/document_detail/147946.html
根据报错二:
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
如果都解决不了最后思路:设置
mysql
版本为mysql5
,重新构造
1.2、访问项目
公网 ip 访问部署在云服务器的 web 项目,配置安全组
访问。登录后台后会出现

需要在 settiing 文件中添加公网ip

进入容器

部署反思:
部署项目应该保持干净的目录
运行测试所生成的数据或文件不要带入部署文件中
测试代码与部署代码部分在上传也应该修改好
版权声明: 本文为 InfoQ 作者【计算机魔术师】的原创文章。
原文链接:【http://xie.infoq.cn/article/f295f09b4de5d17663dd3385b】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论