记录一次使用云主机部署个人网站,并基于OSS+ CDN实现网站动静态分离的过程。
一、网站域名开通与备案
1、买域名
去阿里云买域名,并做好域名持有者实名认证。
2、域名解析及域名备案
按照《教你如何把域名解析到自己的服务器上-阿里云开发者社区 (aliyun.com)》 上的步骤,在阿里云上配置域名解析www A记录指到我的腾讯云主机IP上,过了一会可以访问主机80端口Nginx的index.html了。
结果,没过了一会就被封了,原因是域名没有做备案。所以接下来要去做备案。
ICP备案
域名需要在腾讯云进行备案。3月8日已提交审核。阿里云的域名、在腾讯云备案,因为云主机和内容服务是在腾讯云的。在腾讯云提交一堆备案资料,然后还要通过管局的审核。
3月10日管局发来了短信核验:
"【工业和信息化部】验证码:xxxxxx。您的新增备案已提交,核验链接:beian.miit.gov.cn,有效期1天【工信部ICP备案】"
验证码+手机号+身份证后6位提交后,正式进入管局审批流程。过了几天就通过了:
浙ICP备202200x0xx号 审核通过日期:2022-03-14
公安联网备案
也就是传说中的网安备案,在ICP备案并且网站上线运行之后,如果网站涉及商业运营那么还需要做信管局的增值电信业务许可备案、也就是EDI,如果只是像我们上面的测试网站一样,那么直接可以进到下一步、做公安的网安备案就可以了,这个要求在网站开通30日内办理。详见:《公安联网备案 (aliyun.com)》
把网站开办者信息之类的又要填写一遍,包括身份证持证照片这些也要上传。
操作是到全国互联网安全管理服务平台 (beian.gov.cn) 上,按照提示操作上传资料后,等待审核就行了,如下图。
等审核通过,把备案编号和html代码从网安那copy到自己的网站上就好了,相当于在网站首页底部加一个footer,显示备案信息:
<div style="width:300px;margin:0 auto; padding:20px 0;">
<a target="_blank" href="http://www.beian.gov.cn/portal/registerSystemInfo?recordcode=33011302000181" style="display:inline-block;text-decoration:none;height:20px;line-height:20px;"><img src="batb.png" style="float:left;"/><p style="float:left;height:20px;line-height:20px;margin: 0px 0px 0px 5px; color:#939393;">浙公网安备 33011xxx000xxx号</p></a>
</div>
二、动静态分离网站架构——基于OSS + CDN
先看一下架构图(来自阿里云)
该架构的要点如下:
将动态资源如Web程序、数据库等存放在云服务器ECS上。
将静态资源如图片、音视频、静态脚本等存放在对象存储OSS上。
将OSS作为CDN的源站,通过CDN加速分发,使用户通过CDN节点就近获得文件。
我们来简单实践一下这个架构:
首先在腾讯云的ECS主机上装Nginx然后放一个静态Html网页,网页上显示一个图片,图片放在阿里云的OSS上进行存储,然后使用阿里云的CDN对图片进行加速访问、CDN回源到阿里云OSS上。
域名解析是在阿里云做,其中:A记录指向腾讯云上的主机,txt记录用来证明云主机归属、这样阿里云才会放心将域名解析到这个IP对应的主机上,CNAME记录则是指定网站的一个二级域名(比如
cdn.wangan.xyz
)指向到CDN加速域名去、CDN加速域名由阿里云CDN服务分配、作为二级域名的CNAME记录值。关于CDN回源,CDN一般可以搭配OSS云服务一同使用,这样就可以设置CDN静态资源回源到OSS服务上去而不是回源到网站主机那。所以笔者这里一同在阿里云也开通了OSS服务。
CDN解析过程:当用户访问到
cdn.wangan.xyz
二级域名下的静态资源时,域名会解析到上面提到的阿里云给分配的CDN加速域名cdn.wangan.xyz.w.kunlunaq.com
去,后者直接从CDN缓存中返回静态资源给用户端实现加速,当缓存未命中时、由CDN节点发送回源请求到wangandouchuzioss.oss-cn-hangzhou.aliyuncs.com
这个OSS域名(也是阿里云自动分配的)去、后者返回最新静态资源给CDN节点进行缓存。
最后,经过nginx在主机上的安装、以及一系列的备案流程我们的网站域名已经开放了,接下来我们上传一张图片到阿里云OSS上去。
1、OSS对象存储
使用云OSS对象存储比较方便,省去了自己搭建对象存储系统(比如基于FastFS或MinIO)的麻烦,阿里云上开通oss服务以后,新建一个bucket(类似目录)用来装对象,然后直接使用阿里云的OSS控制台就可以上传、下载对象了,比如图片。对于bucket的读写权限,一般设置公共读即可,也就是读是公开的、写需要密码。
而开发的话使用oss Java sdk即可,参见:前言 (aliyun.com)
对阿里云OSS的进一步学习,可以参考:
OSS阿里云_ OSS是什么意思对象储存OSS阿里云OSS学习路径图_OSS Learning Path - 阿里云 (aliyun.com)
2、CDN加速
需求:www.wangan.xyz 域名下的静态资源使用cdn加速域名cdn.wangan.xyz进行访问,并且回源指到阿里云oss上。
CDN域名cdn.wangan.xyz
添加完成以后,阿里云自动给生成了CNAME记录值cdn.wangan.xyz.w.kunlunaq.com
,需要把这个值设置到域名解析记录上去。有如下提示:
“您还需要完成加速域名的CNAME解析设置。您需要在域名解析中添加CNAME记录,CDN加速方能生效,请前往您的域名注册商添加CNAME。”
域名 | cdn.wangan-douchuzi.xyz |
---|---|
CNAME记录值 | cdn.wangan-douchuzi.xyz.w.kunlunaq.com |
主机记录 | cdn |
记录类型 | CNAME |
按照如上要求,设置域名解析中的CNAME记录,即让我们自定义的CDN加速域名指向阿里云OSS,如下图:
这样等几分钟后,将原来的oss上的静态资源从https://wanganoss.oss-cn-hangzhou.aliyuncs.com/mz.jpg
换成CDN加速域名http://cdn.wangan.xyz/mz.jpg
来访问就可以了,命中就走缓存,没命中就回源到oss域名去。
可以用ping或者dig来验证cdn是否生效:
C:\Users\linyang>ping cdn.wangan-douchuzi.xyz
正在 Ping cdn.wangan.xyz.w.kunlunaq.com [122.xxx.x.230] 具有 32 字节的数据:
来自 122.xxx.x.230 的回复: 字节=32 时间=11ms TTL=54
来自 122.xxx.x.230 的回复: 字节=32 时间=11ms TTL=54
来自 122.xxx.x.230 的回复: 字节=32 时间=17ms TTL=54
来自 122.xxx.x.230 的回复: 字节=32 时间=11ms TTL=54
122.xxx.x.230 的 Ping 统计信息:
数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):
最短 = 11ms,最长 = 17ms,平均 = 12ms
可以看到,ping CDN加速域名最终是走到阿里云自动生成的CNAME上的。
最后,网站上使用这个图片就可以用CDN加速 + OSS回源了:
<img src="http://cdn.wangan.xyz/mz.jpg" />
参考资料: