WordPress是一种非常流行的博客网站平台,也可以当作一个内容管理系统(CMS)来使用, 是世界上使用最广泛的博客系统之一。WordPress有非常多优秀的插件,使得这个开源产品变得非常容易扩展,满足不同的需求。
我准备利用一个系列的文章,来展示如果利用阿里云的各种产品(弹性计算,数据库,安全等等),搭建一个完整的WordPress网站。内容包括:
- 一、 搭建基础网站应用
- 二、 域名,短信和邮箱
- 三、 动静分离和CDN加速
- 四、 数据库缓存和管理
- 五、 服务器横向扩展
- 六、 网站安全
一、搭建基础网站应用
搭建一个基本的网站还是比较简单的,我们一步一步来,这个部分的架构图如下,包括:
- VPC虚拟网络:在阿里公有云环境中建立出一个二层逻辑隔离的局域网络环境,大部分产品都会部署在这个安全的环境中
- ECS服务器:安装WordPress应用程序,是整个网站的核心
- MySQL数据库:存储WordPress数据
- NAS文件存储:存储WordPress应用文件和上传文件
- 弹性公网IP(EIP):对外暴露的IP地址
准备VPC虚拟网络
VPC虚拟网络(https://www.aliyun.com/product/vpc)需要规划,可以很简单,一个VPC一个路由表搞定;也可以很复杂,跨地域多VPC还要和线下机房不冲突。网络规划建议看看这篇:https://help.aliyun.com/document_detail/54095.html。这次为了演示方便,采用简单的一个VPC的方式即可。
准备EIP弹性公网IP
最好不要用ECS的绑定固定IP,未来升级换代迁移啥啥都不方便,买个BGP多线公网EIP(https://www.aliyun.com/product/eip),可以方便地把IP保留下来,价格也和固定IP一样,没道理不选EIP。购买之后IP记下来备用。
准备ECS服务器
对于WordPress来说,通用型g5系列或者计算型的c5系列都是不错的ECS服务器(https://www.aliyun.com/product/ecs)选择,操作系统我选的是CentOS,大家可以随意。
注意使用的VPC,另外注意不申请公网带宽,绑定之前那个弹性公网IP比较灵活。
ECS启动起来后,绑定前面买的EIP
确定安全组里面80端口是打开的(默认是打开的),WordPress一般是利用80端进行对外服务的。如果没有打开的话,填一条也很简单。
准备MySQL数据库
WordPress使用的是MySQL数据库(https://www.aliyun.com/product/rds/mysql)。阿里云MySQL数据库的高可用版采用经典一主一备的双机热备架构,适合80%以上的业务情况。主节点故障时,主备节点秒级完成切换,整个切换过程对应用透明。提供单可用区实例和多可用区实例,主备节点位于同一地域的不同可用区,提供跨可用区的容灾能力,且不额外收费。买的时候要注意VPC的选择。
启动起来之后,需要加载内网地址(添加ECS白名单)才能用起来。选择对应的ECS即可。
创建好了之后注意获取内网地址,后面会用到。
然后为数据库创建账号一个root,为了演示方便我开了一个高权限账号,但是也比较危险,建议大家还是老老实实用普通账号做授权吧。
然后添加一个空的数据库wordpress给应用使用,因为有了root账号,就没有用授权账号了
准备NAS文件存储
为什么要用到NAS存储(https://www.aliyun.com/product/nas)呢?主要原因在于未来进行横向扩展之后,应用数据不再需要复制同步,方便运维。可以来一个SSD性能型,另外最近还上了一款更厉害的极速型,时延可以达到0.5ms,回头有机会可以试一下。
创建之后添加一个挂载点,注意选择VPC。
创建完成后记录下来挂载点,备后面使用。
在ECS中挂载NAS
首先将NAS挂载上面,参考:https://help.aliyun.com/document_detail/91476.html。
用root用户登陆到ECS里面去,并执行下面的命令,安装NFS客户端并创建挂载目录。
sudo yum install nfs-utils
mkdir /root/wordpressdata
为了可以实现开机自动挂载NFS,需要修改/etc/fstab文件并添加类似下面这样的一条记录。注意里面的挂载点要替换成前面创建的NAS挂载点,挂载目录如果有变化也需要注意。
12bcb24a3ad-mkb68.cn-hongkong.nas.aliyuncs.com:/
/root/wordpressdata nfs4
vers=4.0,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,_netdev,noresvport 0 0
然后重启ECS,用df –h命令查看一下是否确实挂载成功。如果没有挂载成功怎么办?再重启一次试试!
在ECS中安装Docker并启动WordPress镜像
安装WordPress参考一下官方安装手册,https://codex.wordpress.org/zh-cn:%E5%AE%89%E8%A3%85_WordPress。这次演示我采用了docker的方式,相对更方便些。本着自己折腾比较好玩的精神,自己搭一个docker很方便。阿里云也有自己的ECI弹性容器实例(https://www.aliyun.com/product/eci),有兴趣可以试一试。
首先安装docker,参考:https://docs.docker.com/install/linux/docker-ce/centos/
sudo yum install -y yum-utils \
device-mapper-persistent-data \
lvm2
sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
sudo yum install docker-ce docker-ce-cli containerd.io
下面两个命令,第一个启动docker,第二个让docker在ECS重启时都可以自动启动
sudo systemctl start docker
sudo systemctl enable docker
docker安装好了,然后在ECS中拉取并启动WordPress的镜像。首先要在NAS里面创建一个目录来存放WordPress应用文件,并且将镜像中的/var/www/html目录映射到这个目录中。另外也要将80端口也映射出来。
mkdir /root/wordpressdata/html
docker run --name mywordpress \
-p 80:80 \
-v /root/wordpressdata/html:/var/www/html \
-d --restart=always wordpress
利用docker ps看一下是不是跑起来了。
docker ps
在ECS中设置WordPress
打开浏览器,输入EIP的地址,如果不出意外就可以打开WordPress网站了。第一次使用设置语言,当然是中文啦。
第二步设置数据库,里面的信息是之前创建数据库的时候设置的。
然后设置站点名称,管理员用户等信息。
不出意外就这么搞定了,用IP就可以访问WordPress网站了。