wordpress 应用教程

wordpress怎么迁移到另一机器,且域名也变动,如:测试版:test.850899.xyz,构建好了就换机器为生产版https://isrv.cn/,为此还要保证媒体库插图到文章在新域名能显示才行

非常好,这个问题很关键,尤其涉及 域名变更 + 服务器迁移 + 媒体库路径修复。下面我会一步步帮你完整实现迁移,确保换到新机器和新域名后文章、图片都正常显示。


🧭 场景说明

目标:

把 WordPress 从测试机迁移到生产机,并让所有文章、媒体库图片、链接都指向新域名。


🧩 一、迁移流程总览

步骤 操作
1 备份测试机的数据库与 wp-content 目录
2 拷贝文件到生产机(含 wp-content)
3 导入数据库并修改站点域名
4 更新数据库中旧域名(图片、文章内链接)
5 检查媒体库、固定链接与 Nginx 配置
6 验证访问效果

🪣 二、备份旧站(测试机)

1. 导出数据库

# 假设数据库名为 wordpress,用户名为 wpuser
mysqldump -u wpuser -p wordpress > /root/wp_backup.sql

2. 打包网站文件(尤其 wp-content)

cd /www/wwwroot/test.850899.xyz
tar -czf /root/wp_files.tar.gz wp-content wp-config.php

/root/wp_backup.sql/root/wp_files.tar.gz 拷贝到新服务器,例如:

scp /root/wp_backup.sql /root/wp_files.tar.gz root@1.94.254.213:/root/

🖥️ 三、在生产机还原站点

1. 创建数据库

mysql -u root -p
CREATE DATABASE wordpress CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
CREATE USER 'wpuser'@'localhost' IDENTIFIED BY 'your_password';
GRANT ALL PRIVILEGES ON wordpress.* TO 'wpuser'@'localhost';
FLUSH PRIVILEGES;
EXIT;

2. 导入旧数据库

mysql -u wpuser -p wordpress < /root/wp_backup.sql

3. 还原文件

cd /www/wwwroot/isrv.cn
tar -xzf /root/wp_files.tar.gz

确保 wp-config.php 中的数据库连接信息与新环境匹配。


🔁 四、修改域名(WordPress 内)

有两部分要改:

  1. WordPress 配置(站点地址)
  2. 数据库内文章、图片等的链接路径

1️⃣ 修改站点 URL(两种方法)

方法 A:直接在数据库改(推荐)

USE wordpress;
UPDATE wp_options SET option_value='https://isrv.cn' WHERE option_name IN ('siteurl', 'home');

方法 B:临时修改 wp-config.php

define('WP_HOME', 'https://isrv.cn');
define('WP_SITEURL', 'https://isrv.cn');

访问正常后可以去掉这两行,让数据库生效。


🧰 五、全局替换旧域名

最关键的一步:

替换文章、媒体库、页面中的旧 URL(如 test.850899.xyz/wp-content/uploads/...)

使用 WP-CLI(如果安装了):

wp search-replace 'https://test.850899.xyz' 'https://isrv.cn' --skip-columns=guid

或者在 MySQL 中执行:

UPDATE wp_posts SET post_content = REPLACE(post_content, 'https://test.850899.xyz', 'https://isrv.cn');
UPDATE wp_postmeta SET meta_value = REPLACE(meta_value, 'https://test.850899.xyz', 'https://isrv.cn');

--skip-columns=guid 是为了不改动文章永久链接 ID 字段。


🧱 六、Nginx 配置生产域名

例如:

server {
    listen 80;
    server_name isrv.cn www.isrv.cn;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl;
    server_name isrv.cn www.isrv.cn;

    ssl_certificate /etc/ssl/isrv.cn.crt;
    ssl_certificate_key /etc/ssl/isrv.cn.key;

    root /www/wwwroot/isrv.cn;
    index index.php index.html;

    location / {
        try_files $uri $uri/ /index.php?$args;
    }

    location ~ \.php$ {
        include fastcgi.conf;
        fastcgi_pass unix:/run/php-fpm/www.sock;
    }

    location ~* \.(jpg|jpeg|png|gif|webp|ico|css|js|svg)$ {
        expires 30d;
        access_log off;
    }
}

然后:

sudo nginx -t && sudo systemctl reload nginx

✅ 七、检查与验证

  1. 登录 https://isrv.cn/wp-admin

  2. 检查:

    • 设置 → 常规 → 站点地址、WordPress 地址
    • 媒体 → 图片能正常显示
    • 文章内链接是否指向新域名
  3. 若部分图片仍显示旧域名,可再次运行:

    wp search-replace 'http://test.850899.xyz' 'https://isrv.cn'
    

💡 小贴士


是否希望我帮你生成一个 完整迁移脚本(bash)
那样你只需要修改域名和数据库参数就能一键迁移。

分割线================================

太好了 👍
下面给你一个 一键迁移脚本(bash),支持:


🧩 一、脚本说明


📜 二、迁移脚本:wp-migrate.sh

在旧机器上执行即可(会自动登录新机器执行导入部分)

#!/bin/bash
# ----------------------------
# WordPress 一键迁移脚本
# ----------------------------
# 使用前请修改以下变量
# ----------------------------

# 域名配置
OLD_DOMAIN="https://test.850899.xyz"
NEW_DOMAIN="https://isrv.cn"

# 数据库信息(旧机器)
OLD_DB_NAME="wordpress"
OLD_DB_USER="wpuser"
OLD_DB_PASS="your_old_db_password"

# 数据库信息(新机器)
NEW_DB_NAME="wordpress"
NEW_DB_USER="wpuser"
NEW_DB_PASS="your_new_db_password"

# 新服务器信息
NEW_SERVER="root@1.94.254.213"   # 修改为你的生产服务器IP
NEW_PATH="/www/wwwroot/isrv.cn"  # WordPress 目录路径

# ----------------------------
echo ">>> 开始导出旧站点数据库与文件..."
mysqldump -u${OLD_DB_USER} -p${OLD_DB_PASS} ${OLD_DB_NAME} > /root/wp_backup.sql
tar -czf /root/wp_files.tar.gz wp-content wp-config.php

echo ">>> 上传到新服务器..."
scp /root/wp_backup.sql /root/wp_files.tar.gz ${NEW_SERVER}:/root/

# ----------------------------
echo ">>> 登录新服务器执行导入..."
ssh ${NEW_SERVER} bash -s <<EOF
set -e
echo ">>> 创建数据库..."
mysql -u root -p <<SQL
CREATE DATABASE IF NOT EXISTS ${NEW_DB_NAME} CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
CREATE USER IF NOT EXISTS '${NEW_DB_USER}'@'localhost' IDENTIFIED BY '${NEW_DB_PASS}';
GRANT ALL PRIVILEGES ON ${NEW_DB_NAME}.* TO '${NEW_DB_USER}'@'localhost';
FLUSH PRIVILEGES;
SQL

echo ">>> 导入数据库..."
mysql -u ${NEW_DB_USER} -p${NEW_DB_PASS} ${NEW_DB_NAME} < /root/wp_backup.sql

echo ">>> 解压文件..."
mkdir -p ${NEW_PATH}
cd ${NEW_PATH}
tar -xzf /root/wp_files.tar.gz

echo ">>> 更新 wp-config.php 数据库配置..."
sed -i "s/define('DB_NAME'.*/define('DB_NAME', '${NEW_DB_NAME}');/g" wp-config.php
sed -i "s/define('DB_USER'.*/define('DB_USER', '${NEW_DB_USER}');/g" wp-config.php
sed -i "s/define('DB_PASSWORD'.*/define('DB_PASSWORD', '${NEW_DB_PASS}');/g" wp-config.php

echo ">>> 修改 WordPress 站点域名..."
mysql -u ${NEW_DB_USER} -p${NEW_DB_PASS} ${NEW_DB_NAME} <<SQL
UPDATE wp_options SET option_value='${NEW_DOMAIN}' WHERE option_name IN ('siteurl', 'home');
UPDATE wp_posts SET post_content = REPLACE(post_content, '${OLD_DOMAIN}', '${NEW_DOMAIN}');
UPDATE wp_postmeta SET meta_value = REPLACE(meta_value, '${OLD_DOMAIN}', '${NEW_DOMAIN}');
SQL

echo ">>> 设置权限..."
chown -R www-data:www-data ${NEW_PATH}
chmod -R 755 ${NEW_PATH}

echo ">>> 已完成迁移到 ${NEW_DOMAIN}"
EOF

echo "✅ WordPress 迁移完成!请在浏览器访问:${NEW_DOMAIN}"

⚙️ 三、使用方法

  1. 将脚本保存为:

    nano /root/wp-migrate.sh
    

    粘贴上面的内容后,修改你的数据库密码、服务器 IP、路径。

  2. 赋予执行权限:

    chmod +x /root/wp-migrate.sh
    
  3. 执行迁移:

    ./wp-migrate.sh
    
  4. 等待自动完成后,访问新域名 https://isrv.cn


🧪 四、迁移后检查

✅ 登录后台:https://isrv.cn/wp-admin
✅ 检查:


是否希望我帮你改写这个脚本,让它支持 远程 MySQL(例如 MariaDB 在另一台服务器上)
那样迁移时也能直接跨主机更新数据库,不必在目标机安装 MySQL。

分割线================================

那更好,之后我只需要将数据库安装在一台机器,其它机器连接即可,免去再各自安装mysql占用资源

完美 👍
你的这个想法非常对 —— 让多台 WordPress(或其它服务)共享一台 集中式数据库服务器,不仅节省资源,还方便统一备份与迁移。

下面我帮你升级脚本,让它支持:

数据库独立部署(远程连接)
多 WordPress 实例共用同一 MySQL / MariaDB 服务器
迁移时无需在目标机器上安装数据库
自动更新远程数据库中所有域名引用(媒体库、文章等)


🧠 场景举例

项目
测试站(旧) https://test.850899.xyz
生产站(新) https://isrv.cn
数据库服务器 192.168.2.108
数据库用户 wpuser
数据库密码 wp_PASS_123
数据库名 wordpress
WordPress 新目录 /www/wwwroot/isrv.cn

📜 一键迁移脚本:wp-migrate-remote-db.sh

#!/bin/bash
# -------------------------------------------
# WordPress 一键迁移脚本(支持远程数据库)
# -------------------------------------------

# 修改以下配置 👇👇👇

# 域名配置
OLD_DOMAIN="https://test.850899.xyz"
NEW_DOMAIN="https://isrv.cn"

# 数据库配置(远程集中数据库)
DB_HOST="192.168.2.108"
DB_PORT="3306"
DB_NAME="wordpress"
DB_USER="wpuser"
DB_PASS="wp_PASS_123"

# 新服务器(WordPress目标主机)
NEW_SERVER="root@1.94.254.213"   # 生产服务器 IP
NEW_PATH="/www/wwwroot/isrv.cn"  # WordPress 路径

# -------------------------------------------

echo ">>> 导出数据库(从远程数据库服务器)..."
mysqldump -h${DB_HOST} -P${DB_PORT} -u${DB_USER} -p${DB_PASS} ${DB_NAME} > /root/wp_backup.sql

echo ">>> 打包 WordPress 文件..."
tar -czf /root/wp_files.tar.gz wp-content wp-config.php

echo ">>> 上传到新服务器..."
scp /root/wp_backup.sql /root/wp_files.tar.gz ${NEW_SERVER}:/root/

echo ">>> 登录新服务器执行导入..."
ssh ${NEW_SERVER} bash -s <<EOF
set -e
echo ">>> 解压 WordPress 文件到 ${NEW_PATH}"
mkdir -p ${NEW_PATH}
cd ${NEW_PATH}
tar -xzf /root/wp_files.tar.gz

echo ">>> 更新 wp-config.php 远程数据库配置..."
sed -i "s/define('DB_NAME'.*/define('DB_NAME', '${DB_NAME}');/g" wp-config.php
sed -i "s/define('DB_USER'.*/define('DB_USER', '${DB_USER}');/g" wp-config.php
sed -i "s/define('DB_PASSWORD'.*/define('DB_PASSWORD', '${DB_PASS}');/g" wp-config.php
sed -i "s/define('DB_HOST'.*/define('DB_HOST', '${DB_HOST}:${DB_PORT}');/g" wp-config.php

echo ">>> 设置文件权限..."
chown -R www-data:www-data ${NEW_PATH}
chmod -R 755 ${NEW_PATH}
EOF

echo ">>> 更新远程数据库中域名..."
mysql -h${DB_HOST} -P${DB_PORT} -u${DB_USER} -p${DB_PASS} ${DB_NAME} <<SQL
UPDATE wp_options SET option_value='${NEW_DOMAIN}' WHERE option_name IN ('siteurl', 'home');
UPDATE wp_posts SET post_content = REPLACE(post_content, '${OLD_DOMAIN}', '${NEW_DOMAIN}');
UPDATE wp_postmeta SET meta_value = REPLACE(meta_value, '${OLD_DOMAIN}', '${NEW_DOMAIN}');
SQL

echo "✅ WordPress 已成功迁移并连接远程数据库:${DB_HOST}"
echo "✅ 新站点访问地址:${NEW_DOMAIN}"

🧰 使用方法

  1. 在旧服务器保存脚本:

    nano /root/wp-migrate-remote-db.sh
    

    按实际情况修改顶部变量。

  2. 赋予执行权限:

    chmod +x /root/wp-migrate-remote-db.sh
    
  3. 执行迁移:

    ./wp-migrate-remote-db.sh
    

🧱 数据库远程访问配置(只需做一次)

1️⃣ 修改数据库服务器配置文件(MariaDB / MySQL)

编辑:

sudo vim /etc/my.cnf.d/server.cnf

确保 [mysqld] 段有:

bind-address = 0.0.0.0

然后重启服务:

sudo systemctl restart mariadb

2️⃣ 允许远程访问权限

登录数据库:

mysql -u root -p

执行:

GRANT ALL PRIVILEGES ON wordpress.* TO 'wpuser'@'%' IDENTIFIED BY 'wp_PASS_123';
FLUSH PRIVILEGES;

🧾 验证步骤

  1. 在新机器执行:

    mysql -h192.168.2.108 -uwpuser -p
    

    → 能连上即代表远程数据库OK。

  2. 打开浏览器访问新站: https://isrv.cn

  3. 后台检查:

    • 设置 → 常规 中的 WordPress 地址 / 站点地址
    • 媒体库、文章图片是否正常加载。

💡 延伸建议

💾 1. 集中数据库备份

在数据库服务器上每天自动备份:

mysqldump -u root -p wordpress > /opt/backup/wp_$(date +%F).sql

🧮 2. 多站共享数据库

可以让多个 WordPress 使用同一 MySQL 服务,只需:


是否希望我再帮你改进一版脚本,让它能 批量迁移多个 WordPress 站点(如 blog1 → blog2 → blog3),并全部接入同一远程数据库?
适合你后续多站部署时一键操作。

分割线================================