网站的服务器要到期了、觉得现在的 VPS 性能不够、或者想从一台机器迁到另一台——网站搬家(迁移)是每个站长迟早要面对的事。很多人一听"搬家"就头大,怕数据丢、怕网站打不开。其实网站的迁移链路是有标准套路的:备份 → 迁移 → 恢复 → 改配置 → 验证。这篇文章以最常用的 WordPress 为例,把整站搬家的完整流程一步步讲透,照做就能无损迁移。
一、网站搬家前要准备什么
网站的本质是文件 + 数据库,只要这两样完整搬过去,网站就能恢复。所以先确认:
- 新服务器:已装好和原站相同的环境(Nginx/MySQL/PHP),参考本站 LNMP 或宝塔面板教程。
- 备份工具:命令行用 tar、mysqldump;宝塔面板自带备份功能。
- 域名解析权限:换服务器后需要把域名 A 记录指向新 IP。
- 必要的暂停窗口:迁移期间旧站最好暂停写入,保证数据一致。
二、第一步:备份网站文件
方法一:命令行打包(推荐)
登录旧服务器,把网站根目录打包:
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:
- 到域名服务商后台,把 A 记录的目标 IP 改成新服务器 IP。
- 记录类型 A,主机记录
@和www,记录值填新 IP。 - 等待解析生效(几分钟到几小时)。
如果没换域名、只是换服务器,改 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 和站点文件路径正确。
总结
网站搬家没有想象中难,核心就一句话:文件 + 数据库完整搬走。按"备份文件 → 备份数据库 → 新机恢复 → 改配置 → 改解析 → 验证"的顺序走一遍,再配合换域名时的数据库全局替换,就能无损完成迁移。强烈建议迁移前先做一次完整备份,万事稳妥。
