微信公众号测试生产环境分离实践
微信公众号测试生产环境分离实践
背景
最近开发微信公众号,部分功能上线后,为了保证不影响线上正常使用,新功能的开发测试遇到以及需要解决的问题如下:
调用微信公众号高级接口(授权,支付等)需要配置域名访问,本地测试繁琐,且不能覆盖线上已部署的链接,对已有服务造成影响
公众号前端业务逻辑涉及到缓存cookie,需要保证测试与生产环境的cookie不冲突
给需求方演示测试demo,最好要保证与即将上线的子菜单等交互一致,提高交流效率
测试数据(包括数据库,redis缓存,日志等)与线上数据进行分离
测试环境与线上部署分离,保证互不影响,提高线上的高可用
测试环境与生产环境实现自动化部署,提高开发测试效率
解决方案
申请测试公众号以及测试域名
为了满足给需求方演示测试demo,保证与即将上线的交互体验一致,想到最简单的方案就是重新申请公众号供测试使用(幸好以学校研究院的名义,,要不个人申请就没戏了,,,);并且为了保证前端cookie在两个公众号下不冲突,所以测试的时候使用了与生产环境不一样的二级域名,进行cookie隔离
后端的配置分离
目前由于只有一台云服务器,对于后台工程的配置分离,包括:测试与生产工程的端口号,数据库,redis库,微信开发者ID与秘钥,日志。
项目使用了springboot,配置文件目录如下截图:
将工程分为本地(dev),测试(online-test),生产(online)三种环境,并配合application.properties基础配置文件使用,将与环境相关的变量写入相应的properties中即可进行分离,如下列举application-online-test.properties中的配置内容:
注:数据库的分离即是新建不同的库进行区分访问,redis即通过库号区分访问,日志则通过日志名称来区分
后端的部署分离
后端部署脚本执行的流程为:
使用maven生成jar(本项目为springboot内嵌tomcat,直接执行生成的jar即可提供后台服务)
在云服务器上执行kill脚本,杀掉并删除待替换的jar进程
将新jar包传到云服务器上,执行相应jar的启动脚本(启动脚本包括执行jar在后台运行,指明相应的application-??.properties的文件)
因为只有一台云服务器,需要区分测试与生产环境的jar,使用的方案是两种环境生成不同名字的jar,这样也便于kill脚本与启动脚本通过名称来区分jar,进行部署的分离执行,相互不影响
使用maven来生成不同的jar名称,需要修改pom.xml
<profiles><profile><id>online-test</id><properties><project.name>"测试环境的jar名称"</project.name></properties></profile><profile><id>online</id><properties><project.name>"生产环境的jar名称"</project.name></properties></profile></profiles><build><finalName>${project.name}</finalName> // project.name即为profile中的properties的标签名 .....其他配置信息</build> |
最后执行命令 mvn clean package -Ponline-test -Dmaven.test.skip=true,-P后面为profile的id名称,即可生成不同名称的jar
最后执行云服务器的启动脚本,即可启动新的jar服务
nohup java -jar 'jar包的文件位置' --spring.profiles.active='配置文件的后缀(online或online-test)'> /dev/null 2>&1 & |
前端的配置分离
前端的配置变量包括:请求测试与生产端口号不同,域名不同(涉及授权等重定向链接的不同),微信公众号的ID不同。
代码上将这些变量写到全局一处调用,通过开关注释进行分离控制
前端的部署分离
因为使用单台云服务器,测试与生产环境的前端工程都需要使用到80端口,因为微信高级接口有些仅允许80端口程序调用,所以对于ngnix的配置,使用了配置虚机主机的方案。
具体步骤如下:
确保容器/etc/nginx/nginx.conf文件中有:include /etc/nginx/conf.d/*.conf;
在容器目录/etc/nginx/conf.d/下面新建文件site1.conf,site2.conf,文件名任意,后缀名需要与步骤1配置的一致,这里为.conf。site1代表我们的生产环境工程,site2代表我们的测试环境工程,该文件编写如下:
server {listen 80;server_name //代表该虚拟主机的二级域名root //前端工程代码在服务器中的位置;index index.html index.htm;...其他配置略 } |
前端工程的部署脚本流程是将代码替换到相应配置的目录下,平滑重载ngnix即可
systemctl reload nginx.service //reload重载文件,客户端无异常 |
方案总结
通过申请新的测试公众号,部署不同的域名配置到子菜单上,可以达到与线上公众号相同的交互,前端通过访问后端不同接口的服务,将数据库,redis缓存,日志信息通过后台配置实现了生产与测试的完全分离,可以说如上的解决方案,满足了开始列举的所有需求点,最终将前后端的部署实现脚本自动化,也节省了部署时间,提高开发测试的效率。
微信公众号测试生产环境分离实践相关推荐
- 微信公众号开发 - 开发环境搭建
2019独角兽企业重金招聘Python工程师标准>>> 公众号简介 微信公众号有订阅号.服务号.企业号,在注册的时候看到这样的信息,只有订阅号可以个人申请,服务号和企业号要有企业资质 ...
- 微信公众号开发本地环境开发_如何在5分钟内使HTTPS在本地开发环境上工作
微信公众号开发本地环境开发 Almost any website you visit today is protected by HTTPS. If yours isn't yet, it shoul ...
- 微信公众号测试账号总结
微信公众号测试账号总结 微信公众号 微信公众号测试账号 申请测试账号 配置微信公众号测试账号 接口配置信息 JS接口安全域名,模板消息接口 网页授权获取用户基本信息 微信公众号 微信公众号测试账号 在 ...
- springmvc开发微信公众号接口 微信公众号测试账号配置接口Token验证
转:springmvc开发微信公众号接口 微信公众号测试账号配置接口Token验证 开发前必读以及准备工作: 1.微信公众平台开发是指为微信公众号进行业务开发,为移动应用.PC端网站.公众号第三方平台 ...
- 微信公众号测试账号申请,后台获取公众号关注取关事件,获取用户发送消息
目录 1.访问微信公众号平台 2.扫码登录 3.登录后进行接口信息配置 4.完成以上配置和代码,将代码部署到服务器上,后台就可以接收到公众号的关注.取关.用户发送的消息等等事件拉! 1.访问微信公众号 ...
- 1、微信公众号开发之环境搭建
一.微信开发环境搭建 1.申请一个测试的公众号. 2.用来调式代码的开发环境. 1.1注册测试公众号(为什么要注册测试公众号:因为接口多,适合学习和研究.) 测试公众号的注册地址为:http://mp ...
- 微信公众号开发本地环境搭建
我又来了,这次毕业设计要做微信公众号开发. 了解了一下,一般用PHP语言进行开发.在Windows 平台上一般采取Windows+Apache+MySQL+PHP. 配置起来比较麻烦,采取傻瓜式一键安 ...
- python+Appnium微信公众号测试实战(坑已填平)
一.启动Appium服务 有两种方法启动Appium服务 1.客户端启动 启动appium-desktop,点击Start Server按钮 如下图,appium服务已启动 2.命令行启动 命令行输入 ...
- 微信公众号测试环境开发
在公众平台沙箱环境中注册 https://mp.weixin.qq.com/debug/cgi-bin/sandboxinfo?action=showinfo&t=sandbox/index ...
最新文章
- 汇总|Yolo开源项目
- 白鹭php源码,白鹭/CDNDrive
- 除了“团队牛”还有“饭菜香”,百度 IDL 招聘算法实习生
- 2019年以后ArcGIS 调用天地图的资源URL
- clang 编译过程
- python识别复杂验证码2020_Python识别验证码!学会这步,百分之60的网站你基本都能识别了!...
- 基于深度学习和支持向量机的4种苜蓿叶部病害图像识别
- 宏基ACER Aspire R3600 REVO离子平台
- python语言程序设计教程答案赵璐_python语言程序设计教程课后答案赵璐
- C# 参数带this是什么意思(扩展方法)
- android 锤子桌面壁纸,锤子桌面使用技巧|锤子桌面 1.5.1 安卓版_久友下载站_壁纸美化...
- python qt5开发实例_python GUI库图形界面开发之PyQt5简单绘图板实例与代码分析
- 小米笔试题 风口的猪-中国牛市
- springboot工程中生成二维码(Java)
- C语言数字图像处理---2.1 二值图像形态学算法
- freemarker模板中long类型问题
- 用JS 来简单计算一下现在距离9月10号还有几天几时几分几秒
- VisionPro基础篇(一): VisionPro界面介绍
- URLLC关键技术和网络适应性分析
- 学计算机的心理300字,心理作文300字3篇
热门文章
- 校园网免认证登录连接软件
- ubuntu双屏幕显示设置
- 数组习题(7):电文加密
- 教学中利用计算机软件,【计算机应用论文】计算机应用软件教学方法(共2300字)...
- MOD17A3数据下载
- FPGA-任务五、十字路口交通控制灯器系统设计(二)
- 教师计算机网络培训总结报告,教师培训工作总结范文三篇
- python神器_Python的三大神器,你知道是哪三大吗?史上最详细的入门教程!
- group policy client 服务未能登录拒绝访问解决方案
- 【苹果推】软件安装证书在AppID配置中创建结构