WordPress是一种非常流行的博客网站平台,也可以当作一个内容管理系统(CMS)来使用, 是世界上使用最广泛的博客系统之一。WordPress有非常多优秀的插件,使得这个开源产品变得非常容易扩展,满足不同的需求。
我准备利用一个系列的文章,来展示如果利用阿里云的各种产品(弹性计算,数据库,安全等等),搭建一个完整的WordPress网站。内容包括:
- 一、 搭建基础网站应用
- 二、 域名,短信和邮箱
- 三、 动静分离和CDN加速
- 四、 数据库缓存和管理
- 五、 服务器横向扩展
- 六、 网站安全
三、动静分离和CDN加速
动静分离是网站优化的常见方式,通过将网站静态资源与后台应用分开部署,通过提高静态咨询的访问速度来提高用户的体验。
用户上传的附件本来存储在NAS文件存储当中,可以通过WordPress插件放入阿里云的OSS对象存储中,存储降低成本。CDN加速的部分选择了阿里云的CDN产品,而没有使用DCDN全站加速(https://www.aliyun.com/product/dcdn),其主要原因是后面的演示会增加高防IP会有冲突;否则利用DCDN的动态加速功能,能够让网站的动态请求通过阿里云的CDN边缘节点进行跳转,回源速度更快。
这个部分的架构图如下,基于上一个版本增加了:
- OSS对象存储:存放用户向WordPress上传的附件
- CDN:通过CDN边缘节点的缓存机制加速附件静态文件的读取
准备OSS存放附件
阿里云OSS对象存储(https://www.aliyun.com/product/oss)没有预付费版本,所以务必记得购买资源包来抵扣用量,否则很不划算。首先创建一个Bucket,注意读写权限(ACL)应该设置为私有,后面用授权来控制使用,否则如果被刷的话会导致使用费用大增。
创建完成之后,需要获取地域节点VPC内网地址和Bucket域名外网地址记录下来,后面会用到。
然后给OSS填加域名,这个域名注意要和主站域名不一样,才能让静态附件文件到OSS来处理。这里没有使用CDN加速功能,后面单独配置也是一样的。
另外要注意,如果域名和DNS不是在同一个账号下面的话,最后一个自动添加CNAME记录功能也是不可用的,需要手动在DNS里面添加前面记录的Bucket域名外网地址。
然后回到安装并设置WPOSS插件。需要配置Bucket名称,前面记录的地域节点(内网),AK信息(参考https://help.aliyun.com/document_detail/31827.html),本地文件夹(使用默认值wp-content/uploads),和最后一项Bucket域名+文件路径尾巴。Bucket域名就用前面在DNS中设置的域名,当然也可以直接使用bucket域名外网地址,只不过显得网站不够专业罢了。
设置完成之后,在WordPress的媒体中插入一个文件试试,然后就可以在OSS中看到了。如果在设置时选择了“不在本地保留备份”选项,那么连接在ECS的NAS中的本地文件夹(默认为wp-content/uploads)中也不会再保留文件。
前面将OSS的ACL设置为了私有,为了让WordPress的读者可以下载文件,可以利用Bucket Policy授权功能,将资源路径(默认wp-content/uploads/*)中的资源以HTTP的方式进行读取,这样才能让读者看到并且下载博文中的附件。参考https://help.aliyun.com/document_detail/85111.html。
OSS是按使用量收费的服务,如果被他人盗链有可能会产生额外费用。所以,一般来说需要利用防盗链功能进行防护。添加域名(https后面才会用到)即可。参考https://help.aliyun.com/document_detail/31901.html。
利用CDN加速
WordPress最大的数据一般都是来自附件文件,添加CDN可以大大提高用户的文件下载速度。阿里云的CDN(https://www.aliyun.com/product/cdn)边缘节点有2500+个,大大高于腾讯华为的1100+个,可见阿里云在CDN内容分发网络上的重视和投入。
另外提一句,阿里云的CDN类产品里面有一个很重要的产品叫做DCDN全站加速(https://www.aliyun.com/product/dcdn),不仅仅和一般CDN一样,支持静态文件加速,还能利用阿里云丰富的边缘节点进行动态加速。动态加速最近支持了Websocket和IP应用加速,个人理解在业界已经是数一数二了,可以了解一下:https://yq.aliyun.com/articles/686839,https://yq.aliyun.com/articles/703346。
不过这次demo使用的是纯静态加速,就先上一个一般的CDN好了。注意设置源站信息要选择OSS域名,端口80(对应之前OSS的Bucket Policy授权为HTTP)。
设置完成之后把系统生成的CNAME添加到DNS云解析中。主机记录可以随意选,一般用static或者oss这种比较容易理解的吧。
回到OSS中确认一下,应该可以看到自动拉取的DNS和CDN信息,这就表示设置完成了。
回到WordPress上传一个文件试试看,这次确实上传到了OSS的Bucket里面。