WordPress 网站迁移完整复盘
📋 迁移流程总结
阶段一:源服务器准备
- 备份网站文件
tar -czf blog.mozhongzhou.cn.tar.gz /var/www/wordpress
- 备份数据库
mysqldump -u username -p database_name > blog_mozhongzhou_full.sql
阶段二:新服务器环境搭建
- 安装必要软件
# 更新系统
sudo apt update && sudo apt upgrade -y
# 安装 Nginx、PHP、MySQL
sudo apt install nginx php8.3-fpm php8.3-mysql mysql-server -y
# 安装 PHP 扩展
sudo apt install php8.3-curl php8.3-gd php8.3-mbstring php8.3-xml php8.3-zip -y
- 配置基础服务
# 启动并设置开机自启
sudo systemctl start nginx php8.3-fpm mysql
sudo systemctl enable nginx php8.3-fpm mysql
阶段三:部署网站文件
- 上传文件到新服务器
# 上传备份文件
scp blog.mozhongzhou.cn.tar.xz user@new-server:/html/
scp blog_mozhongzhou_full.sql user@new-server:/html/
- 解压文件
cd /html
tar -xvf blog.mozhongzhou.cn.tar.xz
- 设置文件权限
sudo chown -R www-data:www-data /html/blog.mozhongzhou.cn
sudo find /html/blog.mozhongzhou.cn -type d -exec chmod 755 {} \;
sudo find /html/blog.mozhongzhou.cn -type f -exec chmod 644 {} \;
sudo chmod -R 775 /html/blog.mozhongzhou.cn/wp-content/
阶段四:配置数据库
- 创建数据库和用户
CREATE DATABASE blog_mozhongzhou CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'blog_user'@'localhost' IDENTIFIED BY 'strong_password';
GRANT ALL PRIVILEGES ON blog_mozhongzhou.* TO 'blog_user'@'localhost';
FLUSH PRIVILEGES;
- 导入数据
sudo mysql -u root -p blog_mozhongzhou < blog_mozhongzhou_full.sql
- 更新数据库 URL
UPDATE wp_options SET option_value = 'https://blog.mozhongzhou.cn' WHERE option_name = 'siteurl';
UPDATE wp_options SET option_value = 'https://blog.mozhongzhou.cn' WHERE option_name = 'home';
阶段五:配置 Nginx
- 创建 Nginx 配置文件
server {
listen 80;
server_name blog.mozhongzhou.cn;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl;
server_name blog.mozhongzhou.cn;
root /html/blog.mozhongzhou.cn;
index index.php index.html index.htm;
# WordPress 重写规则
location / {
try_files $uri $uri/ /index.php?$args;
}
# PHP 处理
location ~ \.php$ {
include fastcgi_params;
fastcgi_pass unix:/run/php/php8.3-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
location ~ /\.ht {
deny all;
}
client_max_body_size 64M;
}
- 启用站点
sudo ln -s /etc/nginx/sites-available/blog.mozhongzhou.cn /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
阶段六:配置 SSL 证书
- 获取 Let’s Encrypt 证书
sudo certbot --nginx -d blog.mozhongzhou.cn
选择:
- 输入邮箱
- 同意服务条款
- 选择 “2” 重定向所有 HTTP 到 HTTPS
- 验证自动续期
sudo certbot renew --dry-run
阶段七:配置 WordPress
- 更新 wp-config.php
define('DB_NAME', 'blog_mozhongzhou');
define('DB_USER', 'blog_user');
define('DB_PASSWORD', 'strong_password');
define('DB_HOST', 'localhost');
// 强制 HTTPS
define('WP_HOME', 'https://blog.mozhongzhou.cn');
define('WP_SITEURL', 'https://blog.mozhongzhou.cn');
阶段八:DNS 切换
- 修改域名解析
类型:A
主机:blog
值:新服务器IP地址
TTL:自动
- 等待 DNS 传播
# 检查 DNS 传播
nslookup blog.mozhongzhou.cn
dig blog.mozhongzhou.cn
🎯 遇到的关键问题和解决方案
问题1:PHP-FPM 版本不匹配
问题:默认 PHP-FPM 服务名不对
解决:
# 使用正确的版本号
sudo systemctl status php8.3-fpm
# 配置中使用:fastcgi_pass unix:/run/php/php8.3-fpm.sock;
问题2:证书配置循环依赖
问题:Nginx 配置引用了不存在的证书文件
解决:
- 先配置简单的 HTTP-only 配置
- 运行 certbot 获取证书
- certbot 自动更新配置
问题3:文件路径错误
问题:/home/html vs /html
解决:修正 root 路径
root /html/blog.mozhongzhou.cn; # 正确
# 不是 root /home/html/blog.mozhongzhou.cn;
问题4:权限问题
解决:
sudo chown -R www-data:www-data /html/blog.mozhongzhou.cn
sudo chmod -R 755 /html/blog.mozhongzhou.cn
📊 迁移检查清单
- [ ] 网站文件完整解压
- [ ] 数据库成功导入
- [ ] Nginx 配置正确
- [ ] PHP-FPM 运行正常
- [ ] SSL 证书有效
- [ ] 文件权限设置正确
- [ ] WordPress 配置更新
- [ ] DNS 解析生效
- [ ] 网站可正常访问
- [ ] HTTPS 强制启用
🔧 常用诊断命令
# 检查服务状态
sudo systemctl status nginx php8.3-fpm mysql
# 测试配置
sudo nginx -t
# 查看日志
sudo tail -f /var/log/nginx/error.log
sudo tail -f /var/log/php8.3-fpm.log
# 测试访问
curl -I https://blog.mozhongzhou.cn
curl -I https://blog.mozhongzhou.cn
# 检查证书
sudo certbot certificates
🚀 优化建议(可选)
- 启用缓存:安装 Redis 或 Memcached
- CDN 配置:启用 Cloudflare 缓存
- 图片优化:使用 WebP 格式
- 安全加固:安装 Wordfence 安全插件
- 备份策略:设置自动备份
✅ 迁移成功标志
- 网站可以通过 HTTPS 正常访问
- 所有页面链接正常工作
- 图片和媒体文件正常加载
- WordPress 后台可正常登录
- SSL 证书有效且自动续期配置正常
总结:迁移 WordPress 网站的关键是确保文件路径正确、PHP版本匹配、数据库连接正常、SSL证书配置正确。遵循这个流程,可以顺利完成迁移。




