- 微信云托管能力特性之腾讯云服务互联实践丨云托管征文
微信云托管能力特性之腾讯云服务互联实践:连接腾讯云Redis 在使用微信云托管时,可以通过内网连接其他腾讯云产品以满足场景的需求。云托管中的腾讯云VPC目前支持腾讯云上海地域。 实践任务: 本次实践将在云托管中部署一个连接腾讯云Redis数据库一个计数器。具体步骤有:购买云资源、本地调试代码、部署。 实践说明: 实践侧重于对云资源的相关操作,计数器项目的简介会在补充资料,部分未覆盖到的产品可以自行寻找相应资料 。步骤设计为讲述方便,实际操作时可以先在本地测试完毕后再前往购买云资源。本次使用官方express框架模板进行构建,在开始前,请下载本次过程的代码“Redis计算器”: 官方项目仓库:微信云托管 express 框架模版 (github.com) Redis计算器:express-counter-redis (gitee.com) 实践环境要求: 其中,Git和Redis都是可选的,如果您当前本地开发环境没有Git,就使用代码包上传;如果没有Redis,可以跳过实践中的本地测试环节; Docker:Get Docker | Docker Documentation NodeJS:下载 | Node.js (nodejs.org) (可选)Git:Git - Downloads (git-scm.com) (可选)Redis:Redis 一、创建环境、购买Redis数据库资源 (一)部署示例项目、创建数据库 本节供参考的文档: 如何创建多个环境:创建环境 如当前存在生产环境,可以在控制台中创建一个测试环境 [图片] 选择express示例项目,该步的目的是使用官方模板部署脚本协助创建数据库。 [图片] (二)购买同VPC下的Redis数据库资源 创建数据库时需要区分云托管环境的VPC及业务可用区。在本实践中选择把Redis连接在当前环境VPC的MySQL数据库子网中。 本节供参考的文档: VPC简介:私有网络VPC-腾讯云 (tencent.com) 腾讯云Redis数据库:腾讯云Redis数据库 1. 获取当前环境VPC及MySQL数据库相关信息 本示例的环境中VPC的ID为:vpc-0mmb1azq 在控制台左侧边栏中点击:“设置” -> “环境设置”,记录显示信息中的“网络”内容。 [图片] 在控制台左侧边栏中点击:“MySQL”,记录网络信息中的“网络”内容 本示例的MySQL所处的VPC子网ID为:vpc-0mmb1azq/subnet-5gnv1tp9 数据库连接: sh-cynosdbmysql-grp-7lchxweu.sql.tencentcdb.com:26760 10.0.224.9:3306 [图片] 2. 进入当前账号的腾讯云的Redis实例控制台 在控制台左侧边栏中点击:“费用中心” -> “充值与账单” 进入腾讯云控制台,然后在控制台左上角点击"云产品" ,找到“云数据库Redis”。 [图片] 3. 在腾讯云的私有网络控制台中查看VPC所在地域信息 此步骤为获取微信云托管为我们创建的VPC子所在可用区的信息 当前数据库子网VPC的ID为:vpc-0mmb1azq/subnet-5gnv1tp9 可用区为:上海二区 在私有网络控制台中,找到当前云环境VPC的ID,点击列表中子网的数字进入当前VPC的子网列表,找到当前环境VPC下MySQL数据库的子网ID,查看列表中的“可用区”一项信息 [图片] 4. 选购对应的腾讯云Redis资源 此步骤较为重要,请仔细阅读。购买Redis时,将IPv4选择在当前环境VPC的MySQL数据库子网中。进入Redis控制台的步骤可以参照上面第2步,Redis实例的配置清单如下: 选购及选购清单说明: 选购的性能规格视实际而定,此处为测试选购价格最低的 本节供参考文档: Redis控制台: Redis-实例列表 [图片] 选择对应的可用区及VPC网络 当前数据库子网VPC的ID为:vpc-0mmb1azq/subnet-5gnv1tp9 可用区为:上海二区 [图片] 选择安全组,放开Redis的端口,免密码认证 因为此处VPC不对外暴露,选择默认安全组或在自定义安全组配置中放开相应端口即可 本节供参考文档: 安全组文档:云服务器 安全组问题 安全组控制台:安全组控制台 (tencent.com) [图片] 在Redis实例控制台中获取实例内网IP: 购买完毕后,会有弹窗前往控制台。创建完毕后在实例列表的“网络”项会显示Redis的内网地址。我们保存一下地址 [图片] 二、配置云托管及本地测试中的环境变量 (一)在微信云托管服务列表中配置环境变量: 本实践中配置变量主要为了让应用获取不同运行环境中的数据库信息,此处的几个变量及描述如下: REDIS_HOST:Redis的主机ipv4地址; REDIS_PORT:Redis的端口; REDIS_PASSWORD:Redis的密码; 在本实践中,使用了腾讯云的Redis数据库,部署在同一VPC内网中,根据上一步骤中获取的Redis地址填写; [图片] (二)配置本地模拟测试项目的环境变量测试 具体的数据库信息配置取决于您当前的开发环境,MySQL需要连接到微信云托管的数据库中,连接信息在上面已经获取,同时,因为root账号不允许通过远程连接,需要创建子账号,可参考以下资料,在本项目中提供了Windows开发环境中的临时环境变量配置。 本节供参考文档: 创建可供远程访问的子账号:创建数据库并创建子账号-(二)数据库创建-创建数据库并创建子账号 在VS-Code中安装云托管调试插件:本地调试 通过VS-Code插件打通线上VPC测试:六、本地打通线上-VPC-调试 | 微信开放文档 (qq.com) 配置项目测试启动脚本 在测试项目中根目录的 [代码]run.bat[代码] 文件中补充数据库信息,该文件仅为了模拟在一定环境变量下启动项目,您可以根据当前开发环境对启动方式进行变更,Windows环境下示例: [代码]set MYSQL_USERNAME=crmeb @REM MySQL数据库用户名 set MYSQL_PASSWORD=xeWmJ466 @REM MySQL数据库密码 set MYSQL_ADDRESS=sh-cynosdbmysql-grp-dl*w.sql.tencentcdb.com:29151 @REM MySQL数据库地址 set REDIS_HOST=localhost @REM Redis数据库主机IP set REDIS_PORT=6379 @REM Redis数据库端口 set REDIS_PASSWORD= @REM Redis数据库密码 if not exist package-lock.json ( npm install && node ./index.js ) else ( node ./index.js ) [代码] 使用官方VS-Code插件接入VPC 在项目[代码]container.config.json[代码] 中配置数据库连接信息 [代码]{ //...省略 "envParams": { "MYSQL_ADDRESS" : "10.0.224.16:3306", "MYSQL_USERNAME" : "crmeb", "MYSQL_PASSWORD" : "xeWmJ466", "REDIS_HOSTNAME" : "", "REDIS_PORT" : "", "REDIS_PASSWORD" : "", "REDIS_SELECT" : 0 }, //...省略 } [代码] 三、 本地测试及部署 (一)本地测试 1. 运行测试 通过脚本启动 完成配置后,Windows下运行命令 [代码]./run.bat [代码] 工作正常,进行构建测试 [图片] 2. 构建测试 [代码]docker build -t counter:1.0 . [代码] 本地构建测试成功,现在可以通过官方VS-Code插件模拟线上环境测试 [图片] 3. 模拟线上环境测试 使用官方VS-Code插件接入VPC前需要先按照官方教程配置VSCode插件,除必要的配置外,还需要以下操作配置模拟启动的环境变量 在插件中配置VPC中的代理节点, 启动完成后,将本地项目启动即可 [图片] 工作正常,可以将代码拉到云托管 默认端口为:[代码]27081[代码] ,即访问 [代码]http://127.0.0.1:27081/[代码] ,端口可以在插件设置中进行更改。在访问时,明显感觉到了网络延迟。 [图片] (二)在微信云托管部署 部署过程可以参考自身情况选择合适方式,下图通过Git仓库拉取源码,在云托管中构建。 本节供参考资料: 部署及发布过程:部署发布 | 微信开放文档 (qq.com) [图片] 效果: [图片] 四、补充资料 (一)Redis计数器说明 本文代码中的Redis连接方式仅为参考、练习使用 该计数器在官方Express框架示例项目 基础上进行了修改,通过 [ioredis](ioredis - npm (npmjs.com)) 库对Redis进行操作,细节可以参考仓库文件,改变文件有两处: 在 [代码]db.js[代码] 中获取全局变量中的redis连接信息,并返回Redis操作实例; 在 [代码]index.html[代码] 及 [代码]index.js[代码] 中进行调整以展示及操作数据; (二)拓展练习 在我发布的上一个lab中,留下了两个影响使用及扩缩容的问题: MySQL数据库版本不适当; Redis应独立; 两个问题均可以通过本文的方式进行优化,最后附上修改的思路: 修改[代码].env[代码] 文件,使其读取系统环境变量中的数据库配置信息 [图片] 修改项目中的 [代码]container.config.json[代码] [代码]{ //...省略 "envParams": { "MYSQL_HOSTNAME" : "10.0.224.16", "MYSQL_HOSTPORT" : 3306, "MYSQL_USERNAME" : "crmeb", "MYSQL_PASSWORD" : "xeWmJ466", "MYSQL_DATABASE" : "crmeb", "REDIS_HOSTNAME" : "", "REDIS_PORT" : "", "REDIS_PASSWORD" : "", "REDIS_SELECT" : 0 }, //...省略 } [代码] 别忘了在 [代码]Dockerfile[代码] 及启动文件 [代码]run.sh[代码] 中去掉与[代码]redis[代码]相关内容
2022-03-15 - #云开发# 你有用过云托管吗?对于云托管有什么期待或建议呢?
[图片] 云托管是小程序为开发者提供的云原生容器服务,支持托管任意语言及框架的容器化应用,用户可面向代码使用,无需维护复杂的容器环境,可专注于自身的业务,使用即可享受自动扩缩容的容器资源。云托管相对于云函数,更自由灵活,支持任意语言、任意框架、常驻运行,同时也拥有云函数的微信天然鉴权等优势,更适用于有大型复杂业务的小程序。 简而言之,就是面向后端及全栈开发同学的一种全新的小程序开发模式,这种开发模式可以很好的完成大型小程序复杂的业务逻辑,部署高效,无需运维,天然鉴权。 云托管上线已经有段时间了,不知道大家有没有开始用呢? [图片] 如果你已使用云托管,想邀请你分享你的案例或在使用过程中遇到的问题以及你的解决方案,对于云托管现有能力你有什么建议?未来你有哪些比较期待的能力呢? 如果你还在观望中话,那项目现在后端开发主要是用哪些产品和工具呢?没有选择使用云托管的原因是什么?欢迎大家畅所欲言。 了解更多云托管相关内容可点击查看云托管使用指南以及云托管使用案例。 为本话题提供高质量回答或建议者即有机会获得微信正版周边礼品一份,快来参加吧! [图片] [图片] [图片] *图片仅供参考,实际奖品选择与发放将视官方周边更新与存货情况进行适当调整 *获奖情况将在后续「社区每周」公告中进行公示
2021-03-30