1. 迁移前准备与访问测试
准备小夜博客
香港VPS账号与SSH密钥;确认VPS系统(Ubuntu/Debian/CentOS)版本;本地博客运行正常并记录网站根路径、数据库名、用户和密码;在本地降低 DNS TTL(若使用真实域名)以便切换更快;测试能通过ssh -p 22 user@vps-ip 登录。
2. 全量备份本地文件与数据库
文件:进入网站根目录运行tar -czf site_files_$(date +%F).tar.gz . 来压缩全部站点文件;数据库(以MySQL/WordPress为例):mysqldump -u dbuser -p dbname > db_backup_$(date +%F).sql;同时备份配置文件(nginx/apache、.htaccess、wp-config.php)。
3. 安全地上传备份到VPS
使用scp或rsync上传:scp site_files_*.tar.gz db_backup_*.sql user@vps-ip:/home/user/ 或 rsync -avz --progress . user@vps-ip:/home/user/site_backup/;优先使用rsync以节省带宽;确认上传文件完整(ls -lh 和 sha256sum 对比)。
4. 在VPS上安装环境并恢复文件
在VPS上安装Nginx/Apache、PHP、MySQL/MariaDB(sudo apt update && sudo apt install nginx php-fpm mysql-server);在/var/www/下建立站点目录并解压备份:tar -xzf site_files_*.tar.gz -C /var/www/yourdomain;设置权限 chown -R www-data:www-data /var/www/yourdomain && find /var/www/yourdomain -type d -exec chmod 755 {} \;。
5. 恢复数据库并修正配置
在VPS上创建数据库与用户:mysql -u root -p -e "CREATE DATABASE dbname; CREATE USER 'dbuser'@'localhost' IDENTIFIED BY 'password'; GRANT ALL ON dbname.* TO 'dbuser'@'localhost'; FLUSH PRIVILEGES;"; 然后导入:mysql -u dbuser -p dbname < db_backup_*.sql;修改站点配置(如wp-config.php)里DB_HOST/DB_NAME/DB_USER/DB_PASSWORD指向新数据库。
6. 更新域名、站点URL与静态链接(WordPress示例)
如果域名发生变化或测试使用hosts文件,需更新siteurl与home:在MySQL中执行 UPDATE wp_options SET option_value='https://yourdomain' WHERE option_name IN ('siteurl','home'); 对于内部URL替换推荐使用wp-cli:wp search-replace 'http://localhost' 'https://yourdomain' --skip-columns=guid;重建固定链接并清除缓存。
7. 配置Nginx/Apache与SSL
在/etc/nginx/sites-available/建立站点配置,指向/var/www/yourdomain并设置PHP处理;测试 nginx -t && systemctl reload nginx;安装Let's Encrypt:sudo apt install certbot python3-certbot-nginx && sudo certbot --nginx -d yourdomain,确保证书自动续期(certbot renew --dry-run)。
8. 防火墙、端口与性能检查
开放80/443端口:sudo ufw allow 'Nginx Full' 或 sudo firewall-cmd --add-service=http --add-service=https --permanent && firewall-cmd --reload;检查PHP-FPM和数据库性能,必要时调整PHP-FPM pool,启用缓存(opcache、redis或fastcgi_cache)。
9. 切换DNS与最终测试
将域名A记录指向VPS IP,若之前降低TTL切换更快;在DNS生效前可通过本地hosts文件测试;完整测试页面、登录、图片、下载、表单等功能;检查错误日志:/var/log/nginx/error.log 和 PHP/APP 日志。
10. 回滚计划与常见问题处理
保留本地与VPS上的备份至少7天;如果发现问题,可把DNS指回原IP或从VPS上重新导出并恢复到原环境;常见问题:权限错误用chown修复,数据库字符集错用ALTER或导出时加 --default-character-set=utf8mb4。
11. 常见问答:迁移是否会丢失图片或附件?
问:迁移后会丢失媒体库图片吗?
答:只要完整备份并解压网站文件(包括wp-content/uploads或static目录),并且数据库导入成功,媒体文件不会丢失。上传过程用rsync能保证文件逐步同步并可断点续传,注意核对文件校验和。
12. 常见问答:如何在切换期间避免用户看到错误?
问:在切换DNS时如何避免用户访问到错误站点?
答:在切换前把站点设为维护模式(或用临时HTML返回503)并降低TTL;在DNS生效后再关闭维护模式。也可用hosts文件在测试机上先验证新站点无误。
13. 常见问答:迁移完如何验证数据完整性?
问:如何确认数据库与文件都完整迁移?
答:校验方法:1) 对比数据库表行数和重要表(如posts、users)行数;2) 比较文件总数与总大小(ls -lR | wc -l; du -sh);3) 抽查若干页面和附件能否正常访问;4) 查看错误日志确保无致命错误。
来源:迁移教程把本地博客迁移到小夜博客香港vps不丢数据的步骤