前言
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
需要根據你的業務需求增加相關配置。
Fun使用規範可以參考:
https://github.com/alibaba/funcraft/blob/master/docs/specs/2018-04-03-zh-cn.md?spm=a2c4g.11186623.2.20.4e7a28feMo3r1N&file=2018-04-03-zh-cn.md注意:CodeUri執行你的編譯的釋出目錄下。
5. 使用fun工具部署
執行cd到應用程式的根目錄下執行:fun deploy,釋出成功如下:
6. 配置自定義域名
配置自定義域名可以參考文檔:
https://help.aliyun.com/document_detail/90722.html最後你這邊就可以測試了!
總結
函數計算有如下優勢:
- 無需采購和管理伺服器等基礎設施
- 專注業務邏輯的開發
- 提供日志查詢、性能監控、報警等功能快速排查故障
- 以事件驅動的方式觸發應用響應使用者請求
- 毫秒級别彈性伸縮,快速實作底層擴容以應對峰值壓力
- 按需付費。隻需為實際使用的計算資源付費,适合有明顯波峰波谷的使用者通路場景
- 除了上面所列的優勢,FC 可以做為 Web Backend,隻需要編寫一個函數實作傳統 Web 伺服器中的 conf 中的邏輯,就可以将一個完整的 Web 工程遷移到 FC ,進而從傳統的 Web 網站運維,監控等繁瑣的事務中解放出來。
最後歡迎大家通過掃碼加入我們使用者群中,搭建過程中有問題或者有其他問題可以在群裡提出來。
函數計算官網客戶群(11721331)。