一首歌的时间,手把手搭建基于FC的网站

部署网站 说好不哭

在接触serverless架构之前,我们如果想实现上线一个Web网站,就要在开发前期经过操作很多冗杂但又必须的步骤,不少小白可谓是快速的从入门到退坑。

编写代码,部署应用,部署数据库,申请域名,申请SSL证书,域名备案,到最终上线起码要几天时间。(在阿里云上申请自助备案,快的管局可能需要一到两周完成全部备案流程)

即使是使用容器化大幅减少运维和编排工作,那也会面临不兼容和不稳定的情况。

如下图,一个你以为很“稳定“的容器,可能会有出乎意料的环境错误

(ps:我这次使用语雀编辑器上传动图gif报错了,所以只能嵌入HTML代码使用外部图床了)

而且,在技术之外,你会发现服务器、域名、证书加起来就是一笔不菲的开销(快来参加阿里云新用户飞天会员活动!),在有了建个人站的打算之后也可能被价格劝退。

Serverless(server +‎ -less),顾名思义——“无服务器”。但它不是真正的不用服务器设施,更贴切的是无传统服务器架构的那些烦恼。我以个人站长的视角,带大家简单的体验下使用阿里云Serverless产品——函数计算FC来开发网站的具体流程。看看通过实操来感受Serverless架构的真实使用体验。

我是如此相信 Serverless

根据主流释义,Serverless不是表示没有服务器,而表示当您在使用 Serverless 时,您无需关心底层资源,也无需登录服务器和优化服务器,只需关注最核心的代码片段,即可跳过复杂的、繁琐的基本工作。核心的代码片段完全由事件或者请求触发,平台根据请求自动平行调整服务资源。Serverless 拥有近乎无限的扩容能力,空闲时,不运行任何资源。代码运行无状态,可以轻易实现快速迭代、极速部署。

它的大致执行流程如下图:

图片来源:https://help.aliyun.com/document_detail/52895.html

所以,Serverless其实是对传统云上架构的革新,开发者只需要编写最核心的代码,比如一个请求过来如何处理和返回对应的数据。其他的软硬件服务器部署相关的事情,都交给云服务商。这节省了大量资源,仅有服务被使用时(比如网站被访问),才会计算资源消耗,大幅度降低了成本。并且具有无限无感扩容的能力,再也不用担心访问量过大服务器宕机。

也许你只是想搭建一个博客,以前可能需要买一年的服务器,起码一年开销几百元。使用阿里云函数计算FC,如果你的网站访问量并不是很高,可能一年只要花费十几块钱,甚至在每个月的免费额度的加持之下你可以几乎不花钱!

部署网站 简单点

我们打开阿里云函数计算FC控制台页面,初次使用你需要开通服务并完成RAM授权,这不用担心,跟着流程下一步即可:https://fcnext.console.aliyun.com/overview

这是使用FC使用的流程图,你可以清晰的看到上线一个Web服务有那些步骤:

首先,我们点击左侧导航栏,进入应用子页面:

选择Flask应用模板案例:

Flask是一个使用 Python 编写的轻量级 Web 应用框架。其 WSGI 工具箱采用 Werkzeug ,模板引擎则使用 Jinja2 。Flask使用 BSD 授权。

应用部署建议使用仓库部署,使用这种方式将会Push 代码到您指定的代码仓库中,然后触发流水线部署;后期更新项目时,可以直接将代码Push 到远程仓库进行安全发布,总体更加灵活可控。

使用这种方式需要绑定仓库账户信息。

除了仓库授权,在这里你还可以设置一些有关部署的基本信息,也可以直接下一步,我就是这样做的。

大概等待15秒,一个Serverless服务就创建部署完成了:

此时,你可以直接在基本信息中访问函数计算提供的域名来访问默认站点:

到这里其实就已经实现了一个网站上线了。

不过先别急,在应用详情页面的最下方,你可以看到这个应用所使用的函数资源并在其中编写函数代码。

代码空间默认有了一个最基本的Flask框架模板,你可以在此基础上进行开发。

如上所述,访问FC提供的域名你会发现,一个基础的Web服务器就在公网环境下部署成功了。不需要买域名和SSL证书,不需要SSH登录服务器部署环境和软件,甚至不需要手动PUSH代码 。

名副其实,无标题党,一分钟部署一个网站。

(别的应用有相似的上线逻辑,在应用中心提供了一些完整的小应用,你可以直接使用)

小实践

学习阿里云函数计算FC使用的相关知识之后,这首歌剩下的时间可以完成个小实践。

实践目标:

实现RSS阅读功能的Web站点

实现步骤:

  • 安装解析工具
  • 写入装饰器和调用函数
  • 写入HTML页面

背景知识:

RSS(Really Simple Syndication,简易信息聚合)

这是一种描述和同步网站内容的格式你可以认为是一种定制个性化推送信息的服务。它能够解决你漫无目的的浏览网页的问题。它不会过时,信息越是过剩,它的意义也越加彰显。让自己关注的信息主动来找自己,且这些信息都是用户自己所需要的,这就是RSS的意义。

feedparser

这是一个Python的Feed解析库,可以处理RSS ,CDF,Atom 。使用它我们可从任何 RSS 或 Atom 订阅源得到标题、链接和文章的条目。

简要过程:

1.安装解析工具

这里使用的解析工具是feedparser它的feedparser.parse()函数提供了解析RSS URL的功能,它可以将RSS连接解析为一个字典feed 对应一个字典,每个entry包含一个文章的标题,作者,链接等内容。

使用pip3 install feedparser(或pip install feedparser)安装feedparser:

2.根据feedparser文档说明写入必要的装饰器和调用函数,示例文件:

其中,render_template()函数是flask函数,它从模版文件夹templates中呈现给定的模板上下文。我们html文件就要放在模版文件夹templates中,本例html文件为../templates/rss.html

from flask import Flask, render_template
import feedparserapp = Flask(__name__)@app.route('/')
def index():return render_template('index.html')@app.route('/rss', methods=["GET"])
def rss():feed = feedparser.parse(request.args.get('rssurl'))return render_template('rss.html', entries=feed.entries)if __name__ == "__main__":app.run(host="0.0.0.0", port=9000)

3.写入HTML页面

根据解析出来的内容编写简单的HTML前端页面,示例文件:../templates/rss.html

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>RSS</title>
<!--引入外部CSS-->
<link href="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/5.0.2/css/bootstrap.min.css" rel="stylesheet">
<!--引入外部JavaScript-->
<script src="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/5.0.2/js/bootstrap.min.js"></script>
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.slim.min.js"></script>
</head><body><div class="container-fluid"><div class="row-fluid"><div class="span12"><!--导航栏--><nav class="navbar navbar-expand-lg navbar-light bg-light"><div class="container-fluid"><a class="navbar-brand" href="#">RSS</a><button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation"><span class="navbar-toggler-icon"></span></button><div class="collapse navbar-collapse" id="navbarSupportedContent"><ul class="navbar-nav me-auto mb-2 mb-lg-0"><li class="nav-item"><a class="nav-link active" aria-current="page" href="#">首页</a></li></ul><form class="d-flex"><input class="form-control me-2" type="search" placeholder="Search" aria-label="Search"><button class="btn btn-outline-success" type="submit">搜索</button></form></div></div></nav><!--内容列表--><div class="accordion" id="accordionExample">{% for entry in entries %}<div class="accordion-item"><h2 class="accordion-header" id="heading{{ loop.index }}"><button class="accordion-button" type="button" data-bs-toggle="collapse" data-bs-target="#collapse{{ loop.index }}" aria-expanded="false" aria-controls="collapse{{ loop.index }}">{{ entry.title }} | {{ entry.published }}</button></h2><div id="collapse{{ loop.index }}" class="accordion-collapse collapse" aria-labelledby="heading{{ loop.index }}" data-bs-parent="#accordionExample"><div class="accordion-body">{{ entry.summary | safe }}</div></div></div>{% endfor %}</div></div></div></div>
</body>
</html>

文件创建完成后点击保存和部署,在应用详情页找到并访问FC给我们分配的域名。

效果:

使用方法:

我们使用GET请求方式request.args.get('rssurl')获取参数,因此在URL后面传入需要解析的RSS订阅地址参数就可以解析源并渲染成相应的阅读样式。

例如: /rss?rssurl=<解析源>

示例:http://<EIP>/rss?rssurl=https://jandan.net/feed

综上,通过Serverless函数计算FC我们只需要依靠feedparser库相应的五行代码就完成了这个小实践。

总结

我们可以真切的感受到,使用Serverless函数计算开发网站与传统架构开发有大不同,它撇去了传统开发中那些冗杂但是又不经常会去修改的配置和流程,让开发者专注于业务逻辑的开发。并且我们可以不用考虑服务器的选型,它做到了真正的弹性和灵活

未来,我想我会再认真研究一下云原生思想和Serverless函数计算,乘着这股新风实现更加灵活和更复杂的业务应用。

更多

feedparser官网 —— https://pypi.org/project/feedparser/

feedparser文档 ——https://feedparser.readthedocs.io/en/latest/

原文链接

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

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

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

相关文章

PolarDB-X 源码解读:事务的一生

概述 本文将主要解读 PolarDB-X 中事务部分的相关代码&#xff0c;着重解读事务的一生在计算节点&#xff08;CN&#xff09;中的关键代码&#xff1a;从开始、执行、到最后提交这一整个生命周期。 在阅读本文前&#xff0c;强烈推荐先阅读与 PolarDB-X 事务系统相关的文章&a…

阿里云云原生一体化数仓 — 湖仓一体新能力解读

一、基于 MaxCompute 的湖仓一体架构更新 基于MaxCompute 云数据仓库的湖仓一体架构近期进行架构升级。了解 MaxCompute 的同学可能比较清楚&#xff0c;MaxCompute 有两层结构&#xff0c;需要先创建 Project &#xff0c;在 Project 里面创建表、资源等。传统数据库&#xf…

DM8168 DVRRDK软件框架研究

DM8168 DVRRDK软件框架研究 2016-07-26 11:39 72人阅读 评论(0) 收藏 举报分类&#xff1a;DM8168&#xff08;18&#xff09; Netra&#xff08;DM8168&#xff09;处理器是个多核处理器&#xff0c;每个核之间相互独立却又相互关联&#xff0c;如何高效简洁地利用每个核完成一…

基于函数计算自定义运行时快速部署一个 Springboot 项目

什么是函数计算&#xff1f; 函数计算是事件驱动的全托管计算服务。使用函数计算&#xff0c;您无需采购与管理服务器等基础设施&#xff0c;只需编写并上传代码。函数计算为您准备好计算资源&#xff0c;弹性地可靠地运行任务&#xff0c;并提供日志查询、性能监控和报警等功…

FFmpeg源代码简单分析:avformat_open_input()

登录 | 注册 收藏成功 确定收藏失败&#xff0c;请重新收藏 确定标题 标题不能为空网址 标签 摘要 公开 取消收藏 查看所有私信查看所有通知 暂没有新通知返回通知列表 下一条 上一条 分享资讯传PPT/文档提问题写博客传资源创建项目创建代码片baidu_34732018编辑自我介绍&…

硬之城携手阿里云 Serverless 应用引擎(SAE)打造低代码平台

硬之城成立于 2015 年&#xff0c;是一家以电子元器件 BOM 整体供应为核心&#xff0c;为中小科技型硬件企业提供 BOM 标准化、BOM 报价、BOM 采购、BOM 交付和 SMT 一站式 PCBA 服务的电子产业数字供应链与智能制造平台。 电子产业互联网的需求是离散和复杂多变的&#xff0c…

阿里云 Serverless 异步任务处理系统在数据分析领域的应用

异步任务处理系统中的数据分析 数据处理、机器学习训练、数据统计分析是最为常见的一类离线任务。这类任务往往都是经过了一系列的预处理后&#xff0c;由上游统一发送到任务平台进行批量训练及分析。在处理语言方面&#xff0c;Python 由于其所提供的丰富的数据处理库&#x…

OSD

1. 工作原理 1.1 Process link OSD link是所谓的process link。即&#xff0c;该link没有output queue&#xff0c;而是直接在input queue的buffer上做操作。其数据流向如下图 1. prev link将frame buffer送给process的input queue 2. process link在input queue中取出buffer&a…

代码重构:面向单元测试

重构代码时&#xff0c;我们常常纠结于这样的问题&#xff1a; 需要进一步抽象吗&#xff1f;会不会导致过度设计&#xff1f;如果需要进一步抽象的话&#xff0c;如何进行抽象呢&#xff1f;有什么通用的步骤或者法则吗&#xff1f; 单元测试是我们常用的验证代码正确性的工具…

如何把 thinkphp5 的项目迁移到阿里云函数计算来应对流量洪峰?

1. 为什么要迁移到阿里云函数&#xff1f; 我的项目是一个节日礼品领取项目&#xff0c;过节的时候会有短时间的流量洪峰。平时访问量很低。之前的架构是购买的阿里云alb多台ecs云msyql云redis。最大的问题就是成本问题。平时流量低的时候ecs成本也无法缩减。 阿里云函数计算…

[总结]视音频编解码技术零基础学习方法

0. 生活中的视音频技术 平时我们打开电脑中自己存电影的目录的话&#xff0c;一般都会如下图所示&#xff0c;一大堆五花八门的电影。&#xff08;其实专业的影视爱好者一概会把影视文件分门别类的&#xff0c;但我比较懒&#xff0c;一股脑把电影放在了一起&#xff09; 因…

Helm Chart 多环境、多集群交付实践,透视资源拓扑和差异

Helm Charts[1] 如今已是一种非常流行的软件打包方式&#xff0c;在其应用市场中你可以找到接近一万款适用于云原生环境的软件。然后在如今的混合云多集群环境中&#xff0c;业务越来越依赖部署到不同的集群、不同的环境、同时指定不同的配置。再这样的环境下&#xff0c;单纯依…

跨全端 SDK 技术演进

关于为什么要选择跨平台的实现方式 Write Once&#xff0c; Run AnyWhere. 越来越多的业务需求都有统一的业务诉求&#xff0c;按照传统的方式&#xff0c;在开发、测试、维护上的成本都是乘以N的&#xff0c;体验也很难做到一致性&#xff0c;特别是复杂的业务&#xff0c;实…

ffmpeg开发指南(使用 libavformat 和 libavcodec)

ffmpeg开发指南&#xff08;使用 libavformat 和 libavcodec&#xff09;Ffmpeg 中的Libavformat 和 libavcodec库是访问大多数视频文件格式的一个很好的方法。不幸的是&#xff0c;在开发您自己的程序时&#xff0c;这套库基本上没有提供什么实际的文档可以用来作为参考&#…

SKG 渠道中台借助 SAE + 大禹打造云原生 DevOPS,提效 60%

项目背景 未来穿戴健康科技股份有限公司&#xff08;SKG&#xff09;是一家专注为个人与家庭提供智能可穿戴健康产品的高新技术企业&#xff0c;专业从事 SKG 品牌可穿戴健康产品和便携式健康产品的研发、设计、生产及销售。 随着市场需求的迅速变化&#xff0c;SKG 的 IT 系…

资源预测数字模型搭建思路分享

业务背景 资源预测是项目管理过程中的一个环节&#xff0c;即通过搭建合适的数据模型&#xff0c;对未来的项目人力资源投入情况进行有效预测&#xff0c;可以更加精准的完成项目资源规划并能及时发现问题进行相关调整。 难题和痛点 PM排期时没有有效数据支撑资源使用情况&a…

视频压缩:I帧、P帧、B帧

/************************************************************************************************************************************************************************************** **说明&#xff1a; 1.本文通过整理而来&#xff0c;集多个高手的精华&a…

浅谈大数据背景下数据库安全保障体系

现阶段大数据产业的快速发展创造了极大的经济效益&#xff0c;大数据的出现推动了社会经济发展&#xff0c;但是随之而来的数据库安全问题也引起了学者对大数据信息安全问题的反思。大数据时代下的信息与隐私安全问题已经成为全球性重点关注的问题&#xff0c;为了能够更有效地…

EasyNLP 中文文图生成模型带你秒变艺术家

导读 宣物莫大于言&#xff0c;存形莫善于画。 --【晋】陆机 多模态数据&#xff08;文本、图像、声音&#xff09;是人类认识、理解和表达世间万物的重要载体。近年来&#xff0c;多模态数据的爆炸性增长促进了内容互联网的繁荣&#xff0c;也带来了大量多模态内容理解和生成…

阿里本地生活全域日志平台 Xlog 的思考与实践

1. 背景 程序员学习每一门语言都是从打印“hello world”开始的。这个启蒙式的探索&#xff0c;在向我们传递着一个信息&#xff1a;“当你踏进了编程的领域&#xff0c;代码和日志将是你最重要的伙伴”。在代码部分&#xff0c;伴随着越来越强大的idea插件、快捷键&#xff0…