微信发力了,一键部署网站后端!

大家好,我是鱼皮。

还记得么?之前我全程直播带大家从 0 到 1 做了一个包含前端、后端的 表情包网站项目 ,支持搜索表情、自由裁切下载、给表情包配字等功能。

8f0bbdff55848b85ae5e8b4f6cca1a55.png
爸爸表情包网站
9affc342e5c900c1316dee825ed3e39c.png
在线编辑下载

但由于各方面的原因,我暂时将该网站战术下线了。好吧,主要是没钱(很费 CDN 流量)和人力维护了。。。

不过,我已经将该网站的所有源码 全部开源 了,大家可以拿来自由学习。而且今天,我要手把手教大家部署上线网站的后端!

其实非常简单,使用微信团队推出的新服务 —— 微信云托管无需购买服务器 ,大概几分钟就能完成任何后端项目的上线。

2ee575e69abd0b4a72d5afa7b5e91b89.png

无服务器上线后端服务

微信云托管介绍

先介绍一下什么是微信云托管,这是由微信团队提供的以云原生为基础的,免运维、高可用服务上云解决方案。用人话说就是平台来帮助你托管应用,开箱即用,再也不需要自己来搭建服务器、运维管理应用的运行了。你只管写代码开发,剩下的全部交给云托管!

b924507a3cdcf5d1821fc46649672688.png

微信云托管本质上是将你的应用打包为一个个独立的容器,然后放到平台上运行的。因此支持任意编程语言,并且内置了主流开发框架的模板,甚至 一行代码不写 ,也能发布项目,感受容器平台的核心流程。

6cbe6650845d5f8cc74f3b9c9befe6e6.png
快速部署

下面以我的表情包网站后端(Java 的 Spring Boot 项目)为例,演示一下如何使用该平台。

发布首个版本

首先登录微信云托管平台,进入服务列表,可以看到已经被平台托管的服务:

首次进入时需要用公众号 / 小程序账号创建环境,没账号可以免费申请一个~

56414fe3b50c3b28c9110b3ed4910ec1.png

点击新建服务,输入服务名称,如果需要让项目能被外网访问的话,记得开启公网访问:

72c707ede0e90950aa4d68d88d1e68e9.png

创建成功后,进入刚刚创建的服务,接下来我们要创建一个版本(可以理解为项目的版本号)。

目前支持三种上传版本的方式,基本已经能够满足所有场景。

e6c77398752dc24c87d120558aba95a6.png

如果你的项目代码只存在了自己的电脑上,可以选择 本地上传 ;如果项目已经发到了 GitHub、Gitee 等代码仓库中,可以直接从代码库拉取;如果已经有现成的镜像了,那可以选择镜像拉取。

由于我的表情包网站后端代码一直是存到 GitHub 上的,大家可以先 fork 我的仓库到自己的仓库中。

代码仓库:https://github.com/liyupi/father-backend

然后选择 代码库拉取 的方式新建版本,选择刚 fork 的仓库,端口号和项目使用的端口号保持一致(这里是 8081):

943444ce6c9d01efa048b3e01f5a3a12.png

除了上图的基础配置外,还可以根据需要做一些高级配置,比如指定容器构建文件(Dockerfile)的名称、容器的 CPU 和内存配置(最低支持 0.25 核的超细粒度)、实例副本数、扩缩容条件等,还可以通过配置环境变量来区分测试和生产环境:

4b6e62cf1924a010bb78f61e67c7a79d.png
高级配置

微信云托管平台自带 弹性扩缩容 能力,会根据访问流量的大小自动增加和减少实例副本数,上能扛高并发、下能节约成本,非常灵活!

由于我已经在项目中写好了 Dockerfile 文件,所以此处我们不用改任何高级配置,直接新建即可。

3d219743f750d64be855a2549e02c119.png
Dockerfile 文件

如果你不会编写 Dockerfile 文件,可以直接找同框架的项目 “抄” 一个。或者使用微信云托管提供的界面来定义启动项目的方法:

0c058f68707bbad90e3c8847ebc17450.png

新建版本后,微信云托管会自动执行拉取代码、构建镜像等操作,并且可以实时查看到日志:

4e42ddbfc38dfe3447d8546d500b5b52.png
部署中

版本创建成功后,可以在版本列表中查看和管理,比如升级新版本、回退老版本等:

cef915fc6aded4951683ee3bdeac3329.png

然后,进入 部署发布 ,首次发布时直接点击 全量发布 即可:

9e752127df0190f3d132185da5137242.png

发布成功后,你可以直接通过 web 界面在线调试后台接口,比如测试一下我的表情包后台的 /api/health 健康检测接口,看到控制台输出 "ok",表示后台已部署成功:

e662121eb090cfa34f2e0132282920fe.png

进入监控面板,啥都不用干,就能清晰地查看到后台接口的调用情况、容器的 CPU 和内存资源占用等图表,便于分析项目的运行状况。试问如果你自己用服务器部署项目的话,谁去花时间给你搞监控面板呢?

86813f7d029bae91b045410f2ffc0fec.png
服务监控

还可以在日志面板中查看项目输出的日志,支持自由检索,这不比你自己登录服务器看日志、或者搞一套日志服务要方便得多?

bdb922a60da7a5fc9a63f3a63b8088e0.png
日志检索

自动发布

现在,我们已经成功发布了后台的首个版本。如果之后项目代码发生了变更,我们是否还要再重复执行一遍上述操作呢?

当然不用!

微信云托管提供了流水线功能,我们可以像工厂自动化生产一样,让项目的构建流程也全部自动化!

点击新建流水线:

8d3f9590f58833928a4a08f88a81f628.png

填写要自动发布的代码仓库,默认该仓库任何代码修改都会触发流水线的执行,你也可以通过指定目标目录(比如 src)、推送触发的分支来减小范围,比如只是修改了 README 文件,就没必要触发了。还可以设置定时自动触发,提高持续集成的效率。发布策略建议选择 构建版本 + 镜像 ,会比直接全量发布保险一些。

a46cd8a97e5e342047808339e498993d.png
新建流水线

然后我们随便改一下仓库里的代码,微信云托管会通过仓库的 webhook 钩子感知到代码的变化,并自动触发流水线的执行:

fddd9df623c93c729d2d7107d90fb89d.png
自动构建

流水线执行成功后,我们得到了一个船新版本。

灰度测试

这次我们在发布前,可以先进行一些测试,防止有 Bug 的代码直接上线:

4cfca95ca0e020cd5c20d336f39d3425.png

进入测试,我们可以配置测试的 URL 参数,比如 user = yupi,然后点击灰度上线,在请求接口时只需要带上 ?user=yupi 参数,就可以访问到最新的测试版本了,而其他用户访问到的还是之前的老版本:

a0428168198001294ca8b8f8165d1aa6.png
灰度测试

如果你自测觉得没啥 Bug 了,可以调整灰度流量的比例,让部分同学可以公开访问最新版本,没问题后就可以全量发布啦:

90f10a125e9d4f36e35be2dff06c25ae.png

其他优势

怎么样,是不是非常方便呢?其实国内的互联网大厂,基本都是使用这种方式来进行项目自动化发布的,而不是人工登录一台台服务器,反复输入重复的命令来上线。

目前,各大云服务厂商基本也都提供了类似的平台,但是微信云托管有一个 绝对优势 :天然打通微信生态。你可以免鉴权、更加轻松地调用微信其他平台的能力,比如云调用、消息推送、微信支付、小程序服务等。而且服务基于亿级用户同时在线的微信接入层实现,提供防数据爬取、防 DNS 劫持、防 DDoS 攻击能力。微信用户可以就近接入,享受更快、更稳定的安全网络。

73c5974e90d3b0c43a04f083d842a298.png
打通微信生态

此外,微信云托管还提供了一键开通数据库、对象存储、资源监控等能力。也就是说,如果你要做一个后端项目,基本所有的资源都可以在微信云托管中申请和管理,不用到处开通、自行搭建了。

8ca7f9dba7d0d7762d95c2592e51e7de.png
资源申请和监控

成本

那相信有很多朋友会好奇了,这么好用的服务,一定贵的一批吧?

其实不然,微信云托管使用 按量计费 模式,通过实际使用的 CPU、内存等资源来计费,用多少付多少,不用的项目只要停掉(或者平台自动缩容),就不会扣 1 分钱啦!我的编程导航等项目都是用这种模式去部署的,一年下来,的确比买同配置的服务器要划算得多。

而且告诉大家个好消息:所有新用户都能享有 3 个月的免费额度 !完全足够学习和体验了。反正不 piao 白不 piao,建议大家都去试试,感受云原生技术带来的高效。

我也是最近才发现有免费额度,我说怎么没扣费哈哈。。。

e0bedc67c5c1ca58b1e3395071bf46d5.png
计费模式


现在体验云托管,输出实践文章,就能免费获得200元代金券!优秀文章还有九种鹅厂周边任选,喜欢的小伙伴可以参与下:https://wj.qq.com/s2/8971509/5219/

⬇️ 点击下方 阅读原文 就能直达微信云托管官网了,感兴趣的朋友试试吧~(PC端访问才能使用哦)

以上就是本期分享,有帮助的话还请给鱼皮一个 点赞 + 在看 ,谢谢大家!

6694027e0938f4d21436acaa6ebad5bd.png

往期推荐

考研结束,抓紧做这件事!

一个竞赛上瘾的学弟

N 年沉淀,腾讯这套系统终于开源!

抱歉,我不用别的测试工具了!

编程导航,凉凉!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/293444.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据可视化(9)--数据可视化6步法

在当前互联网,各种数据可视化图表层出不穷,本文尝试对数据可视化的方法进行归纳,整理成6步法。一般的数据图表都可以拆分成最基本的两类元素: 所描述的事物及这个事物的数值,我们暂且将其分别定义为指标和指标值。比如一个性别分布…

数据挖掘在呼叫中心的六大应用点

当前商业正在从“以产品为中心”到“以用户为中心”转变,很多企业将CRM作为企业成功的一个关键因素,呼叫中心作为影响用户最直接的渠道,起着至关重要的作用;利用数据挖掘技术,可以提高企业呼叫中心的效率的同时来增加客…

c++win32项目 如何显示后再删除一个绘图_iMATLAB 绘图扩展函数系列 | 让你绘图更自由(进阶专辑开篇)!...

本专辑参考了mathworks公司主页文件交换站的一些分享文件,遴选部分绘图扩展函数供初学者参考,仅用作学习资料传播,版权属于原作者,特此致谢。如有不妥,请联系删除。本专辑将持续更新,欢迎读者投稿自己绘图函…

HTML5:理解head

2019独角兽企业重金招聘Python工程师标准>>> HTML文档的head部分,通常包括指定页面标题,为搜索引擎提供关于页面本身的信息,加载样式表,以及加载JavaScript文件(出于性能考虑,多数时候放在页面底…

Android之什么场景该使用单例模式总结

1、什么是单例模式 单例模式意味着只有一个对象,至于单例模式如何实现就不这里就不多说了,有很多种实现办法。 2、什么时候该使用单例模式?如果不使用单例模式会出现什么问题? 先举2个例子 例子1 当我们做得到最新的短信和最新的通话记录的时候,我们一般采…

Dapr项目应用探索

背景介绍前面文章对Dapr的基本信息进行了学习,接下来尝试将Dapr应用相关应用中。接下来一步步实现应用dapr功能。一、预期效果如上图应用Dapr点包含:a) 报表服务绑定统一数据源服务:接受更新通知  b) 业务系统调用报表操作:采用Dapr方式二、…

为什么当代人越来越不快乐?

全世界只有3.14 % 的人关注了爆炸吧知识小时候哭着哭着就笑了,长大后笑着笑着就哭了。生活不易,成年人叹气,房租水费,学习压力、工作不如意...各种无形的压力,压得人喘不过气。如果一绷得太紧,再坚韧的弦也…

解读C#正则表达式

为什么80%的码农都做不了架构师?>>> 多少年来,许多的编程语言和工具都包含对正则表达式的支持,.NET基础类库中包含有一个名字空间和一系列可以充分发挥规则表达式威力的类,而且它们也都与未来的Perl 5中的规则表达式兼…

《SAS编程与数据挖掘商业案例》学习笔记之十九

继续《SAS编程与数据挖掘商业案例》学习笔记,本文侧重数据处理实践,包括:HASH对象、自定义format、以及功能强大的正则表达式 一:HASH对象 Hash对象又称散列表,是根据关键码值而直接进行访问的数据结构,是根…

do { ....} while(0) 在宏里冗余的意义

do { ....} while(0) 在宏里冗余的意义 cocos2d-x提供了许多宏模板,如:CC_SAFE_RETAIN(p),CC_SAFE_DELETE(p) 等等 查看一下CC_SAFE_RETAIN的源码: #define CC_SAFE_RETAIN(p) do { if(p) { (p)->retain(); } } while(0) 为什么…

iphone换机数据迁移_iPhone迁移数据到Android(相册与短信)

2020年09月20日前言:卖掉iPhone7暂时回到Android手机,然后需要将iPhone内的资料迁移到新手机中。我尽量不使用第三方工具实现迁移工作。一般新手机都会有迁移助手,但是都不完美,毕竟是两个不同手机系统,很多东西还是需…

网关和路由的区别

网关:网关实质上是一个网络通向其他网络的IP地址。比如有网络A和网络B,网络A的IP地址范围为“192.168.1.1~192. 168.1.254”,子网掩码为255.255.255.0;网络B的IP地址范围为“192.168.2.1~192.168.2.254”,子网掩码为25…

Java里阻塞线程的三种实现方法

在日常开发中,我们有时会遇到遇到多线程处理任务的情况,JDK里提供了便利的 ThreadPoolExecutor以及其包装的工具类Executors。但是我们知道 ExecutorService.excute(Runnable r)是异步的,超过线程池处理能力的线程会被加入到执行队列里。有时…

使用 dotnet-outdated 维护项目 nuget 包版本

使用 dotnet-outdated 维护项目 nuget 包版本Intro我们项目中或多或少都会有一些 NuGet 包,使用到 NuGet 包时,如何保证我们的 NuGet 包不会太旧呢?我们可以借助 dotnet-outdated 来检查项目中的 NuGet 包是否有更新Sample首先我们需要执行 d…

mysql-5.5.31主从复制

给数据库用户配置groupadd mysqluseradd -g mysql mysql -s /sbin/nologinrm -rf /home/mysqlmkdir -p /opt/mysqlchmod -R 755 /opt/mysqlchown -R mysql:mysql /opt/mysql准备工作:安装基本依赖包,先用yum安装cmake、automake 、autoconf ,…

被一帮小姐姐围着是什么感觉?

1 阿姨:我靠灵魂呼吸...▼2 医学院护理班男生的日常▼3 嫌自己活太久了?▼4 看来还是作业太少了▼5 小孟老师,您妈!▼6 哈哈哈哈哈,不行了...▼7 他今天是不会跟你走的!!!▼8 …

OSI各层相关的协议

<pre id"best-content-639348667" class"best-text mb-10" name"code" style"white-space: pre-wrap; word-wrap: break-word;">一、<strong>OSI各层</strong> 物理层&#xff1a;EIA/TIA-232, EIA/TIA-499, V.35, …

仓库处理中 无法修改_上海电商仓储物流公司,冷链仓库-上海玖日仓储

首页 > 新闻列表 > 浏览文章发布时间&#xff1a;2020-10-21 15:03:33 浏览量&#xff1a; 4导读&#xff1a;上海玖日仓储为您提供上海电商仓储物流公司,冷链仓库的相关知识与详情&#xff1a; 货物出入库扫描功能&#xff0c;同时记录扫描时间&#xff1b;完善订单与仓…

java轻量级Http Server

lighttpd 官方主页&#xff1a;www.lighttpd.netLighttpd是一个德国人领导的开源软件&#xff0c;其根本的目的是提供一个专门针对高性能网站&#xff0c;安全、快速、兼容性好并且灵活的web server环境。具有非常低的内存开销&#xff0c;cpu占用率低&#xff0c;效能好&#…