Debian上Nginx的备份与恢复方法
导读:Debian上Nginx的备份与恢复方法 一 备份范围与准备 明确需要保护的资产: Nginx 配置:主配置 /etc/nginx/,站点配置 /etc/nginx/sites-available/(以及启用的软链 /etc/nginx...
Debian上Nginx的备份与恢复方法
一 备份范围与准备
- 明确需要保护的资产:
- Nginx 配置:主配置 /etc/nginx/,站点配置 /etc/nginx/sites-available/(以及启用的软链 /etc/nginx/sites-enabled/)。
- 网站文件:常见路径 /var/www/ 或自定义目录。
- SSL 证书与密钥:路径由站点配置中的 ssl_certificate 与 ssl_certificate_key 指令指定,常见在 /etc/ssl/ 或 /etc/letsencrypt/。
- 准备与检查:
- 具备 sudo 权限;备份前确认目录与文件权限、属主正确。
- 建议先停止修改配置,备份期间避免对 /etc/nginx/ 与网站目录进行写入。
- 记录当前生效的站点与端口,便于恢复后核对。
二 手动备份步骤
- 备份 Nginx 配置
- 打包整个配置目录:
- sudo tar -czvf nginx_conf_$(date +%F).tar.gz /etc/nginx/
- 或仅复制关键文件/目录:
- sudo cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak
- sudo cp -r /etc/nginx/sites-available /path/to/backup/sites-available/
- 打包整个配置目录:
- 备份网站文件
- sudo tar -czvf www_$(date +%F).tar.gz /var/www/
- 备份 SSL 证书与密钥
- 先查看站点配置确认证书路径,例如:
- grep -E ‘^\s*ssl_certificate|ssl_certificate_key’ **/etc/nginx/sites-available/**default
- 备份证书与密钥文件(路径以实际为准):
- sudo cp /etc/ssl/certs/your_domain.crt /path/to/backup/your_domain.crt.bak
- sudo cp /etc/ssl/private/your_domain.key /path/to/backup/your_domain.key.bak
- 或打包证书目录(谨慎,可能包含多余文件):
- sudo tar -czvf ssl_$(date +%F).tar.gz /etc/ssl/
- 先查看站点配置确认证书路径,例如:
- 可选:备份 PHP-FPM 配置(如使用 PHP)
- 按实际版本备份,例如:
- sudo cp /etc/php/8.2/fpm/pool.d/www.conf /path/to/backup/php-fpm-www.conf.bak
- sudo cp /etc/php/8.2/fpm/php.ini /path/to/backup/php.ini.bak
- 按实际版本备份,例如:
- 将备份文件转移到安全位置(如外置盘或远端存储)。
三 手动恢复步骤
- 恢复 Nginx 配置
- 解压覆盖配置(建议先备份当前配置):
- sudo tar -xzvf nginx_conf_YYYY-MM-DD.tar.gz -C /
- 或复制回原路径:
- sudo cp /path/to/backup/nginx.conf.bak /etc/nginx/nginx.conf
- sudo cp -r /path/to/backup/sites-available/ /etc/nginx/sites-available/
- 解压覆盖配置(建议先备份当前配置):
- 恢复网站文件
- sudo tar -xzvf www_YYYY-MM-DD.tar.gz -C /
- 恢复 SSL 证书与密钥
- 复制回原路径(路径以备份时记录为准):
- sudo cp /path/to/backup/your_domain.crt.bak /etc/ssl/certs/your_domain.crt
- sudo cp /path/to/backup/your_domain.key.bak /etc/ssl/private/your_domain.key
- 或解压证书包:
- sudo tar -xzvf ssl_YYYY-MM-DD.tar.gz -C /
- 复制回原路径(路径以备份时记录为准):
- 使配置生效
- 语法检查:sudo nginx -t
- 重新加载:sudo systemctl reload nginx
- 如涉及 PHP,恢复 PHP-FPM 配置后重启服务:
- sudo systemctl restart php8.2-fpm(按实际版本调整)
四 自动化与系统级备份
- 使用 cron 定时备份(示例:每天 02:00 执行)
- 编辑计划任务:sudo crontab -e
- 添加:
- 0 2 * * * /usr/local/bin/nginx_backup.sh
- 示例脚本 /usr/local/bin/nginx_backup.sh(按实际路径调整):
- #!/bin/bash
set -e
BACKUP_DIR=“/opt/backup/nginx”
DATE=$(date +%F)
mkdir -p “$BACKUP_DIR”
tar -czvf “$BACKUP_DIR/nginx_conf_$DATE.tar.gz” /etc/nginx
tar -czvf “$BACKUP_DIR/www_$DATE.tar.gz” /var/www
按需备份证书,例如 Let’s Encrypt:
tar -czvf “$BACKUP_DIR/letsencrypt_$DATE.tar.gz” /etc/letsencrypt
清理 30 天前备份
find “$BACKUP_DIR” -name “*.tar.gz” -mtime +30 -delete - 赋权:chmod +x /usr/local/bin/nginx_backup.sh
- #!/bin/bash
set -e
BACKUP_DIR=“/opt/backup/nginx”
DATE=$(date +%F)
mkdir -p “$BACKUP_DIR”
tar -czvf “$BACKUP_DIR/nginx_conf_$DATE.tar.gz” /etc/nginx
tar -czvf “$BACKUP_DIR/www_$DATE.tar.gz” /var/www
- 使用系统级快照工具 Timeshift
- 安装:sudo apt update & & apt install timeshift
- 启动图形/命令行向导,选择 Btrfs/Rsync 类型与备份位置,按需设置计划任务。
- 恢复:在 Timeshift 中选择快照点并执行恢复(会覆盖系统分区,谨慎操作)。
五 验证与常见问题
- 验证要点
- 配置语法:sudo nginx -t
- 服务状态:sudo systemctl status nginx
- 访问与错误日志:tail -f /var/log/nginx/error.log
- 常见问题与处理
- 证书路径变更:恢复后若证书路径不同,需同步修改站点配置中的 ssl_certificate 与 ssl_certificate_key 并再次 nginx -t。
- 权限问题:证书私钥应为 600,网站目录属主与权限需与运行用户(常见为 www-data)匹配。
- 配置未生效:确认站点已软链至 /etc/nginx/sites-enabled/,并执行 reload 而非 restart(减少中断)。
- 恢复后 502/504:多为 PHP-FPM 未启动或 fastcgi_pass 套接字路径不匹配,核对版本与 socket 路径后重启 PHP-FPM 并 reload Nginx。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Debian上Nginx的备份与恢复方法
本文地址: https://pptw.com/jishu/748106.html
