使用阿里云函数计算部署Wordpress博客系统

阿里云函数计算部署Wordpress

0.起因

这篇文章是对周末折腾的一个记录,一切都源于阿里云客服说我的服务器马上到期了。之前购买的阿里云的ECS,三年下来需要两千多块钱,但是平时用的多的就一个博客系统和账单接口在跑,CPU使用率仅有4%。然后无意间看到阿里的语雀团队使用函数计算大大的减少了服务器的维护成本,也避免了CPU使用率一直很低的情况。受此启发决定将我的博客转移到阿里云函数计算上面,幸运的是官方也给了wordpress搭建教程(仅仅是能用)。
附上官方的函数计算与传统ECS价格对比:

ITEM 成本 稳定性
基于 VM 方案 使用 ecs.t5-lc1m1.small, 22.8元/月 服务器和数据库在同一台VM,

均无主备容灾,同时该规格的主机本身性能弱
轻量应用服务器 | 60元/月(1vCPU 1GB 1Mbps 20GB[ssd]) | 服务器和数据库在同一台VM,
均无主备容灾,同时该规格的主机本身性能弱
函数计算 | sqlite3 版本约为 1元/月 mysql 版本大约 26元/月 | 高

1.概要

本文将对部署的过程和函数计算+Wordpress的架构做一个简单的描述,如有不对请以官方文档为准。整个文章的目录如图1所示,分为函数计算架构设计、准备工作、搭建Wordpress、配置Wordpress和支持Https五大部分。

图1. 文章目录结构 图1.
文章目录结构

2.函数计算+Wordpress的架构设计

在使用函数计算之前,我们先了解一下函数计算是什么,这样有助于理解每一步在干嘛。下面是阿里云官网的介绍:

函数计算(Function Compute)是一个事件驱动的全托管 Serverless
计算服务。您无需管理服务器等基础设施,只需编写代码并上传。函数计算会为您准备好计算资源,并以弹性、可靠的方式运行您的代码。

可以把函数计算理解成一个运行在容器里面的代码片段,我们只需要上传自己的代码片段,函数计算服务会自动帮我们处理运行环境和伸缩配置。但是函数计算只是用来运行一段代码的,它本身是没有上下文记录的功能的,所以官方的做法是搭配使用了阿里云的NAS服务(阿里云文件存储服务)。NAS相当于一台远程的移动硬盘,函数计算引擎可以与这块硬盘进行绑定,以实现文件操作。通过上面的介绍我们就可以看看基于函数计算的Wordpress是怎么架构的。

图2.函数计算Wordpress架构
图2. 函数计算Wordpress架构

如图2所示,客户端的请求会发送到函数计算服务器的PHP运行环境,该环境与NAS进行了绑定,所以我们的请求可以直接操作NAS里面的Wordpress文件。这里如果需要用到数据库的话,就会连接RDS(云数据库服务)进行数据的增删改查。由于所有的函数执行的时候都是对同一个NAS和RDS进行的操作,最后的效果就像是在同一台服务器上面进行的操作一样。
重点:Wordpress的源文件是存放在NAS上面的,函数计算仅仅是提供了一个入口,数据库在RDS上面,通过远程连接的方式进行访问。

3.流程

创建Wordpress博客系统一共需要4个步骤,如图3所示,分别是准备阶段、创建Wordpress、配置Wordpress和支持Https,如果不想支持Https的话,那第四步可以省略。

图3. 创建wordpress的流程
图3. 创建wordpress的流程

4.准备阶段

4.1购买域名

一个完整的个人博客需要有一个独立的域名,所以在开发之前需要申请一个个人域名,可以直接在万网官网进行申请,输入想要的域名下单购买就好。

图4. 万网购买域名
图4. 万网购买域名

4.2域名备案

购买域名之后就需要进行备案了,如果是在万网上面购买的域名,则可以直接使用阿里云的备案服务进行备案。在发起备案申请之后需要等待阿里云寄送一张幕布过来,收到幕布之后站在幕布前面手持生份证进行拍照提交审核就可以了,整个过程可能需要两周。

4.3开通函数计算服务

在阿里云开通函数计算服务,选择
免费开通
,这样就是按量付费,函数计算每月有100万次免费额度,基本上够我们使用了。

图5. 免费开通函数计算 图5.
免费开通函数计算

4.5开通NAS服务

在阿里云开通使用文件存储NAS服务即可。

图6. 开通NAS服务

4.6开通RDS服务

另外我们还需要为博客创建RDS数据库,进入阿里云,开通RDS-
MySQL版
,我购买的时候有新客优惠,一年仅需54元,如果没有优惠的话推荐购买3年及以上,这样更划算。

图7. RDS MySQL服务 图7.
RDS MySQL服务

5.创建Wordpress

准备工作完成之后我们就可以开发创建Wordpress了,首先需要下载函数计算的工具fun,并clone fc-wordpress代码到本地。

5.1下载fun工具

fun工具提供了多种方式安装,详细信息请查看[官方文档](https://github.com/alibaba/funcraft/blob/master/docs/usage/installation-
zh.md?spm=a2c6h.12873639.0.0.7b8427b4YkbbwW&file=installation-zh.md)。

5.2git clone fc-wordpress

将fc-wordpress到源码下载到本地。

git clone https://github.com/awesome-fc/fc-wordpress.git

5.3将Wordpress上传到NAS

5.3.1初始化NAS 这里我使用的是MySQL数据库,所以首先cd进入fc-wp-mysql文件夹(
强烈建议打开显示隐藏文件的功能,这样更容易理解步骤 ),执行以下命令:

fun nas init
fun nas info

fun nas init: 初始化 NAS, 基于您的 .env 中的信息获取(已有满足条件的nas)或创建一个同region可用的nas
如果你没有修改 templata.yml 中的配置 service名字, 那么则可以进入下一步; 如果有修改, 会在当前目录生成新的目录
.fun/nas/auto-default/{serviceName} (fun nas info 可以列出新的目录), 将默认目录下的
.fun/nas/auto-default/fc-wp-mysql/wordpress 的wordpress目录拷贝到 .fun/nas/auto-
default/{serviceName} 下, 同时可以删除目录 .fun/nas/auto-default/fc-wp-
mysql/wordpress

5.3.2上传到NAS 执行如下命令将本地的Wordpress文件上传到NAS:

fun nas sync
fun nas ls nas:///mnt/auto/

fun nas sync: 将本地 NAS 中的内容(.fun/nas/auto-default/fc-wp-mysql)上传到 NAS 中的
fc-wp-mysql 目录 fun nas ls nas:///mnt/auto/: 查看我们是否已经正确将文件上传到了NAS

5.4配置域名信息

修改 index.php 中的$host中的值, $host 修改为自己的域名, 修改 template.yml
DomainName: Auto , Auto 修改成自己的域名。 修改 template.yml LogConfig 中的 Project,
任意取一个不会重复的名字即可, 有两处地方需要更改,如图8所示。

图8.
修改template.yml
图8. 修改template.yml

5.5发布函数

执行fun deploy,完成最终的部署。 登录控制台 https://fc.console.aliyun.com ,可以看到service 和
函数已经创建成功, 并且 service 也已经正确配置。

  1. 通过浏览器自己的域名,即可看到Wordpress页面。

6.配置Wordpress

完成Wordpress安装之后我们就可以进行博客具体配置了,首次打开会提示选择一个语言,在底部有一个“简体中文”。选择语言之后就进入正式配置阶段,如图9所示。

![图9. Wordpress初始页面](https://file.2fun.xyz/2020/07/generate-wp-config-
file.png) 图9. Wordpress初始页面

6.1创建RDS数据库

如图9所示,我们需要提供一个数据库,这时可以去RDS
MYSQL控制台创建一个数据库。

6.1.1创建数据库账户 首先我们创建一个普通账号,用来管理博客的数据库。

图10. 创建普通账户 图10.
创建普通账户

6.1.2创建数据库 然后创建一个数据库,并将权限授予刚才的账户。

图11. 创建数据库 图11.
创建数据库

6.1.3设置白名单
这时我们的数据库还不能背外面访问,需要先设置白名单,为了简单,我这里是直接添加的允许0.0.0.0/0访问,如果想要更加精细的权限控制,可以查看官方文档

图12. 设置白名单 图12.
设置白名单

6.1.4获取外网地址 设置白名单之后就可以申请外网地址了。

图13. 获取RDS外网地址
图13. 获取RDS外网地址

6.2Wordpress绑定数据库

数据库创建成功之后就可以配置Wordpress的数据库信息了,需要注意的地方是 数据库主机要填写RDS的外网地址,而不是locallhost

图14. Wordpress绑定数据库
图14. Wordpress绑定数据库

6.3创建账户和网站信息

配置好数据库之后就可以进入网站信息配置页面了,如图15所示,需要填写网站标题、用户名、密码和邮箱等信息。

图15. 创建账户和网站信息 图15.
创建账户和网站信息

6.4网站个性化(可选)

经过上面的步骤,我们的网站就配置完成了,但是这时的网站还十分简陋,外观也不能达到我们的需求,所以我们需要对它换个皮。我尝试在Wordpress的后台直接安装主题,但是每一次都是安装失败,最后我找到了一种安装主题的方式:直接把主题文件上传到NAS里面。

6.4.1下载主题 首先去https://wordpress.org/themes 下载喜欢的主题,然后将主题的文件夹拷贝到本地fc-wordpress地址/fc-web- mysql/.fun/nas/auto-default/fc-wp-mysql/wordpress/wp- content/themes文件夹下面,如图16所示,writers文件夹就是我下载的主题。

下载主题 图16. 下载主题

6.4.2同步NAS 将主题复制到wordpress的主题文件夹之后,我们需要把本地的wordpress信息与NAS进行同步,执行fun nas sync即可将本地文件上传到NAS上面。这时在我们的Wordpress后台就可以看到新安装的主题了。

7支持Https(可选)

一切就这么顺利的完成了,直到我用Safari浏览器访问www.bearever.cn时,我感觉自己遭受了暴击!浏览效果如图17所示。

页面样式丢失 图17. 页面样式丢失

导致这个的原因是我们的博客现在还不支持Https,百度了一下怎么解决都说是需要改wp- config.php文件,这个文件是配置的时候创建在NAS上面的。问题难就难在这里,我没有办法下载NAS上面的文件进行修改,fun工具目前只支持列出文件目录,使用本地文件替换NAS文件,但是没有下载文件的功能。。。就在我一筹莫展的时候,发现了一个叫[really-
simple-ssl](https://wordpress.org/plugins/really-simple-
ssl/)的插件,官方描述说可以让你的网站轻松支持Https,带着试一试的态度下载安装,发现真的可以!

如果你要让你的博客支持Https的话,需要下载Https证书,然后更新函数计算域名信息,最后安装really-simple-
ssl
插件就可以了。

7.1下载Https证书

下载证书之前我们需要先去阿里云购买一个证书,然后下载下来。 7.1.1申请Https证书
在阿里云SSL平台购买一个证书,选择免费版的就可以了,如图18所示。

图18. 申请免费版Https证书
图18. 申请免费版Https证书

7.1.2下载证书 证书申请成功之后将证书下载到本地,下载的时候选择Nginx版本的。

7.2更新函数计算域名信息

函数计算控制台选择“自定义域名”,可以看到我们自己的域名信息,点击“修改”将支持协议改为“Http、Https”,如图19所示。其中.pem和.key文件的内容可以直接用记事本打开查看。

图19. 配置Https证书信息 图19.
配置Https证书信息

7.3安装really-simple-ssl插件

去[really-simple-ssl主页](https://wordpress.org/plugins/really-simple-
ssl/)下载插件,然后将插件文件夹复制到fc-wordpress地址/fc-web-mysql/.fun/nas/auto-default/fc-wp- mysql/wordpress/wp-content/plugins文件夹下面。执行fun nas sync将本地的本地的插件同步到NAS上面,最后打开Wordpress后台开启really-simple-ssl即可。

8.Enjoy

好了,一个Wordpress博客就这么部署完毕了,你已经迈出了成功的第一步,接下来就是不断的丰富你的博客,为她填充智慧与思想!

Search by:GoogleBingBaidu