前言
Custom Runtime 就是自定义的执行环境, 用户基于 Custom Runtime 可以完成以下目标:
- 可以随心所欲持定制个性化语言执行环境(例如 golang、lua、ruby)以及各种语言的小版本(例如python3.7、Nodejs12)等,打造属于自己的自定义runtime;
- 现有的 web 应用或基于传统开发 web 项目基本不用做任何改造,即可将项目一键迁移到函数计算平台。
案例概览
在本教程中,我们讲解如何利用函数计算 Custom Runtime 一步一步来构建 Web 的 Server 端,该案例是把一个 .Net Core 2.1 MVC 部署到函数计算中。本教程是基于mac系统进行的。
1. 创建.Net Core 2.1 MVC 应用
txd123deMacBook-Air:Dotnet txd123$ dotnet new mvc -n MyCMS
2. 修改默认端口
在这个IWebHostBuilder中找到一个叫做UseUrls的方法,从注解中可以看得出来让WebHost监听指定的端口号,截图如下:
因为Custom Runtime 环境固定监听的端口为:9000 ,所以你需要来指定一下该端口,改完之后截图如下:
3. 发布.NET Core 应用程序
因为函数计算服务器都是linux系统的,所以发布程序的时候需要指定linux系统平台。
步骤如下:
1.生成依赖项,dotnet restore
2.生成项目,dotnet build
3.发布项目,dotnet publish -r linux-x64 -c Release
4.在你发布的目录下(./bin/Release/netcoreapp2.1/linux-x64/publish/),找到和你应用程序名称相同的二进制流文件,改名为:bootstrap,然后赋予可执行权限。
4. 在应用程序的根目录下创建template.yml文件
创建template.yml文件使用fun工具部署,内容如下:
ROSTemplateFormatVersion: '2015-09-01'
Transform: 'Aliyun::Serverless-2018-04-03'
Resources:
demo:
Type: 'Aliyun::Serverless::Service'
Properties:
Description: 'helloworld'
netcoreapp3:
Type: 'Aliyun::Serverless::Function'
Properties:
Handler: index.handler
Runtime: custom
CodeUri: './bin/Release/netcoreapp2.1/linux-x64/publish/'
Events:
httpTrigger:
Type: HTTP
Properties:
AuthType: ANONYMOUS
Methods:
- GET
- POST
- PUT
需要根据你的业务需求增加相关配置。
注意:CodeUri执行你的编译的发布目录下。
5. 使用fun工具部署
执行cd到应用程序的根目录下执行:fun deploy,发布成功如下:
6. 配置自定义域名
配置自定义域名可以参考文档:https://help.aliyun.com/document_detail/90722.html
最后你这边就可以测试了!
总结
函数计算有如下优势:
- 无需采购和管理服务器等基础设施
- 专注业务逻辑的开发
- 提供日志查询、性能监控、报警等功能快速排查故障
- 以事件驱动的方式触发应用响应用户请求
- 毫秒级别弹性伸缩,快速实现底层扩容以应对峰值压力
- 按需付费。只需为实际使用的计算资源付费,适合有明显波峰波谷的用户访问场景
- 除了上面所列的优势,FC 可以做为 Web Backend,只需要编写一个函数实现传统 Web 服务器中的 conf 中的逻辑,就可以将一个完整的 Web 工程迁移到 FC ,从而从传统的 Web 网站运维,监控等繁琐的事务中解放出来。
最后欢迎大家通过扫码加入我们用户群中,搭建过程中有问题或者有其他问题可以在群里提出来。
函数计算官网客户群(11721331)。