PHP项目运维与交接手册
文档说明
1 目的
本手册旨在规范PHP项目的运维流程和交接标准,确保项目能够稳定运行,并在人员变动时实现平滑过渡。

2 适用范围
适用于所有基于PHP开发的Web项目,包括但不限于:
- Laravel / Symfony / ThinkPHP 框架项目
- 自定义PHP应用
- WordPress / Drupal 等CMS系统
1 基本信息
| 项目 | |
|---|---|
| 项目名称 | [填写] |
| 项目简介 | [填写] |
| 技术栈 | PHP版本、框架、数据库、缓存等 |
| 部署环境 | 开发/测试/生产环境信息 |
| 服务器信息 | IP、SSH访问方式、操作系统 |
2 关键联系人
| 角色 | 姓名 | 联系方式 |
|---|---|---|
| 项目负责人 | ||
| 运维负责人 | ||
| 后端开发 | ||
| 前端开发 |
环境配置
1 服务器环境要求
基础环境
- 操作系统:CentOS 7+/Ubuntu 20.04+
- Web服务器:Nginx 1.18+ / Apache 2.4+
- PHP版本:7.4 / 8.0 / 8.1
- 数据库:MySQL 5.7+ / MariaDB 10.3+ / PostgreSQL 12+
- Redis:6.0+
PHP扩展清单
- mbstring
- pdo_mysql
- redis
- gd
- curl
- openssl
- json
- xml
- zip
- bcmath
- [其他扩展]
2 环境变量配置
核心环境变量(.env示例)
APP_NAME=项目名称 APP_ENV=production APP_DEBUG=false APP_URL=https://example.com DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=db_name DB_USERNAME=db_user DB_PASSWORD=db_password REDIS_HOST=127.0.0.1 REDIS_PASSWORD=null REDIS_PORT=6379 # 第三方服务配置 MAIL_DRIVER=smtp MAIL_HOST=smtp.aliyun.com MAIL_PORT=465 MAIL_USERNAME=xxx@xxx.com MAIL_PASSWORD=xxx
3 Nginx配置参考
server {
listen 80;
server_name example.com;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl http2;
server_name example.com;
root /var/www/project/public;
index index.php index.html;
ssl_certificate /etc/nginx/ssl/example.pem;
ssl_certificate_key /etc/nginx/ssl/example.key;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
fastcgi_pass unix:/run/php/php8.1-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location ~ /\.ht {
deny all;
}
}
部署流程
1 首次部署
# 1. 克隆代码 git clone git@github.com:org/project.git /var/www/project # 2. 配置环境 cp .env.example .env # 编辑 .env 文件,修改数据库、缓存等配置 # 3. 安装依赖 cd /var/www/project composer install --no-dev --optimize-autoloader # 4. 生成应用密钥(Laravel) php artisan key:generate # 5. 迁移数据库 php artisan migrate --force # 6. 创建存储链接(Laravel) php artisan storage:link # 7. 优化加载 php artisan config:cache php artisan route:cache php artisan view:cache # 8. 设置目录权限 chmod -R 755 storage bootstrap/cache chown -R www-data:www-data . # 9. 重启服务 systemctl restart php8.1-fpm systemctl reload nginx
2 日常更新
# 1. 进入维护模式 php artisan down --retry=60 # 2. 拉取最新代码 git pull origin main # 3. 更新依赖 composer install --no-dev --optimize-autoloader # 4. 数据库迁移 php artisan migrate --force # 5. 清除缓存 php artisan optimize:clear # 6. 重新优化 php artisan optimize # 7. 退出维护模式 php artisan up
3 回滚方案
# 版本回滚 git reset --hard HEAD~1 # 数据库回滚 php artisan migrate:rollback --step=1 # 恢复缓存 php artisan optimize
监控与告警
1 日志系统
日志位置
/var/www/project/storage/logs/laravel.log # 应用日志
/var/log/nginx/access.log # Nginx访问日志
/var/log/nginx/error.log # Nginx错误日志
/var/log/php8.1-fpm.log # PHP-FPM日志
/var/log/mysql/error.log # MySQL错误日志
日志轮转配置(/etc/logrotate.d/project)
/var/www/project/storage/logs/*.log {
daily
rotate 7
compress
delaycompress
missingok
notifempty
create 0640 www-data www-data
sharedscripts
postrotate
systemctl restart php8.1-fpm
endscript
}
2 关键监控指标
| 监控项 | 阈值 | 告警方式 |
|---|---|---|
| CPU使用率 | > 80% | 钉钉/邮件 |
| 内存使用率 | > 90% | 钉钉/邮件 |
| 磁盘使用率 | > 85% | 钉钉/邮件 |
| PHP-FPM进程数 | > 配置的80% | 钉钉/邮件 |
| 数据库连接数 | > 200 | 钉钉/邮件 |
| 404/500错误率 | > 1% | 钉钉/邮件 |
| Redis内存使用 | > 100MB | 钉钉/邮件 |
| SSL证书过期 | 30天内 | 钉钉/邮件 |
3 常用监控命令
# 查看PHP-FPM状态 php artisan php:fpm-status # 查看数据库连接 mysqladmin -u root -p status # 查看Redis状态 redis-cli info stats # 查看系统负载 top -bn1 | grep "load average" # 查看磁盘使用 df -h # 查看内存使用 free -m
备份策略
1 数据库备份
自动备份脚本(/usr/local/bin/backup-db.sh)
#!/bin/bash BACKUP_DIR="/backup/database" DATE=$(date +%Y%m%d_%H%M%S) DB_NAME="project_db" DB_USER="backup_user" DB_PASSWORD="xxx" # 创建备份 mysqldump -u $DB_USER -p$DB_PASSWORD --single-transaction $DB_NAME | gzip > $BACKUP_DIR/$DB_NAME_$DATE.sql.gz # 删除7天前的备份 find $BACKUP_DIR -name "*.sql.gz" -type f -mtime +7 -delete
定时任务(crontab)
# 每天凌晨3点备份 0 3 * * * /usr/local/bin/backup-db.sh # 每周日完整备份 0 2 * * 0 /usr/local/bin/backup-full.sh
2 文件备份
# 重要文件备份 tar -czf /backup/files/project_files_$(date +%Y%m%d).tar.gz \ /var/www/project \ /etc/nginx/sites-available/project \ /etc/php/8.1/fpm/php.ini
3 恢复流程
# 数据库恢复 gunzip < backup_20230101.sql.gz | mysql -u root -p project_db # 文件恢复 tar -xzf backup_files_20230101.tar.gz -C /
应急处理
1 常见问题处理
| 问题描述 | 可能原因 | 解决方案 |
|---|---|---|
| 500 Internal Server Error | PHP语法错误/权限问题 | 查看laravel.log错误日志 |
| 数据库连接失败 | MySQL服务停止/连接数满 | systemctl restart mysql |
| 502 Bad Gateway | PHP-FPM进程卡死 | systemctl restart php8.1-fpm |
| 磁盘空间不足 | 日志文件过大/临时文件 | 清理日志/临时文件 |
| 网站访问慢 | 大量并发/慢查询 | 查看慢查询日志/增加缓存 |
| Session登录失效 | Redis连接失败 | 检查Redis状态/重启Redis |
2 紧急恢复脚本
#!/bin/bash # emergency_recovery.sh # 重启所有服务 systemctl restart php8.1-fpm systemctl restart nginx systemctl restart mysql systemctl restart redis # 清理缓存 cd /var/www/project php artisan cache:clear php artisan config:clear php artisan view:clear php artisan route:clear # 检查服务状态 systemctl status php8.1-fpm systemctl status nginx systemctl status mysql systemctl status redis
交接清单
1 交接检查表
- [ ] 项目README文档已更新
- [ ] 环境配置文档完整
- [ ] 部署文档可执行
- [ ] 数据库结构文档
- [ ] API接口文档
- [ ] 运维脚本说明
- [ ] 第三方服务账号密码
- [ ] SSL证书信息
- [ ] 域名解析记录
- [ ] CDN配置信息
- [ ] 监控系统配置
- [ ] 日志分析工具配置
- [ ] 备份策略说明
- [ ] 应急预案
2 账号密码清单
| 服务 | 地址/URL | 账号 | 密码/密钥 | 备注 |
|---|---|---|---|---|
| 云服务器 | 2.3.4 | root | xxx | |
| 数据库 | 0.0.1:3306 | root | xxx | |
| Redis | 0.0.1:6379 | xxx | ||
| 代码仓库 | github.com/org | xxx@xx.com | Token:xxx | |
| 邮件服务 | smtp.xx.com | notify@xx | xxx | |
| 短信服务 | api.aliyun.com | AK:xxx | SK:xxx | |
| 监控系统 | monitor.xx.com | admin | xxx |
3 交接培训内容
-
代码仓库
- 分支管理策略
- 代码审查流程
- 版本发布流程
-
服务器管理
- SSH连接方式
- 基本运维命令
- 日志查看方法
-
数据库管理
- 数据备份恢复
- 慢查询分析
- 表结构变更流程
-
监控告警
- 告警规则配置
- 告警响应流程
- 监控面板使用
-
日常运维
- 部署流程
- 升级流程
- 回滚流程
附录
1 常用命令速查
# PHP相关 php -v # 查看PHP版本 php -m # 查看已安装扩展 php artisan list # 列出所有Artisan命令 # Composer相关 composer --version # 查看Composer版本 composer dump-autoload # 重新生成自动加载 # Git相关 git status # 查看状态 git log --oneline # 查看提交历史 git diff # 查看差异 # 服务器相关 netstat -tlnp # 查看端口 ps aux | grep php # 查看PHP进程 top # 实时系统监控 htop # 增强版监控
2 安全检查清单
- [ ] 所有默认密码已修改
- [ ] SSH密钥认证已配置
- [ ] 防火墙规则已配置
- [ ] HTTPS已启用
- [ ] 文件上传限制已配置
- [ ] SQL注入防护已启用
- [ ] XSS防护已启用
- [ ] CSRF防护已启用
- [ ] 安全更新已检查
- [ ] 错误信息显示已关闭
3 版本说明
| 版本号 | 更新日期 | 更新人 | |
|---|---|---|---|
| v1.0.0 | 2024-01-01 | 张三 | 初始版本 |
| v1.1.0 | 2024-06-01 | 李四 | 新增监控配置章节 |
| v1.2.0 | 2024-12-01 | 王五 | 更新应急处理流程 |
注意:本手册中的敏感信息(密码、密钥等)需在实际使用前进行替换,并妥善保管。