网站搬家迁移完整教程:WordPress 网站换服务器、换域名,数据无损迁移全流程


网站的服务器要到期了、觉得现在的 VPS 性能不够、或者想从一台机器迁到另一台——网站搬家(迁移)是每个站长迟早要面对的事。很多人一听"搬家"就头大,怕数据丢、怕网站打不开。其实网站的迁移链路是有标准套路的:备份 → 迁移 → 恢复 → 改配置 → 验证。这篇文章以最常用的 WordPress 为例,把整站搬家的完整流程一步步讲透,照做就能无损迁移。

一、网站搬家前要准备什么

网站的本质是文件 + 数据库,只要这两样完整搬过去,网站就能恢复。所以先确认:

  1. 新服务器:已装好和原站相同的环境(Nginx/MySQL/PHP),参考本站 LNMP 或宝塔面板教程。
  2. 备份工具:命令行用 tar、mysqldump;宝塔面板自带备份功能。
  3. 域名解析权限:换服务器后需要把域名 A 记录指向新 IP。
  4. 必要的暂停窗口:迁移期间旧站最好暂停写入,保证数据一致。

二、第一步:备份网站文件

方法一:命令行打包(推荐)

登录旧服务器,把网站根目录打包:

cd /www/wwwroot
tar -czvf example.com.tar.gz example.com/

下载到本地:

scp root@旧服务器IP:/www/wwwroot/example.com.tar.gz ./

方法二:宝塔面板

宝塔后台"文件"里选中站点目录 → 打包下载;或用"网站"→"备份"功能,一键生成整站备份。

三、第二步:备份数据库

命令行导出:

mysqldump -uroot -p 数据库名 > example_db.sql

下载到本地:

scp root@旧服务器IP:/root/example_db.sql ./

(phpMyAdmin 里也可以"导出",详见本站 phpMyAdmin 教程。)

四、第三步:在新服务器恢复文件和数据库

1. 上传备份到新服务器:

scp example.com.tar.gz example_db.sql root@新服务器IP:/root/

2. 解压网站文件到新站点目录:

mkdir -p /www/wwwroot/example.com
cd /www/wwwroot/example.com
tar -xzvf /root/example.com.tar.gz
chown -R www:www /www/wwwroot/example.com

3. 恢复数据库:

先建一个空库和新用户:

mysql -uroot -p
CREATE DATABASE example_db DEFAULT CHARACTER SET utf8mb4;
CREATE USER 'example_user'@'localhost' IDENTIFIED BY '新密码';
GRANT ALL ON example_db.* TO 'example_user'@'localhost';
FLUSH PRIVILEGES;
EXIT;

再导入备份:

mysql -uroot -p example_db < /root/example_db.sql

五、第四步:修改网站配置文件

网站代码里的数据库连接信息、站点域名可能和原来不同,需要修改。

WordPress 修改 wp-config.php:

define('DB_NAME', 'example_db');       // 新数据库名
define('DB_USER', 'example_user');     // 新数据库用户
define('DB_PASSWORD', '新密码');       // 新数据库密码
define('DB_HOST', 'localhost');        // 数据库主机

// 如果换了域名,需额外设置
define('WP_HOME', 'https://www.example.com');
define('WP_SITEURL', 'https://www.example.com');

其他程序(Typecho、Emlog 等)通常在配置文件里也能找到数据库连接信息,照此修改即可。

六、第六步:更换域名时的数据库处理

如果是换域名(比如从 example.com 换成 newexample.com),文章内容里很多链接是旧域名,需要全局替换。

方法一:命令行替换数据库:

mysql -uroot -p example_db -e "
UPDATE wp_options SET option_value='https://newexample.com' WHERE option_name IN ('siteurl','home');
UPDATE wp_posts SET post_content = REPLACE(post_content, 'https://www.example.com', 'https://www.newexample.com');
UPDATE wp_posts SET guid = REPLACE(guid, 'https://www.example.com', 'https://www.newexample.com');
"

方法二:用插件最安全

推荐用 Better Search Replace 或 Search & Replace 插件,在后台操作,安全不误伤。

七、第七步:修改域名解析

换服务器时,把域名解析到新 IP:

  1. 到域名服务商后台,把 A 记录的目标 IP 改成新服务器 IP。
  2. 记录类型 A,主机记录 @ 和 www,记录值填新 IP。
  3. 等待解析生效(几分钟到几小时)。

如果没换域名、只是换服务器,改 IP 就完成了;如果换域名,还需在旧域名和新域名间做好跳转或待旧域名到期。

八、第八步:验证网站正常运行

1. 基础访问测试:

curl -I https://newexample.com
# 期望返回 HTTP 200

2. 后台登录测试: 用管理员账号登录 wp-admin,确认能正常登录。

3. 功能抽测: 发布一篇文章、传一张图片、查看文章页、测试评论——确保核心功能都正常。

4. 数据库连接: 确认前台无数据库报错。

5. 邮件和缓存: 如果站点配了邮件或缓存,一并确认。

一切正常后,再关闭旧服务器,避免旧站还被访问产生混淆。

九、搬家常见报错

Q1:打开网站提示"Error establishing a database connection"?

数据库连不上。检查 wp-config.php 里的数据库名、用户名、密码和主机是否填对,确认 MySQL 已启动。

Q2:页面能开但样式全乱了?

图片和 CSS 路径仍是旧域名。是换域名场景,需要按第六步替换数据库中的域名。

Q3:登录后台到一半跳到旧域名?

siteurl 和 home 还是旧值。用 Better Search Replace 插件替换,或直接在数据库里 UPDATE。

Q4:file not found 或 404?

Nginx 伪静态没配好,参考本站 WordPress 教程的伪静态配置。还要确认 wp-config.php 和站点文件路径正确。

总结

网站搬家没有想象中难,核心就一句话:文件 + 数据库完整搬走。按"备份文件 → 备份数据库 → 新机恢复 → 改配置 → 改解析 → 验证"的顺序走一遍,再配合换域名时的数据库全局替换,就能无损完成迁移。强烈建议迁移前先做一次完整备份,万事稳妥。


手机扫码阅读

微信或手机浏览器扫一扫,随时随地随心阅读与分享

域名注册购买指南:哪里买域名最便宜、怎么选后缀,新手避坑全指南

Nginx 限流限速配置教程:防 CC 攻击、保护后端,limit_req 与 limit_conn 实战

评 论
更换验证码