PHP项目运维与交接手册

wen PHP项目 4

PHP项目运维与交接手册

文档说明

1 目的

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

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 交接培训内容

  1. 代码仓库

    • 分支管理策略
    • 代码审查流程
    • 版本发布流程
  2. 服务器管理

    • SSH连接方式
    • 基本运维命令
    • 日志查看方法
  3. 数据库管理

    • 数据备份恢复
    • 慢查询分析
    • 表结构变更流程
  4. 监控告警

    • 告警规则配置
    • 告警响应流程
    • 监控面板使用
  5. 日常运维

    • 部署流程
    • 升级流程
    • 回滚流程

附录

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 王五 更新应急处理流程

注意:本手册中的敏感信息(密码、密钥等)需在实际使用前进行替换,并妥善保管。

抱歉,评论功能暂时关闭!