从未如此简单:基于Serverless架构的博客

本文涉及的产品
函数计算FC,每月15万CU 3个月
Serverless 应用引擎免费试用套餐包,4320000 CU,有效期3个月
简介: 我是一个比较喜欢写东西的人,无论是生活中的点滴,还是学技术的笔记,再或者是自己针对某些内容的看法,我总想的是把这些内容记录下来,以后进行查阅比较方便,或者以后进行回忆比较有趣。

我是一个比较喜欢写东西的人,无论是生活中的点滴,还是学技术的笔记,再或者是自己针对某些内容的看法,我总想的是把这些内容记录下来,以后进行查阅比较方便,或者以后进行回忆比较有趣。

在以前,我用过Wordpress,我也用过Zblog,我也用过Hexo的博客的开源项目,我同样也用过云主机、虚拟空间以及Github Pages等,但是我一直都有几个比较头疼的点:

  1. Wordpress和Zblog需要数据库,一般情况下数据库比较贵,这个比较头疼;
  2. Hexo博客等不需要数据库,或者Zblog可以使用Sqlite相对来说也是没有成本的,还是比较爽,但是我把这些项目放在哪里是个问题,因为云主机、虚拟空间也是要花很多钱的;
  3. Github Pages貌似还是一个很方便的点,但是在国内的速度等以及自由程度等,貌似还是有很大的挑战的;

在过去一段时间,我也和一些小伙伴尝试过,将Zblog,Wordpress等部署在Serverless架构,希望可以通过Serverless架构为我节省一笔费用,然而让我措手不及的是“自定义镜像太慢了”,而且在一定程度下放在NAS中的Sqlite数据,还可能出现损坏,我猜测是“锁”的问题;

所以,我的博客该何去何从,作为了一个非资深的羊毛党,但是确实资深的强迫症,解决博客的问题成了我一时之间所思考的内容:

  1. 博客要有足够快的响应;
  2. 博客要尽可能的做到0成本;
  3. 博客要有一系列的拓展能力,例如搜索,留言等;
  4. 发表博客可以非常简单和方便;
  5. ......

此时此刻,我将目标瞄准到了:

  1. Serverless Devs的静态网站组件
  2. Hexo博客系统
  3. Algolia的搜索能力
  4. Gitalk的留言能力
  5. Github Action的CD能力

说到做到,直接“开干”。

创建博客

其实创建一个博客系统非常容易,在下载、安装Serverless Devs工具之后,只需要初始化Hexo的模板即可:

s init devsapp/website-hexo

初始化完成之后,我们只需要配置一下密钥信息,就可以通过:

s deploy

直接将项目部署到线上。

当然,在这个过程中,我们还可以做很多的事情,例如寻找一个靠谱好看的模板,添加一些文章,修改一些模板上的配置等,反正最终我的效果就是:

image

集成Github Action

当我完成了博客的创建,我随后创建了一个Github的仓库,将Hexo推了上去。接下来,要做的就是创建一个自动发布的脚本,即我每次在Github发布文章,都会自动同步到我的博客中。

我在本地项目,通过:

s cli cicd

并且选择了Github Action:

image

之后参考所提供的案例:

  🍉 Serverless Devs的官网是通过Serverless Devs部署的: http://short.devsapp.cn/cicd/github/action/practice

通过进行密钥配置:

image

以及Yaml内容的完善:

name: Website Publish

on:
  push:
    branches: [ master ]

jobs:
  publish-website:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - uses: actions/setup-node@v2
        with:
          node-version: 12
          registry-url: https://registry.npmjs.org/
      - run: npm install
      - run: npm install -g @serverless-devs/s
      - run: s config add --AccountID ${{secrets.ALIYUN_ACCOUNT_ID}} --AccessKeyID ${{secrets.ALIYUN_ACCESS_KEY_ID}} --AccessKeySecret ${{secrets.ALIYUN_ACCESS_KEY_SECRET}} -a website_access
      - run: s deploy

最终将代码推送到线上,发现尝试触发,已经可以进行自动发布了:

image

拓展能力

完成上面的内容很简单,貌似也没什么额外或者值得尖叫的,或许以后可以通过更新Github里面的文档,来进行博客的更新,就是最大的好处了吧?

接下来两个事情:

  • Algolia的搜索能力
  • Gitalk的留言能力

首先是Algolia的搜索能力的集成,没什么难度,按照一些配置文档,就可以搞定,此处不在进行赘述。

其次就是集成Gitalk的留言能力,或许,这一步才是真正的开胃菜,或许让我对Serverless架构尖叫的点吧。

我非常简单,轻松的将Gitalk配置完成,并且尝试使用,我突然发现一个非常尴尬的事情:Gitalk出现了一个403

image

通过搜索,找到了这个仓库:https://github.com/Rob--W/cors-anywhere

在issue里发现了罪魁祸首:

image

enmmm,大概就是说,这个仅仅是一个demo,但是很多人却直接使用了,现在我不给大家用了,给大家加点限制了,如果有需要,就自己部署一套这个服务吧。

我??黑人问号懵逼脸。但是那能怎么办呢?没办法就只能自己看一下这个项目,把项目Clone到本地,发现这是一个Node.js的项目,灵机一动,是不是可以自己通过函数计算搭建一个这个服务?

于是我:

第一步,修改一下代码中的默认port(当然也可以不修改,通过环境变量设置):

image

第二步,创建一个s.yaml:

edition: 1.0.0          #  命令行YAML规范版本,遵循语义化版本(Semantic Versioning)规范
name: my-blog       #  项目名称
access: "default"  #  秘钥别名

services:
  function-test: #  服务名称
    component: devsapp/fc  # 组件名称
    actions:
      pre-deploy:
        - run: npm install
          path: ./
    props: #  组件的属性值
      region: cn-hongkong
      service:
        name: gitalk-cors
        description: gitalk cors项目
        nasConfig: auto
        vpcConfig: auto
        logConfig: auto
      function:
        name: server
        memorySize: 128
        codeUri: './'
        runtime: custom
        timeout: 60
      triggers:
        - name: httpTrigger
          type: http
          config:
            authType: anonymous
            methods:
              - GET
              - POST
              - DELETE
              - PUT
      customDomains:
        - domainName: auto
          protocol: HTTP
          routeConfigs:
            - path: /*

然后再加一个bootstrap文件:

#!/bin/bash
node server.js

完成之后,只需要一行s deploy

image

随即,将Gitalk中的文件进行修改,将我们刚部署完的域名替换到proxy中:

image

完成之后,我们无需进行部署,只需要推到Github即可,Github Action会按照我们之前的预期,来帮助我们做自动化发布,发布完成之后,我们可以尝试在我们的博客上登陆,评论:

image

总结

创建博客方法很多,其实流程也很顺利,但是基于Serverless架构来做的博客,真的可以说是非常省心:

  1. 避免了Github Pages等在国内的响应速度慢的问题;
  2. 一些需要自定义的行为,完全可以通过更高的灵活度来进行实现(例如自己部署了这个仓库的代码:https://github.com/Rob--W/cors-anywhere );
  3. 相对传统的服务器来说,Serverless架构也更省钱;

综合来说,省钱、省事、性能还不错,就这样,一个完整的基于Serverless架构的博客系统就这样搭建完成:https://bluo.cn

相关实践学习
【文生图】一键部署Stable Diffusion基于函数计算
本实验教你如何在函数计算FC上从零开始部署Stable Diffusion来进行AI绘画创作,开启AIGC盲盒。函数计算提供一定的免费额度供用户使用。本实验答疑钉钉群:29290019867
建立 Serverless 思维
本课程包括: Serverless 应用引擎的概念, 为开发者带来的实际价值, 以及让您了解常见的 Serverless 架构模式
目录
相关文章
|
1天前
|
负载均衡 Serverless 持续交付
云端问道9期实践教学-省心省钱的云上Serverless高可用架构
详细介绍了云上Serverless高可用架构的一键部署流程
26 10
|
1天前
|
弹性计算 运维 网络协议
卓越效能,极简运维,Serverless高可用架构
本文介绍了Serverless高可用架构方案,当企业面对日益增长的用户访问量和复杂的业务需求时如何实现更高的灵活性、更低的成本和更强的稳定性。
|
23天前
|
弹性计算 运维 Serverless
卓越效能,极简运维,体验Serverless高可用架构,完成任务可领取转轮日历!
卓越效能,极简运维,体验Serverless高可用架构,完成任务可领取转轮日历!
|
2月前
|
监控 Serverless 云计算
探索Serverless架构:开发实践与优化策略
本文深入探讨了Serverless架构的核心概念、开发实践及优化策略。Serverless让开发者无需管理服务器即可运行代码,具有成本效益、高可扩展性和提升开发效率等优势。文章还详细介绍了函数设计、安全性、监控及性能和成本优化的最佳实践。
|
17天前
|
弹性计算 Cloud Native Serverless
阿里云 SAE 邀您参加 Serverless 高可用架构挑战赛,赢取精美礼品
阿里云 SAE 邀您参加 Serverless 高可用架构挑战赛,赢取精美礼品。
|
3月前
|
监控 Serverless 数据库
探索 Serverless 架构:云计算的新浪潮
【10月更文挑战第18天】Serverless架构,即无服务器架构,是一种新兴的云计算模式,让开发者无需管理服务器即可构建和运行应用。本文探讨了其核心概念、优势、挑战及最佳实践,强调了按需付费、自动扩展和开发效率等优点,同时也指出了冷启动、状态管理和调试监控等挑战。
|
2月前
|
机器学习/深度学习 监控 Serverless
探索Serverless架构:云计算的新前沿
【10月更文挑战第26天】本文探讨了Serverless架构作为新兴的云计算范式,如何改变应用的构建和部署方式。文章介绍了Serverless的核心概念、优势和挑战,并提供了开发技巧和实用工具,帮助开发者更好地理解和利用这一技术。
|
2月前
|
运维 Serverless 数据处理
Serverless架构通过提供更快的研发交付速度、降低成本、简化运维、优化资源利用、提供自动扩展能力、支持实时数据处理和快速原型开发等优势,为图像处理等计算密集型应用提供了一个高效、灵活且成本效益高的解决方案。
Serverless架构通过提供更快的研发交付速度、降低成本、简化运维、优化资源利用、提供自动扩展能力、支持实时数据处理和快速原型开发等优势,为图像处理等计算密集型应用提供了一个高效、灵活且成本效益高的解决方案。
101 1
|
2月前
|
监控 Serverless 数据库
探索 Serverless 架构:云计算的新浪潮
【10月更文挑战第23天】Serverless 架构是一种新兴的云计算范式,允许开发者构建和运行应用程序而无需管理服务器。本文深入探讨了 Serverless 的核心概念、优势、挑战及最佳实践,帮助开发者更好地理解和应用这一技术。
|
2月前
|
监控 安全 Serverless
"揭秘D2终端大会热点技术:Serverless架构最佳实践全解析,让你的开发效率翻倍,迈向技术新高峰!"
【10月更文挑战第23天】D2终端大会汇聚了众多前沿技术,其中Serverless架构备受瞩目。它让开发者无需关注服务器管理,专注于业务逻辑,提高开发效率。本文介绍了选择合适平台、设计合理函数架构、优化性能及安全监控的最佳实践,助力开发者充分挖掘Serverless潜力,推动技术发展。
84 1

相关产品

  • 函数计算