重装云主机系统(即重新安装操作系统)会彻底清空系统盘(通常是 / 或 C: 盘)上的所有数据,包括 Web 服务器(如 Nginx/Apache)、数据库(MySQL/PostgreSQL)、网站代码、配置文件、SSL 证书等。因此,若未提前备份,重装后网站将完全丢失,无法自动恢复。
✅ 正确做法是:「先备份 → 再重装 → 后还原」。以下是详细、可落地的操作指南:
✅ 一、重装前必须做的备份(关键!)
请在重装前完成以下全部备份(建议离线+异地存储,如对象存储/OSS、本地电脑或另一台服务器):
| 备份项 | 示例命令/方法 | 说明 |
|---|---|---|
| 1. 网站源代码 | tar -czf /backup/www.tar.gz /var/www/html(Linux)或直接下载整个站点目录(FTP/SFTP) |
包含 PHP/HTML/JS/CSS 等所有文件,注意排除 runtime、logs、cache 等临时目录(可忽略) |
| 2. 数据库 | mysqldump -u root -p --all-databases > /backup/all_db.sql或按库导出: mysqldump -u user db_name > db_name.sql |
✅ 必须备份!网站内容(文章、用户、订单等)通常存在这里。记得记录数据库名、用户名、密码。 |
| 3. Web 服务器配置 | cp -r /etc/nginx /backup/nginx-conf/cp /etc/apache2/sites-enabled/* /backup/apache-conf/ |
包含域名绑定、SSL 配置、伪静态规则、PHP-FPM 设置等,决定网站能否正常访问 |
| 4. SSL 证书与密钥 | cp -r /etc/letsencrypt/live/yourdomain.com /backup/ssl/⚠️ 注意:私钥(privkey.pem)务必保密,勿上传至公共平台 |
重装后需重新部署证书,否则 HTTPS 会失效 |
| 5. 其他关键配置 | – PHP 配置:/etc/php/*/fpm/php.ini– 环境变量: .env(Laravel/ThinkPHP 等框架)– 定时任务: crontab -l > /backup/crontab.bak |
框架类项目尤其依赖 .env(含数据库密码、密钥等) |
📌 额外建议:
- 使用脚本自动化备份(例如每天凌晨执行备份并上传至 OSS);
- 记录当前环境信息:
cat /etc/os-release,nginx -v,php -v,mysql --version; - 截图保存控制台重要信息(如云厂商后台的公网 IP、安全组端口、DNS 解析状态)。
✅ 二、重装系统后恢复步骤
| 步骤 | 操作说明 | 注意事项 |
|---|---|---|
| 1. 基础环境部署 | 安装相同或兼容版本的: • Web 服务(Nginx/Apache) • PHP(含扩展:pdo_mysql, openssl, curl 等) • 数据库(MySQL/8.0+ 或 MariaDB) • 其他依赖(如 Redis、Node.js) |
✅ 版本尽量与原环境一致,避免兼容性问题(如 PHP 8.3 运行 PHP 7 代码可能报错) |
| 2. 恢复网站代码 | tar -xzf www.tar.gz -C /var/www/html/设置正确权限: chown -R www-data:www-data /var/www/htmlchmod -R 755 /var/www/html |
❌ 切勿直接覆盖 /var/www/html 而不清理旧文件;检查 wp-config.php / .env 中的数据库连接是否更新 |
| 3. 恢复数据库 | mysql -u root -p < all_db.sql或导入单个库: mysql -u user -p db_name < db_name.sql | ✅ 导入前确保数据库用户已创建且有权限;若重装后 MySQL root 密码未知,需重置(如 mysqld_safe --skip-grant-tables) |
|
| 4. 还原配置文件 | • 替换 /etc/nginx/ 配置• 重启服务: systemctl restart nginx• 检查语法: nginx -t |
🔑 修改配置中路径(如 root /var/www/html;)、监听端口、SSL 证书路径(确认 .pem 文件已放对位置) |
| 5. 部署 SSL 证书 | 将备份的 fullchain.pem 和 privkey.pem 放入 /etc/letsencrypt/live/yourdomain.com/,并更新 Nginx 配置中的 ssl_certificate 路径 |
✅ 重装后 Let’s Encrypt 证书不会自动续期,需重新配置 cron 或使用 certbot renew --dry-run 测试 |
| 6. 启动并验证 | • systemctl start php*-fpm mysql nginx• curl -I http://localhost 或浏览器访问公网 IP/域名• 检查错误日志: tail -f /var/log/nginx/error.log |
🚨 常见问题: – 502 Bad Gateway → PHP-FPM 未启动或 sock 路径不匹配 – 500 Internal Error → 权限/PHP 错误/ .env 配置错误– 数据库连接失败 → 检查 wp-config.php 或 .env 中 host/user/pass/dbname |
⚠️ 特别提醒(避坑指南)
- ❌ 不要跳过备份直接重装!云主机重装 ≠ 重启,是全新系统。
- ❌ 不要用“快照”替代备份:快照是云盘级别备份,仅限同账号同地域恢复,且快照可能过期/收费。
- ✅ 推荐组合方案:
「本地手动备份 + 云厂商快照(作为第二道保险) + 自动化脚本定时同步到对象存储」 - 🌐 若使用宝塔、AMH 等面板:备份其面板数据(
/www/server/panel/)、网站配置和数据库,重装后可一键导入(但依然建议单独备份核心数据)。 - 📦 对 Docker 用户:若网站运行在容器中,请备份
docker-compose.yml、.env、挂载卷数据(如/var/lib/mysql),重装后docker-compose up -d即可快速恢复。
✅ 终极建议:预防胜于抢救
| 方案 | 说明 |
|---|---|
| 启用云硬盘快照策略 | 在云厂商控制台设置每日自动快照(保留7天),成本低、恢复快 |
| Git 管理网站代码 | 代码提交到 GitHub/GitLab,重装后 git clone 即可获取最新版 |
| 数据库自动备份脚本 | 结合 mysqldump + rsync + OSS CLI 实现每日加密上传 |
| 基础设施即代码(IaC) | 使用 Shell/Ansible/Terraform 自动化部署环境(一次编写,多次重建) |
如你告知具体环境(如:腾讯云 CentOS 7 + WordPress + Nginx + MySQL),我可以为你生成定制化的备份 & 恢复脚本,甚至提供一键部署命令 👇
欢迎补充细节,我来帮你写实操清单!
需要的话,也可以提供:
- ✅ 自动化备份 Shell 脚本模板
- ✅ Nginx SSL 配置示例
- ✅ WordPress 重装后常见错误排查表
祝你的网站稳如磐石,运维无忧!🚀
云小栈