CentOS Apache备份恢复
导读:CentOS 上 Apache 的备份与恢复 一 备份范围与准备 备份范围建议包含:配置文件、网站根目录、SSL 证书与密钥、日志文件,以及依赖的数据库(如 MySQL/MariaDB)。 常见路径与用途如下: 项目 典型路径 说明...
CentOS 上 Apache 的备份与恢复
一 备份范围与准备
- 备份范围建议包含:配置文件、网站根目录、SSL 证书与密钥、日志文件,以及依赖的数据库(如 MySQL/MariaDB)。
- 常见路径与用途如下:
项目 典型路径 说明 主配置 /etc/httpd/conf/httpd.conf 主配置文件 虚拟主机 /etc/httpd/conf.d/*.conf 按站点拆分配置 网站文件 /var/www/html 或自定义 DocumentRoot 站点静态文件与程序 SSL 证书 /etc/pki/tls/certs/、/etc/pki/tls/private/ 证书与私钥 日志 /var/log/httpd/ 访问与错误日志 数据库 由应用配置决定 建议用 mysqldump 单独备份 - 准备:创建备份目录(如 /backup/apache),确保磁盘空间充足,必要时配置 SELinux 上下文或临时设为宽松模式以便备份与恢复。
二 手动备份步骤
- 配置文件
- 备份主配置与虚拟主机配置:
- sudo cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.bak
- sudo tar czf /backup/apache/conf_$(date +%F).tar.gz -C /etc/httpd conf
- 备份主配置与虚拟主机配置:
- 网站文件
- 备份站点根目录(示例为 /var/www/html):
- sudo tar czf /backup/apache/html_$(date +%F).tar.gz -C /var/www html
- 备份站点根目录(示例为 /var/www/html):
- SSL 证书与密钥
- 备份证书与私钥目录:
- sudo tar czf /backup/apache/ssl_$(date +%F).tar.gz -C /etc/pki/tls { certs,private}
- 备份证书与私钥目录:
- 日志文件(可选)
- 备份访问与错误日志:
- sudo tar czf /backup/apache/logs_$(date +%F).tar.gz -C /var/log httpd
- 备份访问与错误日志:
- 数据库(如 MySQL/MariaDB)
- 备份单个库:
- mysqldump -u 用户名 -p 数据库名 > /backup/apache/db_$(date +%F).sql
- 备份全部库:
- mysqldump -u 用户名 -p --all-databases > /backup/apache/all_databases_$(date +%F).sql
- 备份单个库:
- 传输到远程存储(可选)
- 使用 scp 或 rsync 将备份文件复制到远程主机或对象存储挂载目录。
三 自动化备份脚本与定时任务
- 备份脚本示例(/usr/local/bin/backup_httpd.sh)
- 功能:打包配置、站点、SSL、日志,保留最近 7 天,并记录日志。
- 内容:
- #!/bin/bash
- set -e
- BACKUP_DIR=“/backup/apache”
- DATE=$(date +%F_%H%M%S)
- mkdir -p “$BACKUP_DIR”
-
配置
- tar czf “$BACKUP_DIR/conf_$DATE.tar.gz” -C /etc/httpd conf
-
站点
- tar czf “$BACKUP_DIR/html_$DATE.tar.gz” -C /var/www html
-
SSL
- tar czf “$BACKUP_DIR/ssl_$DATE.tar.gz” -C /etc/pki/tls { certs,private}
-
日志(可选)
- tar czf “$BACKUP_DIR/logs_$DATE.tar.gz” -C /var/log httpd
-
清理旧备份
- find “$BACKUP_DIR” -type f -name “*.tar.gz” -mtime +7 -delete
- echo “[$DATE] Backup finished.” > > “$BACKUP_DIR/backup.log”
- #!/bin/bash
- 赋权:
- chmod +x /usr/local/bin/backup_httpd.sh
- 定时任务(每天 02:00 执行并记录日志)
- 0 2 * * * /usr/local/bin/backup_httpd.sh > > /var/log/httpd_backup.log 2> & 1
- 验证与演练
- 手动执行一次脚本,确认 /backup/apache 生成文件且日志无报错;定期做恢复演练,确保备份可用。
四 恢复步骤
- 准备
- 建议先停止 httpd 以避免写入冲突:sudo systemctl stop httpd
- 为防回滚失败,先备份当前状态:
- sudo tar czf /backup/apache/pre_restore_$(date +%F_%H%M%S).tar.gz /etc/httpd /var/www /var/log/httpd
- 恢复配置
- 解压配置到目标目录:
- sudo tar xzf /backup/apache/conf_YYYY-MM-DD_HHMMSS.tar.gz -C /
- 语法检查:
- sudo apachectl configtest
- 解压配置到目标目录:
- 恢复网站文件与 SSL
- 站点文件:
- sudo tar xzf /backup/apache/html_YYYY-MM-DD_HHMMSS.tar.gz -C /
- SSL 证书与密钥:
- sudo tar xzf /backup/apache/ssl_YYYY-MM-DD_HHMMSS.tar.gz -C /
- 站点文件:
- 恢复数据库
- 登录并导入:
- mysql -u 用户名 -p 数据库名 < /backup/apache/db_YYYY-MM-DD.sql
- 或导入全部库:mysql -u 用户名 -p < /backup/apache/all_databases_YYYY-MM-DD.sql
- 登录并导入:
- 启动与验证
- 启动服务:sudo systemctl start httpd
- 访问站点与查看错误日志(/var/log/httpd/error_log)确认运行状态。
五 注意事项与排错
- 路径差异
- CentOS 上服务名为 httpd(而非 Debian/Ubuntu 的 apache2);配置文件通常在 /etc/httpd/,站点根目录常见为 /var/www/html,日志在 /var/log/httpd/。
- 配置语法与回滚
- 任何配置变更前先备份当前文件;恢复后务必执行 apachectl configtest,确认无误再启动服务。
- 权限与所有权
- 恢复后检查网站目录与证书文件的属主与权限(如 httpd 运行用户与组),避免因权限不当导致 403 或 SSL 启动失败。
- SELinux
- 若启用 SELinux,恢复后可能需要恢复文件上下文:
- sudo restorecon -R /var/www/html
- sudo restorecon -R /etc/httpd
- 若启用 SELinux,恢复后可能需要恢复文件上下文:
- 日志与验证
- 故障排查优先查看 /var/log/httpd/error_log;定期校验备份完整性与可恢复性,必要时保留多份异地/离线副本。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: CentOS Apache备份恢复
本文地址: https://pptw.com/jishu/774475.html
