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 | 王五 | 更新应急处理流程 |
注意:本手册中的敏感信息(密码、密钥等)需在实际使用前进行替换,并妥善保管。
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播