轻松搭建基于 Serverless 的 Egg.js Web 应用
首先介绍下在本文出现的几个比较重要的概念:
函数计算(Function Compute): 函数计算是一个事件驱动的服务,通过函数计算,用户无需管理服务器等运行情况,只需编写代码并上传。函数计算准备计算资源,并以弹性伸缩的方式运行用户代码,而用户只需根据实际代码运行所消耗的资源进行付费。函数计算更多信息 参考。
Fun: Fun 是一个用于支持 Serverless 应用部署的工具,能帮助您便捷地管理函数计算、API 网关、日志服务等资源。它通过一个资源配置文件(template.yml),协助您进行开发、构建、部署操作。Fun 的更多文档 参考。
备注: 本文介绍的技巧需要 Fun 版本大于等于 3.6.9。
Egg.js 是什么?
Egg.js 官方描述为:
Egg.js 为企业级框架和应用而生,我们希望由 Egg.js 孕育出更多上层框架,帮助开发团队和开发人员降低开发和维护成本。
Egg 奉行『约定优于配置』,按照一套统一的约定进行应用开发,团队内部采用这种方式可以减少开发人员的学习成本,开发人员不再是『钉子』,可以流动起来。
Egg 的插件机制有很高的可扩展性,一个插件只做一件事。Egg 通过框架聚合这些插件,并根据自己的业务场景定制配置,这样应用的开发成本就变得很低。
Egg 特性:
- 提供基于 Egg 定制上层框架的能力
- 高度可扩展的插件机制
- 内置多进程管理
- 基于 Koa 开发,性能优异
- 框架稳定,测试覆盖率高
- 渐进式开发
示例效果预览
本文涉及到的应用示例部署后的链接,点击预览效果:
Egg.js 应用示例:http://mtime.functioncompute.com/hot
环境准备
首先按照 Fun 的安装文档里介绍的方法将 Fun 安装到本机。
PS: 本文介绍的方法,不需要安装 Docker,仅仅安装 Fun 即可,最简单的方式就是直接下载可执行的二进制文件。
安装完成后,可以执行 fun --version 检查 Fun 是否安装成功。
第一个示例:快速初始化并部署一个 Egg.js 示例应用
根据官方快速入门文档描述的步骤依次如下操作。
初始化一个 egg.js 示例:
mkdir egg-example && cd egg-example
npm init egg --type=simple
npm i
将该示例在本地运行测试:
npm run dev
然后可以在浏览器访问 http://127.0.0.1:7001 查看效果。
本地开发完成后,可以直接使用如下命令进行一键部署:
fun deploy -y
第二个示例:快速迁移一个已有的 Egg.js 应用
这里我们拿一个开源的 Egg.js web 应用做示例:https://github.com/OrangeXC/mtime
首先我们需要将该应用克隆下来:
git clone https://github.com/OrangeXC/mtime
进入到 mtime 目录,使用 npm 安装依赖:
npm install
本地启动应用:
npm run dev
本地启动应用时,会使用 config/config.default.js
这个配置,需要将该配置中的 mysql 的 username、password 等属性配置为正确的值,才能将应用启动起来。
启动完成后,本地通过浏览器打开网址 http://127.0.0.1:7001 预览效果即可。
当本地测试完成后,我们就要考虑如何将其部署到线上了。部署到线上,Egg.js 默认会优先使用 config/config.prod.js
的配置,我们可以配置线上的数据库到这个文件里,这样就可以实现本地开发与线上部署使用不同的数据库的目的了。
当然,在本地也可以验证下配置是否正确,直接使用 npm run start
就可以将应用以生产的方式运行起来,使用 npm run stop
可以将应用停止。
最后,我们还需要修改下 Egg.js 的缓存与日志目录,我们添加下面的内容到 config/config.prod.js
中:
config.rundir = '/tmp/run',config.logger = {dir: '/tmp/log',}
上面的配置表示将 Egg.js 缓存以及日志写到函数计算的可写目录内(日志输出到 console 也是可以的)。
最后,我们使用 Fun 一键部署:
fun deploy -y
部署完成后,可以在终端输出看到临时域名 13500180-1986114430573743.test.functioncompute.com,通过浏览器打开临时域名可以看到与本地运行时一样的效果。
总结
本文主要介绍了如何将 Egg.js 应用部署到函数计算。相比较与传统的部署方法,不仅没有更复杂,还省略了购买机器、安装配置 Node、Npm 的步骤。可以实现,将传统的 Egg.js 应用在本地开发完成后,一键部署到远端直接用于生产,并拥有了弹性伸缩、按量付费、免运维等特性。
如果您在迁移您的应用过程中遇到了问题,欢迎加入我们的 dingding 群 11721331 反馈。
“阿里巴巴云原生关注微服务、Serverless、容器、Service Mesh 等技术领域、聚焦云原生流行技术趋势、云原生大规模的落地实践,做最懂云原生开发者的技术圈。”
轻松搭建基于 Serverless 的 Egg.js Web 应用相关推荐
- vsscode beego 没有提示_轻松搭建基于 Serverless 的 Go 应用(Gin、Beego 举例)
首先介绍下在本文出现的几个比较重要的概念: 函数计算(Function Compute): 函数计算是一个事件驱动的服务,通过函数计算,用户无需管理服务器等运行情况,只需编写代码并上传.函数计算准备计 ...
- 轻松搭建基于Serverless的Go应用(Gin、Beego 举例)
首先介绍下在本文出现的几个比较重要的概念: 函数计算(Function Compute): 函数计算是一个事件驱动的服务,通过函数计算,用户无需管理服务器等运行情况,只需编写代码并上传.函数计算准备计 ...
- 轻松搭建基于 Serverless 的 ThinkPHP 应用
首先介绍下在本文出现的几个比较重要的概念: 函数计算(Function Compute): 函数计算是一个事件驱动的服务,通过函数计算,用户无需管理服务器等运行情况,只需编写代码并上传.函数计算准备计 ...
- thinkphp v5.0.24 密码爆破_轻松搭建基于 Serverless 的 ThinkPHP 应用
首先介绍下在本文出现的几个比较重要的概念: 函数计算(Function Compute): 函数计算是一个事件驱动的服务,通过函数计算,用户无需管理服务器等运行情况,只需编写代码并上传.函数计算准备计 ...
- Serverless 实战 —— 轻松搭建基于 SpringBoot + Vue 的 Web 商城应用
Serverless 实战 -- 轻松搭建基于 SpringBoot + Vue 的 Web 商城应用 背景介绍 首先介绍下在本文出现的几个比较重要的概念: 函数计算(Function Compute ...
- 轻松搭建基于 SpringBoot Vue 的 Web 商城应用
背景介绍 首先介绍下在本文出现的几个比较重要的概念: 函数计算(Function Compute): 函数计算是一个事件驱动的服务,通过函数计算,用户无需管理服务器等运行情况,只需编写代码并上传.函数 ...
- android mvvm框架搭建_轻松搭建基于JetPack组件的MVVM框架
原文链接:轻松搭建基于JetPack组件的MVVM框架 - 掘金 Brick github gitee 介绍 辅助android开发者搭建基于JetPack组件构建MVVM框架的注解处理框架.通过注解 ...
- 轻松构建基于 Serverless 架构的小程序
前言 自 2017 年第一批小程序上线以来,越来越多的移动端应用以小程序的形式呈现.小程序拥有触手可及.用完即走的优点,这大大降低了用户的使用负担,使小程序得到了广泛的传播.在阿里巴巴,小程序也被广泛 ...
- 教你轻松构建基于 Serverless 架构的小程序
前言 自 2017 年第一批小程序上线以来,越来越多的移动端应用以小程序的形式呈现.小程序触手可及.用完即走的优点,大大降低了用户的使用负担,也使小程序得到了广泛的传播.在阿里巴巴,小程序也被广泛地应 ...
最新文章
- [转载]项目风险管理七种武器-多情环
- 适合自学python的图书-清华学霸整理,Python入门到精通这几本书帮你快速入行
- [YTU]_2907( 类重载实现矩阵加法)
- java第七章多线程_第七章 多线程
- 实现ABAP条件断点的三种方式
- notes系统服务器地址,notes怎么连接服务器地址
- 监督学习 | SVM 之非线性支持向量机原理
- JavaScript学习总结(14)——12个令人惊叹的JavaScript技巧
- java上传ftp_java实现FTP文件上传与文件下载
- 【转】用photoshop批量修改图片尺寸
- ThreadLocal类及常用的线程安全类探究
- 西门子S7-1200、1500固件更新第三方设备GSD导入
- 计算机网络第三弹——数据链路层
- win10下装黑苹果双系统_【教程】黑苹果一键安装双系统EFI驱动
- 适合新手练习js解密的小站--飞卢小说网登录--第四期
- 计算机系新春祝福语,春节的祝福语
- ubuntu 中文版 man
- 9个学习资源分享给大家,总有你需要的干货!
- Windows Office 2019 很抱歉,此功能看似已中断,并需要修复
- Power Method for dominate eigenvalue
热门文章
- 012 分析技能冷却二叉树
- 【音效下载 / 编辑】网站
- Bootstrap的目录结构
- python计算召回率_序列标注的准确率和召回率计算
- log4日志内容换行_Linux 下 4 种实时监控日志文件的方法,总有一种适合你
- 47K Star 的SpringBoot+MyBatis+docker电商项目,附带超详细的文档!
- IntelliJ IDEA 推荐设置讲解
- Java 线程池(ThreadPoolExecutor)原理分析与使用
- 一天搞定CSS(扩展):CSS Hack
- Java阶段性测试--知识点:数组,面向对象,集合、线程,IO流