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

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

前言

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

函数计算资源使用:资源使用限制 - 函数计算 - 阿里云

部署静态网站到 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.js 和 dist 一起发布到函数计算上就行了。

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: httptype: 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 中设置的 region 是 cn-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)

参考链接:

  • 阿里云函数计算-产品简介(opens new window)
  • 资源使用限制(opens new window)
  • 自定义运行环境(opens new window)
  • 配置自定义域名(opens new window)
  • Serverless devs 官网(opens new window)

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

原文链接

本文为阿里云原创内容,未经允许不得转载。 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/510968.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一个好的科技公司logo长这样

简介:一个好的科技logo能体现出行业独有的专业性和技术优势,让你的公司科技感加满! 近年来,越来越多的初创公司崭露头角,其中科技互联网公司的比重非常高。小云也收到很多朋友的留言,询问科技类公司应该怎…

系列解读 SMC-R (二):融合 TCP 与 RDMA 的 SMC-R 通信 | 龙蜥技术

简介:本篇以 first contact (通信两端建立首个连接) 场景为例,介绍 SMC-R 通信流程。 文/龙蜥社区高性能网络SIG 一、引言 通过上一篇文章 《系列解读SMC-R:透明无感提升云上 TCP 应用网络性能(一)》我们了解到&…

北京大学、阿里巴巴成立联合实验室,聚焦人工智能理论和创新算法研究

9月17日,在北京大学智能学科建设20周年大会上,北京大学和阿里巴巴共同宣布成立“北大-阿里妈妈人工智能创新联合实验室” (以下简称实验室)。实验室将聚焦人工智能前沿领域的理论、方法与关键技术展开研究,为社会和企业…

智能开放搜索上线定制分词器

简介:智能开放搜索上线定制召回模型-定制分词器功能,满足各行业、垂类、业务特殊,对搜索有较高分词要求的客户,提升语义理解能力,精准召回用户搜索意图。 NLP算法在搜索链路中的应用 这是一个完整的从查询词到搜索结…

云端渲染时长1.58亿核小时,阿里云助力国漫巨制《新神榜:杨戬》提升视效

当前,追光动画新作《新神榜:杨戬》(以下简称“杨戬”)正在热映,制作水准再次升级。无论是“水墨特效太极图大战”,亦或神女婉罗的灵动舞姿,还是元神现身的超燃瞬间,都极具视觉震撼。…

如何开一场高效的迭代排期会 | 敏捷开发落地指南

简介:如何开一场高效的迭代排期会,高效落地敏捷开发,先从这3个关键活动着手,通过本文你将了解到什么是敏捷开发、什么是双周迭代、如何高效地开展排期会,以及如何在云效项目协作Projex 中落地排期会相关事宜。 摘要&a…

Linux 中如何获取文件的绝对路径

我们都知道,在命令行可以使用 pwd 命令来获取当前目录的完整路径(绝对路径):pwd那么,如何获取文件的绝对路径呢?有下列几种方法,可以打印文件的完整路径:readlinkrealpathfindls 和 …

EasyCV开源|开箱即用的视觉自监督+Transformer算法库

简介:EasyCV是阿里巴巴开源的基于Pytorch,以自监督学习和Transformer技术为核心的 all-in-one 视觉算法建模工具。EasyCV在阿里巴巴集团内支撑了搜索、淘系、优酷、飞猪等多个BU业务,同时也在阿里云上服务了若干企业客户,通过平台…

开源数据库为什么能捕获开发者的心?

【CSDN 编者按】开源数据库的重要性,早就不言而喻。早期的自由软件开发者和初创公司,很多都受益于开源数据库。伴随着曾经的初创公司羽翼逐渐丰满,它们的开发者文化渗透到整个生态系统中,更多的人开始关注这些初创公司采取的方法&…

“消息驱动、事件驱动、流 ”基础概念解析

简介:本文旨在帮助大家对近期消息领域的高频词“消息驱动(Message-Driven),事件驱动(Event-Driven)和流(Streaming)”有更清晰的了解和认知,其中事件驱动 EDA 作为 Gartn…

KubeVela 1.3 发布:开箱即用的可视化应用交付平台,引入插件生态、权限认证、版本化等企业级新特性

简介:得益于 KubeVela 社区上百位开发者的参与和 30 多位核心贡献者的 500 多次代码提交, KubeVela 1.3 版本正式发布。相较于三个月前发布的 v1.2 版本[1],新版本在 OAM 核心引擎(Vela Core),可视化应用交…

阿里云发布企业云原生IT成本治理方案:五大能力加速企业 FinOps 进程

简介:阿里云企业云原生 IT 成本治理方案助力企业落地企业 IT 成本治理的理念、工具与流程,让企业在云原生化的过程中可以数字化地实现企业 IT 成本管理与优化,成为 FinOps 领域的践行者与领先者。 作者:莫源 云原生技术与降本增…

阿里云数字化安全生产平台 DPS V1.0 正式发布

简介:数字化安全生产平台则帮助客户促进业务与 IT 的全面协同,从业务集中监控、业务流程管理、应急指挥响应等多维度来帮助客户建立完善专业的业务连续性保障体系。 作者:银桑、比扬 阿里云创立于 2009 年,是全球领先的云计算及…

玩转小程序压测

简介:小程序是移动互联网时代非常重要的流量入口。为了避免因系统性能瓶颈导致用户在使用过程中出现白屏、异常报错等问题影响用户体验,小程序在新功能上线前需要做好压力测试,评估出系统的承载能力,并以压测结果配置限流。让系统…

好的每日站会,应该这么开 | 敏捷开发落地指南

简介:高效落地敏捷开发,先从这3个关键活动着手。在敏捷迭代中,虽然迭代周期比较短,但依然需要对迭代过程进行有效跟进。如果在输入、过程、输出环节,没有要求,每日站会(迭代跟进)将会…

EasyNLP开源|中文NLP+大模型落地,EasyNLP is all you need

简介:EasyNLP背后的技术框架如何设计?未来有哪些规划?今天一起来深入了解。 作者 | 临在、岑鸣、熊兮 来源 | 阿里开发者公众号 一 导读 随着BERT、Megatron、GPT-3等预训练模型在NLP领域取得瞩目的成果,越来越多团队投身到超大…

内容社区行业搜索最佳实践

简介:社区内容通常包括UGC和PGC。由于关键词和内容多样性丰富、用词规范程度参差不齐,搜索引擎需要对关键词和内容进行智能语义分析,识别出用户真正的查询意图,找到最全面最相关的结果满足用户需求。本文将详细介绍如何通过“开放…

手把手,带你用数据做好迭代复盘改进 | 敏捷开发落地指南

简介:高效落地敏捷开发,先从这3个关键活动着手。带你用数据做好迭代复盘改进 ,数据说话,借助云效项目协作Projex 高效开展迭代复盘高效落地敏捷开发。 摘要:高效落地敏捷开发,先从这3个关键活动着手&#…

记一次网络相关的技术问题答疑

大家好,我是飞哥!前段时间飞哥参加了一期 OSChina 官方举办的「高手问答」栏目。在这个栏目里,我和 OSChina 的网友们以《深入理解 Linux 网络》为主题,对大家日常所关心的一些问题展开了一些技术探讨。今天我把这个活动中探讨的内…

Hexo博客框架—轻量、一令部署

简介:Hexo 是一个快速、简洁且高效的博客框架。Hexo 使用 Markdown(或其他渲染引擎)解析文章,在几秒内,即可利用靓丽的主题生成静态网页。Hexo支持Github Flavored Markdown的所有功能, 甚至可以整合Octopress的大多数…