教你3分钟搭建一个网站?腾讯云Serverless开发体验
gaoyangw 2024-09-30 15:12 20 浏览 0 评论
作为一个开发者,应该都能理解一个网站从开发到上线,要经过很多繁琐的步骤。
编写代码,部署应用,部署数据库,申请域名,申请SSL证书,域名备案,到最终上线起码要几天时间。
作为一个不精通代码的业务玩家,当你想搞个网站玩玩时,经常会被淘宝贵得离谱的报价吓跑。
这两年Serverless的概念被炒得火热,顾名思义,“无服务”。今天的这篇文章,我想站在一个开发者的角度,带大家简单的体验下使用腾讯云Serverless来开发网站的整体流程。看看在Serverless的概念下,开发网站是不是变得更加简单了。
本文的主要内容:
- Serverless概念解释
- 3分钟部署一个网站
- 10分钟开发一个在线RSS阅读小站
- 腾讯Serverless Web Function的优缺点分析
我是蛮三刀,关注我的个人原创技术公众号:后端技术漫谈
首先放一个我部署好的RSS在线阅读器页面:
只要在url传入需要解析的RSS订阅地址,比如xxxx/rss?rssurl=https://blog.csdn.net/qqxx6661/rss/list ,就可以解析出该RSS,并渲染成你想要的博客样式。
整个实现代码除了html模板,只需要4行代码。
Serverless概念
Serverless是一个怎样的运行原理呢?简单的解释下:
腾讯云云函数是腾讯云提供的 Serverless 执行环境。您只需编写简单的、目的单一的云函数即可将它与您的腾讯云基础设施及其他云服务产生的事件关联。
当然了,Serverless不是表示没有服务器,而表示当您在使用 Serverless 时,您无需关心底层资源,也无需登录服务器和优化服务器,只需关注最核心的代码片段,即可跳过复杂的、繁琐的基本工作。核心的代码片段完全由事件或者请求触发,平台根据请求自动平行调整服务资源。Serverless 拥有近乎无限的扩容能力,空闲时,不运行任何资源。代码运行无状态,可以轻易实现快速迭代、极速部署。
它的大致执行流程如下图:
所以,Serverless其实本质上是云服务上帮你整合了云资源,你只需要编写最核心的代码,比如一个请求过来如何处理和返回对应的数据。其他的服务器部署相关的事情,都交给云服务商。这样带来的最核心的好处是节省了大量资源,只有你的网站有人访问时,才会计算资源消耗的价格,大幅度降低了成本。
可能你只是想搭建一个博客,以前可能需要买一年的服务器,起码一年开销几百元。在Serverless下,如果你的博客访问量并不是很高,可能一年只要花费十几块钱。
3分钟部署一个网站
我们打开Serverless创建函数服务页面:
https://console.cloud.tencent.com/scf/list-create?rid=16&ns=default&keyword=WebFunc
选择Python3 Web函数模板:
接着可以设置一些基本信息,这里我啥也没修改,直接点击完成。
大概等待30秒,一个Serverless服务就创建完成了。
接下来,我们就被跳转到了代码编辑页面。由于我们在上面的选项里选了Python3 Web开发,所以代码默认有了一个最基本的Flask框架模板。(Flask是什么?是Python的一个Web开发框架,就像Java下面的SpringBoot一样,也能很轻松地开发一个Web服务。官方文档:https://flask.palletsprojects.com/en/2.0.x/)
模板代码已经有了路径(“/”)最基本的返回值,我们把它改几个字,然后点击左下角部署按钮。花费了十几秒部署完成后,点击测试,我们就能看到返回的Body了,如下图。这时候你访问页面,也返回了同样的结果。
一个最最基础的Web服务器就OK了,不需要买域名和HTTPS证书,不需要SSH登录服务器,不需要手动编译代码,。
10分钟开发一个在线RSS阅读小站
上面是牛刀小试,接下来稍微整一个复杂一点点的例子。
**我一直觉得RSS阅读是一个虽然过时,但是其精神一直在传承的阅读方式。**比如微信的订阅号,可以说其本质也是一种RSS阅读,通过关注订阅,并获得更新文章的推送,来定制化你的阅读内容。
所以我想做一个RSS解析器,通过传入RSS的网址(很多网站还保留有这个网址,比如CSDN,比如阮一峰的博客等),能够渲染出该RSS链接里所有的文章,并展示在网页上。后面,还可以深度地修改页面的展示,做出一个微信订阅号网页版,也不是不可能,哈哈哈。
OK,花里胡哨的就不扯了,先开始实现一个最简单的事情,把RSS链接渲染出来。
我们使用官方的Flask模板,这个模板的Flask环境相对更加完整,方便开发。
我们首先需要一个RSS解析的框架,在Python中,有一个feedparser的框架,能够解析RSS url。
使用pip3 install feedparser安装feedparser:
接着我们在app.py加入代码:
import feedparser
@app.route('/rss')
def rss():
feed = feedparser.parse(request.args.get('rssurl'))
return render_template('rss.html', entries=feed.entries)
在这里,我进行了一波本地调试,看一下feed这个参数,拿到了什么:
可以看到,解析后的rss链接,被feedparser框架解析为了一个数组,每个entry是一个文章的标题,作者,链接等。
根据上面的参数名,我们再加入一个rss/html,放在templates文件夹中,里面写好了我稍微美化过的html页面,并且将每篇文章循环插入html中,这里用到了flask自带的渲染模板jinja2:
<html>
<head>
<title>RSS阅读博客</title>
<link href="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/5.0.2/css/bootstrap.min.css" rel="stylesheet">
</head>
<body>
<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>
<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">Search</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>
两个文件修改完,直接点击部署然后访问腾讯云给我们分配的域名:
https://service-ehshqmzv-1252138314.cd.apigw.tencentcs.com/release/rss?url=https://blog.csdn.net/qqxx6661/rss/list
image-20210801114213652
可以看到,完美解析出了我CSDN博客的RSS流,并且可以一个个打开。动图见文章最上方。
Web Function的优缺点分析
可以看出来,Serverless开发一个网站和传统网站开发区别非常大,它撇去了传统开发中那些冗杂但是又不经常会去修改的配置和流程,让开发者专注于业务逻辑的开发。但是这种开发方式真的完美吗?我思考了一下它的优势和不足。
**最明显的优势便是它简化了开发的步骤,省去了很多部署的无聊工作量。**但是,它的简化是有代价的,简化是会牺牲很大一部分灵活性和可定制性的。简化能够好用的前提是,云服务商把这些事情做到了,并且做好了。如果你的网站需要大量复杂的逻辑,并且需要优化网关的配置,那么很多事情在Serverless下,至少在目前提供的Serverless下,还是做不到的。
上面说到的弊端,其实会带来一个很大的问题,就是沉没成本,当你花了很多时间在Serverless上,却发现有一些小的要求或者定制化,没法实现,这时你是去翻文档,提工单,还是选择老老实实买个虚机,自己手动重新部署呢。
当然,上述观点是一个开发者的视角来看的。
作为普通消费者,可能很多时候只需要部署一个静态网站,用来放一个博客,或者说推广下自己的公司和产品。那么Serverlss大概率是符合要求的。
除了上面的主要矛盾外,还有一点是我想提出的,就是目前在线代码编辑页面的调试功能有点太弱了。
在最开始的Python3 Web模板中,在线的依赖库貌似缺失了新版本的feedparser和flask,导致我在本地调试能够运行的代码放到Serverless上各种不成功,但是错误信息却很难找。导致我不得不在VS Code的终端里,一个手动开flask服务,一个去curl请求,才能看到报错信息。
当然,这个可能是我自己走的歪路,但是在页面上,很难一眼看出来Debug窗口在哪里。
在用户体验上,还有很多事情可以做。
总结
不知不觉又是一篇2500字的文章,一个完整的周末又没有了。
Serverless概念提出了好几年了,其产品形态总感觉还在摸索阶段,它的用户群体到底是开发者,还是普通消费者,其实还是会被产品形态所影响。
不管怎么说,Serverless在成本的节省上是有目共睹的,我也希望在我的云服务器过期后,能够把自己的博客和其他服务,部署在Serverless上,能够节省一大笔开销。光是成本这一点,就值得我不断关注着Serverless。
如果文章对你有帮助,请各位老板转发支持一下,你的支持和鼓励对我非常重要~
个人公众号:后端技术漫谈
相关推荐
- 工业品短视频推广/工业品短视频推广,搞懂2点让客户主动找上门
-
工业品短视频推广/工业品短视频推广,搞懂2点让客户主动找上门。为什么你拍了那么多短视频都没有效果,我们陪跑了几百家客户,发现没效果的账号基本就这3种情况,一种是把短视频当成朋友圈,晒日常生活,账号标签...
- 流程优化,其实是一场管理变革(流程优化的三个原则)
-
“信息化”一词,相信大家都不会感到陌生,但什么是信息化?企业信息化要做些什么?对此的理解真是仁者见仁智者见智。...
- 引爆中小卖家免费流量入口关键词梯形架构
-
“在我从代运营做天猫转到自己去经营自己的C店的时候,我终于知道,原来这个世界上做淘宝的,并非每一个人多那么有钱可以去砸直通车,也不是每一个人多可以请得起薪酬十来万的设计的,近两年我一直在摸索一种适合小...
- 百度搜索2015移动大事记:优化、流量追查等
-
站长之家(Chinaz.com)注:纵观2015这一年,百度搜索的关键词不外乎“移动”二字。为了响应移动互联网的大势,百度不遗余力的在移动搜索上下足了功夫。从搜索引擎算法、到站长平台工具都做出了许多改...
- 百度站搜带你玩转站内流量(百度站长app)
-
先给大家看几张效果图:图1图2图3这3种激发用户搜索需求的牛B武器你的站点“武装”了么?使用效果如何?现在让我们来看看一下网站使用后的心得以及效果:比特网:由于比特之前有自己的站内搜索工具,所以百度刚...
- 继PC端后 百度移动搜索也将取消refer关键词显示
-
站长之家(Chinaz.com)12月4日消息今年6月25日,百度搜索正式取消了referer中关于关键词的显示。近日,百度站长平台在公告中表示“百度移动搜索中也将逐步取消referer关键词的显示”...
- 知己知彼,百战不殆--六个方法帮你分析对手网站
-
好的推广专员对竞争对手的网站进行分析是必不可少的,根据竞争对手每个阶段及时做好SEO的调整。做好知彼知己才能对后期的优化有所帮助。下面小编就分享分析竞争对手网站的六大SEO方法。1、网站年龄网站时间...
- 百度站点属性功能升级 全面取消referer关键词显示
-
站长之家(Chinaz.com)6月30日消息近日,百度站长平台发布公告称已对“站点属性”功能进行升级,此功能已作为独立工具展示于工具导航栏中。站长可通过“站点属性”功能对站点中文名、站点类型、以及站...
- 大连关键词优化推广公司(大连seo推广优化)
-
关键词挖掘与关键词分析提高网站权重的方法最重要的一步就是挖掘有质量的关键词。然后根据关键词的情况进行标题创作和内容的创作。关键词分析分类:1.有指数的关键词2.没有指数的关键词关键词挖掘分类:品牌关...
- 如何实现AI文章免费优化,轻松提升网站排名?
-
你是否觉得,尽管文章内容已经写得很棒,网站的流量却始终无法突破瓶颈?是不是常常觉得自己做了很多优化工作,却依旧难以提高文章的搜索排名?其实,很多人忽略了一个关键问题,那就是“如何优化AI文章”。尤其是...
- AI搜索SEO优化排名公司推荐(seo搜索引擎优化排名)
-
AI搜索SEO优化排名公司推荐,随着AI的平民化,越来越多的人开始通过AI寻找自己的需求,例如通过问AI助手,广州哪家火锅好吃?深圳家政服务哪家公司好?北京全屋定制哪家靠谱?如果这时候AI推荐了你的...
- 构建可以查找相似图像的图像搜索引擎的深度学习技术详解
-
在本文中将介绍如何查找相似图像的理论基础并且使用一个用于查找商标的系统为例介绍相关的技术实现,本文提供有关在图像检索任务中使用的推荐方法的背景信息。阅读本文后你将有能够从头开始创建类似图像的搜索引擎...
- 搜索引擎语法,教你高格逼利用搜索引擎!
-
百度语法1.site把搜索范围规定在特定的站点中。但是有时候你需要找一些特殊的文档,特别是针对于专业性比较强的网站合理使用site可以让你取得事半功倍的效果。举例说明:site:sina.com(不...
- Off-eBay搜索引擎下,listing和店铺 SEO技巧
-
雨果网从外媒近日报道中了解到,eBay正在举行一系列促进销售增长的专家网络研讨会(ExpertAdviceGrowthWebinars),第一场在3月3日举行。外媒为未参加网络研讨会的卖家,挑出...
- 搜索引擎原理系列教程:收录、索引、排名
-
《搜索引擎原理系列教程》这个虽然称不上书籍,但由于里面信息量以及内容比较实用,也弥补了百度白皮书的一些短板——话语浮于表面,另外值得鼓励的是,这个教程完全是由一个民间的SEO爱好者总结,这份精神值得称...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- 网站建设 (107)
- 网站开发 (47)
- 百度收录 (50)
- 搜索引擎排名优化 (49)
- 关键词优化工具 (51)
- 外贸网站建设 (56)
- seo整站优化吧 (50)
- 苏州网站建设 (59)
- 百度搜索推广 (61)
- 关键词优化公司 (51)
- 广州网站建设 (48)
- 电商网站建设 (49)
- 百度站长平台 (48)
- 网站模板 (51)
- 厦门网站建设 (52)
- 百度快照推广 (51)
- 免费网页在线客服系统 (53)
- 雷神代刷网站推广 (53)
- 手机网站建设 (53)
- 网站维护 (53)
- 网页制作教程 (66)
- 百度收录批量查询工具 (48)
- 网站服务器 (53)
- 学生个人网页制作html (56)
- 一键优化 (67)