如何使用 Serverless Devs 部署静态网站到函数计算

简介: 手把手教你:如何使用 Serverless Devs 部署静态网站到函数计算。

前言

公司经常有一些网站需要发布上线,对比了几款不同的产品后,决定使用阿里云的函数计算(FC)来托管构建出来的静态网站。 FC 弹性实例自带的500 Mb 存储空间对静态网站来说简直是太充足了 。


函数计算资源使用:https://help.aliyun.com/document_detail/51907.html


部署静态网站到 Custom Runtime 函数


假设我们现在有如下结构的前端工程:

/
├ dist/ 待部署的构建产物
│  └ index.html 
├ src/
└ package.json


step 1. 编写一个简单的 HTTP 服务器


Express 为例, 首先添加依赖到工程:

yarn add express

然后新建app.js并写入:

let Express = require("express");
let app = new Express();
app.use(Express.static('dist')); // 使用 dist 文件夹中的内容对外提供静态文件访问
app.use((req, res) => { res.redirect("/"); }); // 重定向无法处理的请求到网站的根目录
let port = 9000;
app.listen(port, () => { console.log(`App started on port ${port}`); }); // 监听 FC custom 运行时默认的 9000 端口


通过node app.js启动这个简单的 Express 服务器, 并访问http://localhost:9000确认/dist/index.html能被访问到。

接下来就是把app.jsdist一起发布到函数计算上就行了。


step 2. 编写 bootstrap


函数计算custom运行时要求用户提供一个bootstrap文件用于启动自定义的 HTTP 服务器, 所以我们需要在根目录下创建这个文件:

#! /bin/bash
node app.js


注意第一行的 #! /bin/bash是必须的, 不然函数计算不知道该用哪一个解释器来执行脚本中的内容. Windows 用户记得把这个文件的换行符从/r/n改成/n, 不然会遇到函数计算启动超时的问题。


step 3. 安装 @serverless-devs/s 并编写 s.yaml


添加@serverless-devs/s命令行工具到工程:

yarn add @serverless-devs/s -D

然后在根目录下创建一个基础的s.yaml配置文件:

# https://github.com/devsapp/fc/blob/main/docs/zh/yaml/
edition: 1.0.0
name: my-awesome-website-project
services:
  my-service: # 任意的名称
    component: devsapp/fc    # 使用 fc 组件
    props:
      region: cn-shenzhen    # 部署到任意的可用区, 例如深圳.
      service:
        name: my-awesome-websites  # 深圳可用区的 my-awesome-websites 服务
      function:
        name: www-example-com   # my-awesome-websites 服务下的一个函数
        runtime: custom    # 使用 custom 运行环境
        handler: dummy-handler    # 由于使用了 custom 运行环境, 所以这里可以随便填
        codeUri: ./     # 部署当前文件夹下的全部内容
      triggers:
        - name: http
          type: http    # 创建一个 HTTP 类型的触发器, 以便客户端可以通过 HTTP 协议进行访问
          config:
            authType: anonymous  # 允许匿名访问
            methods: [ HEAD, GET ]  # 静态网站只需要处理 HEAD 和 GET 请求就够了


step 4. 部署到函数计算


配置好 AccessKey 和 AccessSecret 后, 执行命令:

s deploy

你的网站就部署上去了。


接下来就是配置自定义域名了, 配置好以后就可以通过你自己的域名访问到这个网站了。


step 5. 配置自定义域名


以自定义域名deploy-static-website-to-fc.example.dengchao.fun为例;


首先添加 CNAME 记录, 解析值填写${UID}.${REGION}.fc.aliyuncs.com. 因为我们的s.yaml中设置的regioncn-shenzhen, 所以对应的值就是 xxxxxx.cn-shenzhen.fc.aliyuncs.com.



接下来设置函数计算控制台上的自定义域名:



访问一下试试看: http://deploy-static-website-to-fc.example.dengchao.fun(opens new window)


样本工程


本文中的样本工程已经上传到 GitHub:

https://github.com/DevDengChao/deploy-static-website-to-fc-example(opens new window)


参考链接:



本文作者:邓超(Serverless Devs 开源贡献者)

更多内容关注 Serverless 微信公众号(ID:serverlessdevs),汇集 Serverless 技术最全内容,定期举办 Serverless 活动、直播,用户最佳实践。

相关实践学习
【AI破次元壁合照】少年白马醉春风,函数计算一键部署AI绘画平台
本次实验基于阿里云函数计算产品能力开发AI绘画平台,可让您实现“破次元壁”与角色合照,为角色换背景效果,用AI绘图技术绘出属于自己的少年江湖。
从 0 入门函数计算
在函数计算的架构中,开发者只需要编写业务代码,并监控业务运行情况就可以了。这将开发者从繁重的运维工作中解放出来,将精力投入到更有意义的开发任务上。
相关文章
|
6月前
|
存储 编解码 Serverless
Serverless架构下的OSS应用:函数计算FC自动处理图片/视频转码(演示水印添加+缩略图生成流水线)
本文介绍基于阿里云函数计算(FC)和对象存储(OSS)构建Serverless媒体处理流水线,解决传统方案资源利用率低、运维复杂、成本高等问题。通过事件驱动机制实现图片水印添加、多规格缩略图生成及视频转码优化,支持毫秒级弹性伸缩与精确计费,提升处理效率并降低成本,适用于高并发媒体处理场景。
343 0
|
8月前
|
人工智能 开发框架 安全
Serverless MCP 运行时业界首发,函数计算让 AI 应用最后一公里提速
作为云上托管 MCP 服务的最佳运行时,函数计算 FC 为阿里云百炼 MCP 提供弹性调用能力,用户只需提交 npx 命令即可“零改造”将开源 MCP Server 部署到云上,函数计算 FC 会准备好计算资源,并以弹性、可靠的方式运行 MCP 服务,按实际调用时长和次数计费,欢迎你在阿里云百炼和函数计算 FC 上体验 MCP 服务。
736 30
|
8月前
|
人工智能 开发框架 运维
Serverless MCP 运行时业界首发,函数计算让 AI 应用最后一公里提速
Serverless MCP 运行时业界首发,函数计算支持阿里云百炼 MCP 服务!阿里云百炼发布业界首个全生命周期 MCP 服务,无需用户管理资源、开发部署、工程运维等工作,5 分钟即可快速搭建一个连接 MCP 服务的 Agent(智能体)。作为云上托管 MCP 服务的最佳运行时,函数计算 FC 为阿里云百炼 MCP 提供弹性调用能力。
 Serverless MCP 运行时业界首发,函数计算让 AI 应用最后一公里提速
|
9月前
|
人工智能 Cloud Native Serverless
Serverless Devs 官网全新升级,Serverless+AI 重磅来袭
Serverless Devs 官网全新升级,Serverless+AI 重磅来袭
175 3
|
11月前
|
人工智能 Cloud Native Serverless
Serverless Devs 官网全新升级,Serverless+AI 重磅来袭
Serverless Devs 官网迎来全新升级,主站以 AI 应用开发的叙事透出项目特性和解决方案。应用中心(Registry)将各类热门 AI 应用模版、实用 AI 工具以及 AI 工作流等呈现给用户。本次升级主题为“一站式 AI/函数/应用开发”,希望为开发者提供更加便利的应用模版搜索和展示服务,本文将对本次升级的三大看点进行整理,欢迎您来体验!
|
机器学习/深度学习 监控 Serverless
无服务器架构(Serverless)
无服务器架构(Serverless)
876 4
|
缓存 前端开发 JavaScript
|
2月前
|
人工智能 运维 Kubernetes
Serverless 应用引擎 SAE:为传统应用托底,为 AI 创新加速
在容器技术持续演进与 AI 全面爆发的当下,企业既要稳健托管传统业务,又要高效落地 AI 创新,如何在复杂的基础设施与频繁的版本变化中保持敏捷、稳定与低成本,成了所有技术团队的共同挑战。阿里云 Serverless 应用引擎(SAE)正是为应对这一时代挑战而生的破局者,SAE 以“免运维、强稳定、极致降本”为核心,通过一站式的应用级托管能力,同时支撑传统应用与 AI 应用,让企业把更多精力投入到业务创新。
469 30
|
3月前
|
存储 人工智能 Serverless
函数计算进化之路:AI 应用运行时的状态剖析
AI应用正从“请求-响应”迈向“对话式智能体”,推动Serverless架构向“会话原生”演进。阿里云函数计算引领云上 AI 应用 Serverless 运行时技术创新,实现性能、隔离与成本平衡,开启Serverless AI新范式。
498 12
|
8月前
|
SQL 分布式计算 Serverless
鹰角网络:EMR Serverless Spark 在《明日方舟》游戏业务的应用
鹰角网络为应对游戏业务高频活动带来的数据潮汐、资源弹性及稳定性需求,采用阿里云 EMR Serverless Spark 替代原有架构。迁移后实现研发效率提升,支持业务快速发展、计算效率提升,增强SLA保障,稳定性提升,降低运维成本,并支撑全球化数据架构部署。
889 56
鹰角网络:EMR Serverless Spark 在《明日方舟》游戏业务的应用

热门文章

最新文章

相关产品

  • 函数计算