首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >基于腾讯云的个人网站架构

基于腾讯云的个人网站架构

原创
作者头像
zhayujie
修改2020-06-18 11:04:05
5K0
修改2020-06-18 11:04:05
举报
文章被收录于专栏:ZYJ的技术专栏ZYJ的技术专栏

本文介绍如何基于腾讯云的各种云产品优雅地搭建个人网站,涉及的云产品有云服务器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支持配置自定义域名,可以通过类似http://{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网关

云函数的触发方式有多种,最常用的有定时任务和API网关。由于消息通知是通过事件触发而不是定时触发,所以选择API网关,创建了触发器后便可从公网直接访问该函数,与Nginx反向代理的作用类似。

API网关的域名是随机生成的,不利于对未来变化的扩展,故同样绑定自定义域名,使用https://{domain}/{function}形式的地址触发函数。例如我的邮件发送函数地址配置为https://apigw.zhayujie.com/commentNotice,在业务代码中只需向该地址发送POST请求即可触发邮件投递。

四、监控、快照和统计

1.监控告警

服务器的监控和告警同样很重要,有助于我们及时发现并排查问题。监控部分一般直接在控制台的 云服务器 - 实例 - 监控 中进行查看,有对不同时间周期和时间粒度下的CPU、内存、带宽、磁盘等的详细数据。

告警部分则在云监控中配置,可以配置多种报警策略如对cpu、内存、带宽等指标超出阈值后进行告警,以及一些机器故障事件(如ping不可达、机器重启等)。对COS的报警同样可以在此配置。告警渠道可以是微信、邮件和短信。

2.快照

为了防止服务器硬盘中的数据遭到攻击或被误删,可以在 云服务器 - 快照 控制台中设置进行快照备份,并且支持定期快照策略,设置每隔一段时间自动创建新的快照。

3.访问统计

对网站的访问情况进行统计分析有利于我们优化网站内容和体验。对于访问数据统计使用的是百度统计,使用埋点方式接入,可以查看每一个访客的地域,来源,搜索词,转化等信息,统计访问量趋势。

对于搜索引擎工具使用的是百度站长工具,用于提交页面收录,查看索引量、抓取频次等数据。

总结

以上就是一个功能齐全的个人博客的搭建过程,大致计算一下成本,云服务器活动期购买一百一年,域名一般几十块一个,而COS、CDN、SCF等产品都有大量的免费额度,且在建站初期流量费用同样是微乎其微,所以总体算下来成本是极低的。个人开发者可以把个人网站当做一个产品来做,思考如何利用好公有云的各种云产品资源来提升用户体验,提高开发效率,降低运维成本。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 概述
  • 一、基础设施
    • 1.云服务器CVM
      • 2.域名
        • 3.全站HTTPS
        • 二、基于COS和CDN的图床
          • 1.对象存储COS
            • 2.内容分发网络CDN
            • 三、基于Serverless的消息服务
              • 1.云函数SCF
                • 2.API网关
                • 四、监控、快照和统计
                  • 1.监控告警
                    • 2.快照
                      • 3.访问统计
                      • 总结
                      相关产品与服务
                      云服务器
                      云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
                      领券
                      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档