PHP-FPM在Ubuntu上的备份和恢复策略
导读:PHP-FPM在Ubuntu上的备份与恢复策略 一 备份范围与准备 明确需要保护的配置范围:PHP-FPM 的主配置、进程池配置、运行目录与日志目录,以及对应的 PHP 版本目录(如 /etc/php/8.1/fpm/)。 建议纳入备份的...
PHP-FPM在Ubuntu上的备份与恢复策略
一 备份范围与准备
- 明确需要保护的配置范围:PHP-FPM 的主配置、进程池配置、运行目录与日志目录,以及对应的 PHP 版本目录(如 /etc/php/8.1/fpm/)。
- 建议纳入备份的关键路径与用途如下:
| 路径 | 用途 | 是否必须 |
|---|---|---|
| /etc/php/{ version} /fpm/php-fpm.conf | 主进程配置 | 是 |
| /etc/php/{ version} /fpm/pool.d/ | 进程池配置(如 www.conf) | 是 |
| /etc/php/{ version} /fpm/php.ini | FPM 使用的 php.ini | 是 |
| /etc/php/{ version} /fpm/pool.d/*.conf | 自定义进程池 | 视环境 |
| /run/php/ | 运行时套接字/pid(建议纳入,便于快速回滚) | 建议 |
| /var/log/php-fpm.log 或 /var/log/php/ | FPM 日志 | 建议 |
- 操作前准备:确认 PHP 版本(如 8.1/8.2/8.3)、备份目的地磁盘空间充足、具备 sudo 权限;多版本并存时逐版本备份。以上路径与做法与常见实践一致,主配置与池配置位于 /etc/php/{ version} /fpm/,且常需同时备份 php.ini 与 pool.d 下的配置。
二 备份策略与命令
- 手动一次性备份(适合临时变更前)
- 使用 tar 打包指定版本配置(含时间戳):
- 示例(将 {
version}
替换为实际版本,如 8.1):
- sudo tar -czvf php-fpm-backup-$(date +%Y%m%d%H%M%S).tar.gz
/etc/php/{ version} /fpm/php-fpm.conf
/etc/php/{ version} /fpm/php.ini
/etc/php/{ version} /fpm/pool.d/.conf
/run/php /var/log/php
- sudo tar -czvf php-fpm-backup-$(date +%Y%m%d%H%M%S).tar.gz
- 示例(将 {
version}
替换为实际版本,如 8.1):
- 使用 rsync 增量同步到备份目录:
- 示例:
- sudo rsync -a --info=progress2 /etc/php/{ version} /fpm/ /path/to/backup/php-fpm-{ version} /
- 示例:
- 使用 tar 打包指定版本配置(含时间戳):
- 自动化与异地备份
- 将备份脚本加入 cron(每日一次,保留最近 7 天):
- 示例脚本(/usr/local/bin/backup-php-fpm.sh):
- #!/usr/bin/env bash
set -e
VERSION=8.1
TS=$(date +%Y%m%d%H%M%S)
DIR=/opt/backups/php-fpm
mkdir -p “$DIR”
tar czf “$DIR/php-fpm-${
VERSION}
-${
TS}
.tar.gz”
/etc/php/${ VERSION} /fpm/php-fpm.conf
/etc/php/${ VERSION} /fpm/php.ini
/etc/php/${ VERSION} /fpm/pool.d/.conf
/run/php /var/log/php保留最近7天
find “$DIR” -name ‘php-fpm-*.tar.gz’ -mtime +7 -delete
- #!/usr/bin/env bash
set -e
VERSION=8.1
TS=$(date +%Y%m%d%H%M%S)
DIR=/opt/backups/php-fpm
mkdir -p “$DIR”
tar czf “$DIR/php-fpm-${
VERSION}
-${
TS}
.tar.gz”
- 定时任务(crontab -e):
- 0 2 * * * /usr/local/bin/backup-php-fpm.sh
- 示例脚本(/usr/local/bin/backup-php-fpm.sh):
- 异地/离线拷贝:
- 本地校验后拷贝到远程存储或对象存储,例如:
- ls -lh /opt/backups/php-fpm/php-fpm-*.tar.gz
- scp /opt/backups/php-fpm/php-fpm-*.tar.gz user@remote:/backup/php-fpm/
- 本地校验后拷贝到远程存储或对象存储,例如:
- 将备份脚本加入 cron(每日一次,保留最近 7 天):
- 版本与多实例注意
- 多版本并存时,逐版本执行备份;如仅使用 CLI/FPM 之一,也建议同时备份对应 php.ini(路径分别为 /etc/php/{ version} /cli/php.ini 与 /etc/php/{ version} /fpm/php.ini)。以上命令与做法与常见实践一致,支持 tar/rsync/cp 等方式,并可结合时间戳命名与远程拷贝提升可靠性。
三 恢复流程与验证
- 恢复步骤
- 选择目标版本与备份包,先停止服务:
- sudo systemctl stop php{ version} -fpm
- 从备份恢复:
- 使用 tar 解压到根目录(注意 -C / 与路径匹配):
- sudo tar -xzvf php-fpm-backup-2025*.tar.gz -C /
- 或使用 rsync 覆盖回原路径:
- sudo rsync -a --info=progress2 /path/to/backup/php-fpm-{ version} / /etc/php/{ version} /fpm/
- 使用 tar 解压到根目录(注意 -C / 与路径匹配):
- 启动服务并设为开机自启:
- sudo systemctl start php{ version} -fpm
- sudo systemctl enable php{ version} -fpm
- 选择目标版本与备份包,先停止服务:
- 启动前配置校验
- 语法与包含关系检查(避免错误配置导致无法启动):
- sudo php-fpm{ version} -t
- 语法与包含关系检查(避免错误配置导致无法启动):
- 恢复后验证
- 服务状态与端口/套接字:
- sudo systemctl status php{ version} -fpm
- ss -lntp | grep php 或 ls -l /run/php/ | grep sock
- 日志与连通性:
- tail -n50 /var/log/php*.log
- 如使用 Nginx/Apache,访问探针页或执行 phpinfo 检查 FPM 生效与 php.ini 取值。以上流程与命令与常见实践一致,恢复时建议先停止服务、校验配置、再启动并验证运行状态。
- 服务状态与端口/套接字:
四 版本升级与迁移建议
- 同大版本小版本升级(如 8.1 → 8.2)
- 先按“备份策略”完整备份旧版本配置;在新版本安装完成后,优先恢复 php.ini 与 pool.d/*.conf,用 php-fpm{ version} -t 逐项校验差异,再启动服务并逐项启用站点。
- 跨大版本迁移(如 7.4 → 8.2)
- 先梳理不兼容变更(如部分扩展废弃、参数更名/移除),在测试环境完成配置与业务验证后再行迁移;必要时分阶段启用新版本池并灰度切换。
- 回滚预案
- 保留最近 2–3 个备份包;出现故障时优先回滚到上一个稳定版本配置,再评估问题根因。
- 故障排查要点
- 服务无法启动:查看状态与日志,执行 php-fpm{ version} -t 定位语法/包含错误,必要时回滚配置再重启。以上做法与常见实践一致,升级/迁移时以配置校验与灰度切换降低风险。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: PHP-FPM在Ubuntu上的备份和恢复策略
本文地址: https://pptw.com/jishu/771098.html
