基于云服务的个人网站架构设计

本文介绍如何基于各种云服务优雅且低成本地搭建个人网站,涉及的云产品有云服务器、SSL、企业邮箱、对象存储、CDN、云函数、API网关、云监控等。

概述

如今云服务提供商们提供了大量涵盖计算、网络、存储等方面的云服务,其中一些云产品功能强大,如果能善加利用可以大幅降低开发和运维的成本。下面以基于腾讯云搭建的个人网站为例,对网站整体的架构进行介绍。

网站目前的主要功能是个人博客,后续可以扩展如个人网盘等其他应用。当前架构图如下:

博客架构图

一、基础设施 1.云服务器CVM

云服务器使用的是CVM,1核2G,下行带宽1Mbps,这个配置用来搭建起步阶段的个人博客是完全够用了,购买学生机或者在活动时购买价格也比较便宜。

有了服务器资源就可以开始博客搭建,我选的博客系统是极简主义的Typecho,安装过程可以参考这篇博文,主要是在服务器上安装nginx、mysql、php以及typecho的源码。

2.域名

注册 - 备案 - 解析

服务器创建后同时会分配一个公网ip,但是为了便于分享和传播,建议进行域名注册。注册后需要进行备案,现在的备案流程也已经简化为在小程序上操作,省去了原有的幕布拍照环节,前后大概1-2周时间就可以完成备案。之后在控制台进行域名解析,即绑定域名和服务器ip,注意对带或不带www前缀的域名都要进行解析,完成解析后就可以在浏览器通过域名来访问网页了。

主域名的确定

为了便于SEO,建议根据个人喜好确定一个主域名,因为搜索引擎对于带www和不带www前缀的地址是当成两个网站分开计算权重的。国内网站一般带www,而国外网站(如github、stackoverflow、leetcode)等是不带www的。我这里是选择不带www的地址(zhayujie.com),并在nginx中配置对带www的访问301重定向到不带www上,以集中权重。

企业邮箱

拥有域名后,还可以注册以自己域名为后缀的企业邮箱,基础版免费使用且账号数量无上限,再也不用担心邮箱号不够用了(如微信公众平台注册),邮箱格式类似于 zyj@zhayujie.com。

3.全站HTTPS

为了网站安全以及利于SEO,建议支持https协议访问网站。可以申请免费的SSL证书,将证书和私钥放置到服务器,并在nginx中开启并配置SSL。同样为了避免分散权重,可以把http访问的请求301重定向到https上。以我的网站为例,带不带www以及是否使用https都会统一访问https://zhayujie.com/。

二、基于COS和CDN的图床 1.对象存储COS

由于服务器下行带宽有限,如果图片存储于我们自己的服务器,出现并发访问时可能导致带宽超限,访问速度下降。所以可以把图片存储到 COS(Cloud Object Storage)中,搭建自己的图床,这样当博客同步到其他博客平台时,也便于对图片资源进行统一管理。

COS的使用比较简单,类似于网盘,在存储桶中可以建立树状目录结构,每个存储桶(bucket)会分配一个公网域名,其下的文件通过https://{bucket}/{dir}/{filename}的形式进行访问。但在博客中直接使用该链接是不妥的,因为一旦我们迁移到其他云服务商或者切换其他的存储方式了,原有的链接就失效了,一一修改成本太高。好在cos支持配置自定义域名,可以通过类似{domain}/{dir}/{filename}的地址进行访问。

2.内容分发网络CDN

COS的自定义源站域名不支持https访问,为了不影响我们的全站https,并且同时提升访问速度和减少流量成本,可以配合CDN服务,开启自定义CDN加速域名,具体步骤见文档。

可以选取一个子域名作为cdn自定义域名,添加CNAME解析,这样通过自定义域名会首先访问cdn边缘服务器,如果未命中则回源到cos。例如上面的图片我配置的地址是https://blog.cos.zhayujie.com/web/blog-cloud-arch.jpg。

三、基于Serverless的消息服务 1.云函数SCF

在博客开发过程中会遇到一些发送消息的功能,比如读者回复文章时给笔者发送通知,笔者回复评论时给读者发送通知,博文发布时给订阅的读者发送通知等等。这种消息通知的功能是很适合单独拆分出来形成一个消息服务的,如果写在博客源码中则复用性差(网站下其他应用要发送消息时需要重写),而单独部署服务又会增加运维的成本(如果服务挂掉怎么办),这时候可以考虑serverless(无服务器)的架构,仅将我们的核心代码片段托管给云服务商。

腾讯云提供了云函数SCF(Serverless Cloud Function),是一种FaaS技术。对于消息通知这种异步、无状态的功能,很适合使用云函数编写,比如接收到请求后向指定接收人发送一封邮件。

2.API网关

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wssfsz.html