轻松搭建基于 Serverless 的 Egg.js Web 应用

本文涉及的产品
Serverless 应用引擎 SAE,800核*时 1600GiB*时
函数计算FC,每月免费额度15元,12个月
简介:

首先介绍下在本文出现的几个比较重要的概念:

函数计算(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 开发,性能优异
  • 框架稳定,测试覆盖率高
  • 渐进式开发

示例效果预览

本文涉及到的应用示例部署后的链接,点击预览效果:

环境准备

首先按照 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

总结

本文主要介绍了如何将 Egg.js 应用部署到函数计算。相比较与传统的部署方法,不仅没有更复杂,还省略了购买机器、安装配置 Node、Npm 的步骤。可以实现,将传统的 Egg.js 应用在本地开发完成后,一键部署到远端直接用于生产,并拥有了弹性伸缩、按量付费、免运维等特性。

如果您在迁移您的应用过程中遇到了问题,欢迎加入我们的 dingding 群 11721331 反馈。

相关实践学习
【文生图】一键部署Stable Diffusion基于函数计算
本实验教你如何在函数计算FC上从零开始部署Stable Diffusion来进行AI绘画创作,开启AIGC盲盒。函数计算提供一定的免费额度供用户使用。本实验答疑钉钉群:29290019867
建立 Serverless 思维
本课程包括: Serverless 应用引擎的概念, 为开发者带来的实际价值, 以及让您了解常见的 Serverless 架构模式
目录
相关文章
|
JavaScript 应用服务中间件 nginx
Nginx - 同一域名配置多个 Vue 项目(支持Webpack、Uniapp)
Nginx - 同一域名配置多个 Vue 项目(支持Webpack、Uniapp)
862 0
Nginx - 同一域名配置多个 Vue 项目(支持Webpack、Uniapp)
|
缓存 JavaScript 前端开发
Webpack从0到1搭建Vue3项目
Vue是当下非常火热的前端框架,选择Vue-Cli是大部分人主流的选择,因为其快捷、便利可以让我们一键生成整个项目模板,如果需要自定义配置下从0开始搭建一个Vue项目,其实也不难,接下来就来记录一下。
182 1
|
前端开发
前端学习笔记202303学习笔记第四天-Vue3.0-webpack了解企业级项目打包发布
前端学习笔记202303学习笔记第四天-Vue3.0-webpack了解企业级项目打包发布
61 0
|
JavaScript 前端开发
【Vue 开发实战】实战篇 # 28:如何自定义Webpack和Babel配置
【Vue 开发实战】实战篇 # 28:如何自定义Webpack和Babel配置
169 0
【Vue 开发实战】实战篇 # 28:如何自定义Webpack和Babel配置
|
存储 缓存 JSON
Vue——10 - webpack打包保姆级教程01
打包js、json、css、less、html、背景图片以及图片、字体(Font)文件,devsever,生产环境配置以及css的兼容写法
375 0
|
JavaScript 前端开发
基于 webpack 项目接入 vite 你可能需要注意的点
基于 webpack 项目接入 vite 你可能需要注意的点
430 0
|
运维 JavaScript 前端开发
海纳百川无所不容,Win10环境下使用Docker容器式部署前后端分离项目Django+Vue.js
随着现代化产品研发的不断推进,我们会发现,几乎每个产品线都会包含功能各异的服务,而且服务与服务之间存在也会存在着错综复杂的依赖和被依赖关系,这就会带来一个世界性难题,项目部署的时候需要运维来手动配制服务之间通信的协议和地址,稍有不慎就会导致服务异常,同时如果服务器因为坏道或者其他原因导致更换物理机,重新部署新环境的成本也会非常之高。因此,我们就会寄希望于Docker这种的容器技术可以让我们构建产品所需要的所有的服务能够迅速快捷的重新部署,并且可以根据需求做横向扩展,且能够保证稳定的容灾性,在出现问题的时候可以利用守护进程自动重启或者启动容灾备份。
海纳百川无所不容,Win10环境下使用Docker容器式部署前后端分离项目Django+Vue.js
|
前端开发
《基于webpack和npm的前端组件化实践》电子版地址
基于webpack和npm的前端组件化实践
67 0
《基于webpack和npm的前端组件化实践》电子版地址
|
前端开发
前端工程化-cdn-私服-组件库-云-devops-cnpm-webpack
前端工程化-cdn-私服-组件库-云-devops-cnpm-webpack
89 0
前端工程化-cdn-私服-组件库-云-devops-cnpm-webpack
|
JavaScript 前端开发
vue-cli搭建简单demo详细步骤之借助webpack搭建
vue-cli搭建简单demo详细步骤之借助webpack搭建
99 0

热门文章

最新文章

相关产品

  • 函数计算