微信发力了,一键部署网站后端!
大家好,我是鱼皮。
还记得么?之前我全程直播带大家从 0 到 1 做了一个包含前端、后端的 表情包网站项目 ,支持搜索表情、自由裁切下载、给表情包配字等功能。
![](https://filescdn.proginn.com/50c36382ebcdb84a8306a337d1fcc4dc/4144424d19b70e23ab74406f4ddfabb0.webp)
![](https://filescdn.proginn.com/28d728722c9a9b5053d26833edba7eb0/a42a8e855496fbbb2fc95e2aa1c2df48.webp)
但由于各方面的原因,我暂时将该网站战术下线了。好吧,主要是没钱(很费 CDN 流量)和人力维护了。。。
不过,我已经将该网站的所有源码 全部开源 了,大家可以拿来自由学习。而且今天,我要手把手教大家部署上线网站的后端!
其实非常简单,使用微信团队推出的新服务 —— 微信云托管
,无需购买服务器 ,大概几分钟就能完成任何后端项目的上线。
![](https://filescdn.proginn.com/520814a160839c6ce2d59b6778115746/fad217413d9553996d848de726153bc1.webp)
无服务器上线后端服务
微信云托管介绍
先介绍一下什么是微信云托管,这是由微信团队提供的以云原生为基础的,免运维、高可用服务上云解决方案。用人话说就是平台来帮助你托管应用,开箱即用,再也不需要自己来搭建服务器、运维管理应用的运行了。你只管写代码开发,剩下的全部交给云托管!
![](https://filescdn.proginn.com/aaadf945fa4789a8a9851919350cefea/5ef5f892a573e8c30517be90cb517da3.webp)
微信云托管本质上是将你的应用打包为一个个独立的容器,然后放到平台上运行的。因此支持任意编程语言,并且内置了主流开发框架的模板,甚至 一行代码不写 ,也能发布项目,感受容器平台的核心流程。
![](https://filescdn.proginn.com/38048b00ffe6250671c1fe1fac19742d/1cd4b59cd498eb61b651603c410e9525.webp)
下面以我的表情包网站后端(Java 的 Spring Boot 项目)为例,演示一下如何使用该平台。
发布首个版本
首先登录微信云托管平台,进入服务列表,可以看到已经被平台托管的服务:
首次进入时需要用公众号 / 小程序账号创建环境,没账号可以免费申请一个~
![](https://filescdn.proginn.com/1ef7010059c0f8c4ebccfe0c23530302/3052463a4d7a1b97ef7efc1fba9c1505.webp)
点击新建服务,输入服务名称,如果需要让项目能被外网访问的话,记得开启公网访问:
![](https://filescdn.proginn.com/428db0f29f6dc0bd242887b9def601cf/e49a2f3e64433332ee95dccbad4943d1.webp)
创建成功后,进入刚刚创建的服务,接下来我们要创建一个版本(可以理解为项目的版本号)。
目前支持三种上传版本的方式,基本已经能够满足所有场景。
![](https://filescdn.proginn.com/e26ed5d2f5fe3ae17f8f92cae66e37ce/9659a991dffb08a6d87fc45c938e353c.webp)
如果你的项目代码只存在了自己的电脑上,可以选择 本地上传
;如果项目已经发到了 GitHub、Gitee 等代码仓库中,可以直接从代码库拉取;如果已经有现成的镜像了,那可以选择镜像拉取。
由于我的表情包网站后端代码一直是存到 GitHub 上的,大家可以先 fork 我的仓库到自己的仓库中。
代码仓库:https://github.com/liyupi/father-backend
然后选择 代码库拉取 的方式新建版本,选择刚 fork 的仓库,端口号和项目使用的端口号保持一致(这里是 8081):
![](https://filescdn.proginn.com/59551997f7360f9dfee33aeb95b9ba0f/ab61fa7634cc5a318174471602c6dd05.webp)
除了上图的基础配置外,还可以根据需要做一些高级配置,比如指定容器构建文件(Dockerfile)的名称、容器的 CPU 和内存配置(最低支持 0.25 核的超细粒度)、实例副本数、扩缩容条件等,还可以通过配置环境变量来区分测试和生产环境:
![](https://filescdn.proginn.com/7c73f75f18a65ff0b4d07e925f49c3cc/50db2aa27332a7127e1290a2e50dc653.webp)
微信云托管平台自带 弹性扩缩容 能力,会根据访问流量的大小自动增加和减少实例副本数,上能扛高并发、下能节约成本,非常灵活!
由于我已经在项目中写好了 Dockerfile 文件,所以此处我们不用改任何高级配置,直接新建即可。
![](https://filescdn.proginn.com/e66c42eff52a5874183076d2d67e091c/b713523b20ae64a3695115a678113bad.webp)
如果你不会编写 Dockerfile 文件,可以直接找同框架的项目 “抄” 一个。或者使用微信云托管提供的界面来定义启动项目的方法:
![](https://filescdn.proginn.com/41e49c2871eb4f913795fab54f002cb1/9b339bd6f06e191d7d50582be460d5b0.webp)
新建版本后,微信云托管会自动执行拉取代码、构建镜像等操作,并且可以实时查看到日志:
![](https://filescdn.proginn.com/10c61ad3f2fad15100112774e4f314b2/354b644d20fdbe29503360427bbe8039.webp)
版本创建成功后,可以在版本列表中查看和管理,比如升级新版本、回退老版本等:
![](https://filescdn.proginn.com/308a691f72909787aec7dcfd2bd54d9d/2de85a2abf61dd5e29a21b492dc85f16.webp)
然后,进入 部署发布 ,首次发布时直接点击 全量发布 即可:
![](https://filescdn.proginn.com/48a3dedd61e979bbb8e47175965dc314/0c14354e8997df8915e1e8554aea5fc6.webp)
发布成功后,你可以直接通过 web 界面在线调试后台接口,比如测试一下我的表情包后台的 /api/health
健康检测接口,看到控制台输出 "ok",表示后台已部署成功:
![](https://filescdn.proginn.com/43b4300d8f14a2bcbc75908c0cb3fc94/b23733136a7e87b1d0c528b6dd3ac9a2.webp)
进入监控面板,啥都不用干,就能清晰地查看到后台接口的调用情况、容器的 CPU 和内存资源占用等图表,便于分析项目的运行状况。试问如果你自己用服务器部署项目的话,谁去花时间给你搞监控面板呢?
![](https://filescdn.proginn.com/f30dcb039cfcc66f0da139999df34c8c/aad76c92770af8bf7a24817a39894614.webp)
还可以在日志面板中查看项目输出的日志,支持自由检索,这不比你自己登录服务器看日志、或者搞一套日志服务要方便得多?
![](https://filescdn.proginn.com/f533e8ed899d63bab91112bdb3868c9d/3962732443c754df0583b8cda6d8478e.webp)
自动发布
现在,我们已经成功发布了后台的首个版本。如果之后项目代码发生了变更,我们是否还要再重复执行一遍上述操作呢?
当然不用!
微信云托管提供了流水线功能,我们可以像工厂自动化生产一样,让项目的构建流程也全部自动化!
点击新建流水线:
![](https://filescdn.proginn.com/c445c75a23b25018d15bda615a3d97ea/088c260a1fdcfa1adddc6ee3cc41d876.webp)
填写要自动发布的代码仓库,默认该仓库任何代码修改都会触发流水线的执行,你也可以通过指定目标目录(比如 src)、推送触发的分支来减小范围,比如只是修改了 README 文件,就没必要触发了。还可以设置定时自动触发,提高持续集成的效率。发布策略建议选择 构建版本 + 镜像 ,会比直接全量发布保险一些。
![](https://filescdn.proginn.com/0992b7cde04534a2cfa105c707ff9331/0fd13d23c3836ec93acac752d9de53d3.webp)
然后我们随便改一下仓库里的代码,微信云托管会通过仓库的 webhook 钩子感知到代码的变化,并自动触发流水线的执行:
![](https://filescdn.proginn.com/7d82610d77d6e480cb8575d6eebce223/6e178964692d645fe79b565a5ccad8a5.webp)
流水线执行成功后,我们得到了一个船新版本。
灰度测试
这次我们在发布前,可以先进行一些测试,防止有 Bug 的代码直接上线:
![](https://filescdn.proginn.com/f6e8ce5e8e4dc3d6b0807c0cac03e6f1/a0e89ab74462214d97bcbd65b6e25e7c.webp)
进入测试,我们可以配置测试的 URL 参数,比如 user = yupi,然后点击灰度上线,在请求接口时只需要带上 ?user=yupi
参数,就可以访问到最新的测试版本了,而其他用户访问到的还是之前的老版本:
![](https://filescdn.proginn.com/c5b747d3a75fab47641902b85779c2f7/e906ca122995253fc1c2795f6de82811.webp)
如果你自测觉得没啥 Bug 了,可以调整灰度流量的比例,让部分同学可以公开访问最新版本,没问题后就可以全量发布啦:
![](https://filescdn.proginn.com/bcf3ba891a2752c65978f1e2ea124dba/606757b31af9ae91df9e3a62f4c007e0.webp)
其他优势
怎么样,是不是非常方便呢?其实国内的互联网大厂,基本都是使用这种方式来进行项目自动化发布的,而不是人工登录一台台服务器,反复输入重复的命令来上线。
目前,各大云服务厂商基本也都提供了类似的平台,但是微信云托管有一个 绝对优势 :天然打通微信生态。你可以免鉴权、更加轻松地调用微信其他平台的能力,比如云调用、消息推送、微信支付、小程序服务等。而且服务基于亿级用户同时在线的微信接入层实现,提供防数据爬取、防 DNS 劫持、防 DDoS 攻击能力。微信用户可以就近接入,享受更快、更稳定的安全网络。
![](https://filescdn.proginn.com/76d22b261e2cc3e4d946f8bfbbc35864/975ab0c3dbab8c94221703ac73a2915b.webp)
此外,微信云托管还提供了一键开通数据库、对象存储、资源监控等能力。也就是说,如果你要做一个后端项目,基本所有的资源都可以在微信云托管中申请和管理,不用到处开通、自行搭建了。
![](https://filescdn.proginn.com/bba1e8bc1c2a8968960f86b80dde7d92/100bc6c290a94b1ef244062a697439d4.webp)
成本
那相信有很多朋友会好奇了,这么好用的服务,一定贵的一批吧?
其实不然,微信云托管使用 按量计费 模式,通过实际使用的 CPU、内存等资源来计费,用多少付多少,不用的项目只要停掉(或者平台自动缩容),就不会扣 1 分钱啦!我的编程导航等项目都是用这种模式去部署的,一年下来,的确比买同配置的服务器要划算得多。
而且告诉大家个好消息:所有新用户都能享有 3 个月的免费额度 !完全足够学习和体验了。反正不 piao 白不 piao,建议大家都去试试,感受云原生技术带来的高效。
我也是最近才发现有免费额度,我说怎么没扣费哈哈。。。
![](https://filescdn.proginn.com/88b8808fc871bd4b91a46ccf564ee79f/e09ec138e461f426d10222e3e63dc8e6.webp)
![](https://filescdn.proginn.com/0195609cea5f7a3540bafc7a5e1d3c42/4a7f07a72fb3be4c64e47661a35e7161.webp)
往期推荐
![](https://filescdn.proginn.com/34675c424820e7edb33a0d249160dec8/d828b8e68e6cedb25850d8e86cd1cc8f.webp)
![](https://filescdn.proginn.com/b1a84f881c4f1d205500a9fb0e84e9dc/2eb59476568d5314cc1dbe987215a3d6.webp)
![](https://filescdn.proginn.com/b1a84f881c4f1d205500a9fb0e84e9dc/2eb59476568d5314cc1dbe987215a3d6.webp)
最后
欢迎加我微信,拉你进技术群,长期交流学习...
欢迎关注「前端Q」,认真学前端,做个专业的技术人...
![](https://filescdn.proginn.com/b41ed4a6942657aad5204755a31dc671/ee9450f9825c2f4812186f5193da748a.webp)
![](https://filescdn.proginn.com/53d7d6e06a4b15e59c9079639ba68f86/5c1e94ebe435e216a382e6763b845069.webp)