【WordPress】WordPress 迁移

WordPress 迁移

1、迁移步骤

1.1、环境准备

创建 fpm 用户和用户组

安装 nginx 和 php 编译所需的 lib

1.2、迁移 Nginx

安装 nginx

拷贝旧 nginx 配置,以及对配置中 fpm 的 IP 作调整

拷贝 SSL 证书文件

1.3、升级和安装 PHP

将原 php7 升级到 php8,并部署到新的服务器

配置并启动 php-fpm

1.4、升级和迁移 MySQL

将原 mysql5 升级到 mysql8,并部署到新的服务器

停止旧 nginx,避免有新的数据进入 mysql 和产生新的 WordPress 文件

备份旧 mysql 中的数据,并导入新的 mysql

1.5、迁移 WordPress 程序和文件

备份旧 WordPress 目录下所有的文件,并拷贝到新的新服务器中

修改新 WordPress 目录的权限,保持与 php-fpm 一致

1.6、修改域名的地址解析

修改域名解析后的 IP,指向新的服务器

2、升级和迁移

2.1、MySQL

针对 Docker 安装的 MySQL,修改下 docker-compose 文件,以下是 MySQL8 的参考:

version: '3.1'
services:
  mysql:
    image: mysql:8.0.20
    container_name: mysql
    ports:
      - 3306:3306
    volumes:
     - ./mysql/data:/var/lib/mysql
      - ./mysql/logs:/var/log/mysql
      - ./mysql/conf/my.cnf:/etc/mysql/my.cnf
    environment:
      TZ: Asia/Shanghai
      # root 用户密码
      MYSQL_ROOT_PASSWORD: xxxx
      # 自定义用户
      MYSQL_USER: middle
      MYSQL_PASSWORD: xxxxx
    command:
      --default-authentication-plugin=mysql_native_password
      --max_connections=1000
      --character-set-server=utf8mb4
      --collation-server=utf8mb4_general_ci
      --default-time-zone='+8:00'
      --explicit_defaults_for_timestamp=true
      --lower_case_table_names=1
      --expire-logs-days=7
    privileged: true
    logging:
      driver: "json-file"
      options:
        max-size: "100m"
    restart: always

2.2、PHP

将 PHP7 升级到 PHP8,以下是采用源码编译的方式。

源码编译比较麻烦,步骤如下,参考:https://www.php.net/manual/zh/install.unix.debian.php

1、下载 php8 源码

2、安装必要的依赖(不同版本的 php 所需的依赖有重叠,也有差异)

3、php8 编译配置(如下 ./configure)

4、make && make install

5、添加 php-fpm.conf 和 www.conf 配置

6、修改 /usr/local/php8(编译产物目录) 的权限

# 包含 mysqli fpm 等必要模块
# 声明 fpm user 和 group 为指定的 fpm

./configure --prefix=/usr/local/php8 \
    --with-mysqli=mysqlnd \
    --with-pdo-mysql=mysqlnd \
    --enable-mysqli \
    --enable-mysqlnd \
    --enable-bcmath \
    --enable-fpm \
    --with-fpm-user=fpm \
    --with-fpm-group=fpm \
    --enable-mbstring \
    --enable-phpdbg \
    --enable-shmop \
    --enable-sockets \
    --enable-sysvmsg \
    --enable-sysvsem \
    --enable-sysvshm \
    --enable-zip \
    --with-libzip=/usr/lib/x86_64-linux-gnu \
    --with-zlib \
    --with-curl \
    --with-pear \
    --with-openssl \
    --enable-pcntl \
    --with-readline

3、遇到的问题

场景:php configure

提问:遇到 oniguruma not met

原因:没有安装 oniguruma 依赖

解答:安装 oniguruma 和 oniguruma-devel

场景:yum search oniguruma-devel no match

提问:找不到 oniguruma-devel (

原因:有 epel 源,但没有 oniguruma-devel。此 epel 是 for 腾讯 os 镜像,而 redhat epel 是有的

解答:替换成 epel for redhat

场景:php configure 缺少各种 lib

解答:安装各种 lib

场景:mysql5 数据迁移至 mysql8,部分表能够创建和导入数据

提问:为什么 sql 脚本执行失败

原因:数据导入时,出现 Incorrect datetime value: ‘0000-00-00 00:00:00 错误,这个错误是因为 mysql5 和 mysql8 对时间处理机制不同导致,mysql8 对时间类型的数据有严格限制,导致值为 0000-00-00 00:00:00 的数据都插入失败。

解答:只要将包含 0000-00-00 00:00:00 数据改为正常时间值

场景:mysql5 数据迁移至 mysql8

提问:WordPress 拷贝的程序,是否需要声明 mysql 版本

解答:无需要声明 mysql 版本,WordPress5.6 以上版本支持 mysql8,并且会自动处理兼容问题

提问:如何修改 WordPress 程序连接新的 mysql

解答:修改 WordPress 目录下 wp-config.php 文件,找到并修改代码 define(‘DB_HOST’, ‘localhost’);

场景:将原 WordPress 程序和数据拷贝到新的服务器

提问:WordPress 的程序和文件拷贝到新的服务器,是否就像旧服务器上的程序那样运行正常。

解答:是的,注意 WordPress 的权限与 fpm 保持一直

4、收尾工作

1、删除数据和文件

2、观察数据和程序迁移后的运行情况

创作不易,转载请注明出处: 【WordPress】WordPress 迁移
上一篇
下一篇