11

阿里云函数计算(serverless)部署ThinkJS

 3 years ago
source link: https://zhuanlan.zhihu.com/p/345590587
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

阿里云函数计算(serverless)部署ThinkJS

程序员、入门吉他手

ThinkJS 是一款企业级的 Node.js Web 开发框架,致力于集成项目最佳实践,规范项目让企业级团队开发变得更加简单,更加高效。 它基于 Koa 2.0 开发,兼容 Koa 的所有 Middleware。 内核小巧,支持 Adapter, Extend 等多种插件扩展方式,框架内的大部分功能也是通过这些方式进行扩展的。 性能优异,支持 TypeScript。
函数计算(Function Compute)是一个事件驱动的全托管计算服务。通过函数计算,您无需管理服务器等基础设施,只需编写代码并上传。函数计算会为您准备好计算资源,以弹性、可靠的方式运行您的代码。更棒的是,您只需要为代码实际运行消耗的资源付费 - 代码未运行则不产生费用。

v2-35cc8c6676a243464de7570cb729a7f8_720w.jpg应用场景:web后端服务

阿里云的函数计算支持多种语言的开发,下面是一些常见的语言:

v2-e7d0d07bfd2f94528998222fc6595022_720w.jpg

详细可见:

开发语言列表 - 函数计算 - 阿里云​help.aliyun.com

我们使用think-cli创建一个新ThinkJS项目

thinkjs new helloTest;

初始化完毕之后这里需要注意,函数计算官方建议使用Funcraft工具安装依赖。如果是node.js项目,Funcraft工具可以很好的解决node_modules文件夹过大的问题,尤其是windows系统。这里折腾了好久。

函数计算要求您上传的代码包中包含了所有的依赖。不同的语言包管理机制不同,例如在Node.js中,您可以使用npm将依赖的包安装到代码目录中并打包上传。您可以使用函数计算的命令行工具fcli安装依赖并打包,在各种Runtime中增加三方包或者动态链接库。

函数计算的运行环境中所依赖的包如何自动安装? - 函数计算 - 阿里云​help.aliyun.com使用fun install安装第三方依赖​help.aliyun.com

使用Funcraft工具安装依赖的必要前提是在项目文件夹执行初始化命令:

fun init

这个时候会让我们选择初始化的模板:

这里我们选择:http-trigger-nodejs12,然后回车确认选择。这个时候会提示是否覆盖,直接回答 yes。

有关初始化的更多介绍请参考:

使用 fun init 初始化项目​help.aliyun.com

工具会自动生成项目必要的文件:

其中template.yml是重要文件,目前暂时不需要了解里面的内容。

使用fun命令安装node.js依赖

fun install

至此项目初始化已经完毕,本地测试一下:

node ./development.js

阿里云的函数计算有很多限制,比如读写目录只能是"/tmp",应用的监听端口必须是9000,应用需要在30秒内启动完毕等等。参考:

函数计算Custom Runtime简介​help.aliyun.com

所以打包的时候需要做一些处理:

所有的读写目录必须设置到/tmp下,函数计算环境当前目录只读,不可写

  1. src/config/adapter.js 里面把除了exports.view节点,其他下面的各种path全部设置为“/tmp”目录。
  2. production.js 设置
 RUNTIME_PATH: path.join('/tmp', 'runtime')

3. src/config/config.js/config.production.js 修改端口和超时时间

module.exports = {
  workers: 1,
  port: 9000,
  startServerTimeout: 900000,
}

修改完成,进入项目文件夹全选(一定要带上node_modules)压缩成zip。这里需要注意,压缩包的大小最好不超过50M,超过50M还需要使用阿里云的NAS文件存储。

打开阿里云函数计算控制台,在应用中心新建一个node.js应用:

上传代码这里选择“代码包”,启动命令

点击部署

稍微等待一下

成功之后会有一个默认的临时域名,可供我们访问

访问该域名

出现这个页面意味着你的部署没有问题

至此,大功告成!

函数计算提供了很多方便的功能再次列举其一:

服务及函数 中有一个 代码执行的在线编辑器,我们可以通过线上代码编辑完成一些小功能修改、bug修复等工作。

v2-e13c5466c88a17ec64b8355e366e7789_720w.jpg

初次接触node.js项目,多少有些不熟练。各位看官多多指点。折腾这个费了不少功夫,写下来让其他人少走弯路。

但文章、个人精力有限内容覆盖不全,更多请参考官方文档,这里有很详细的介绍和示例。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK