使用容器搭建 WordPress

1. 前言

作为一个程序员,大家都有一个使用自己域名搭建一个网站的心愿,哪怕这个网站是一个 WordPress。

从 2015 年第一篇博客算起,写了五年了。当初搭建的时候为了图便宜(每年 60 人民币)使用了万网的云虚拟主机,彼时万网还没有被阿里收购。

现在,万网的云虚拟主机虽然还能接着续,但是时不时就因为资源消耗超标被关闭。恰好,为了一些不知名的原因,我在 Vultr 购买了 VPS。我决定充分利用这个 VPS,把我的 WordPress 迁移到这个 VPS 上。

2. 迁移过程

五年前我安装 WordPress 的时候容器技术还没有成熟,我还特意写了一个脚本进行安装。

今天,我决定使用 WordPress 官方镜像来快速搭建,然后迁移数据。

2.1 安装 Docker

有意思的是按照我的理解 Vultr 的 VPS 就是一个单独的容器。也就是说,接下来我们要在容器里面跑容器,就是容器的套娃。

首先我们按照官方文档安装 Docker:

apt-get update
apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg-agent \
    software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add -
apt-key fingerprint 0EBFCD88
add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"
apt-get update
apt-get install docker-ce docker-ce-cli containerd.io

2.2 安装数据库

# 安装数据库
apt-get install mariadb-server

# 启动数据库
systemctl start mariadb

2.3 创建用户和授权

接下来我们要为 WordPress 创建数据库以及专属的用户并分配权限。

create database wordpress;
grant all privileges on wordpress.* to '<user>'@'172.17.0.2'  identified by '<password>';
flush privileges;

这里要注意的是 IP 部分写死了 172.17.0.2,这是 WordPress 容器访问所用的地址。

2.4 启动服务

docker run --name wordpress -e WORDPRESS_DB_HOST=172.17.0.1 -e WORDPRESS_DB_USER=wordpress -e WORDPRESS_DB_PASSWORD=wordpress -p 8000:80 -d wordpress

注意,我们把 WordPress 暴露的 80 端口映射到了宿主机(容器)的 8000 端口。

然后我们访问 VPS 的 8000 端口初始化 WordPress。

选择语言:

image-20200306004951786

基本设置:

image-20200306005123378

然后就结束了:

image-20200306005150137

2.5 数据迁移

2.5.1 安装插件

这里我们要介绍一个 WordPress 的插件来做迁移,名字叫做:All-in-One WP Migration

image-20200306005323777

这个插件的新版本在导入备份的时候会卡在 100% 的进度,大家可以先先下载,然后上传压缩包进行安装,下载地址可以点这里

2.5.2 备份和下载

然后使用导出功能:

image-20200306005445188

导出完成后下载到本地:

image-20200306005518211

2.5.3 修改上传文件的大小限制

在向新站点恢复数据之前,我们要修改 WordPress 上传文件的大小上限。参考这篇文章:How to Increase Maximum Upload File Size in WordPress

具体的执行方法:

root@MyHost:~# docker exec -it wordpress /bin/bash
root@ded70a3e6cab:/var/www/html# echo 'php_value upload_max_filesize 128M
php_value post_max_size 128M
php_value memory_limit 256M
php_value max_execution_time 300
php_value max_input_time 300' >> /var/www/html/.htaccess

2.5.4 恢复数据

下面在新站点导入备份数据,注意这里上传文件的大小,上面的修改生效了。

image-20200306154815174

中间会有提示,继续就好:

image-20200306154958077

显示完成:

image-20200306155034388

用原来的账号重新登录,提示要升级数据库:

image-20200306155154449

反正选择升级就好了。

至此,迁移完毕。

3. 后记

建议大家在初始化新站点之前先配置好域名,否则初始化会把当时的访问地址记下来,这个就容易悲剧了!

告别万网的云虚拟主机,可以起飞了!

发表评论