简介
本指南面向首次部署 DouPHP 的运维与实施人员,提供“安装后验证”的完整流程:系统健康检查(PHP 版本、扩展、文件权限)、后台管理系统基本功能测试、前端页面验证(首页加载、数据库连接、模板渲染)、API 接口可用性检查、性能基准与负载测试建议,以及安装完成后的安全检查(删除安装脚本、修改默认密码等)。所有步骤均基于仓库中实际代码逻辑进行说明。
项目结构
DouPHP 采用多入口架构:前台、后台、API 各自独立入口,统一由核心引导程序初始化环境、加载配置、注册路由与中间件,并处理异常响应。
graph TB
A["浏览器"] --> B["前台入口 index.php"]
A --> C["后台入口 admin/index.php"]
A --> D["API 入口 api/index.php"]
B --> E["核心引导 core/bootstrap.php"]
C --> E
D --> E
E --> F["配置文件 config/config.php"]
E --> G["运行时存储 storage/*"]
E --> H["路由与调度"]
H --> I["业务控制器/服务"]
I --> J["ORM/数据库"]
核心组件
- 入口与引导
- 前台入口负责语言前缀解析、Init 启动、路由分发与异常兜底。
- 核心引导在极早期进行 PHP 版本检测、路径常量定义、未安装时跳转安装程序、加载站点配置、注册自动加载与门面、初始化容器与请求对象。
- 配置与运行时
- 站点配置包含数据库连接、表前缀、字符集、应用密钥、调试开关等。
- 运行时存储用于安装锁、状态文件、缓存与上传数据。
- 工具与健康检查
- 后台工具服务提供关键目录可写性检测,覆盖 storage、images、theme 等目录。
- 文件权限检测通过尝试写入临时文件判断读写能力。
架构总览
下图展示从浏览器到核心引导、配置、路由与响应的整体流程,突出安装阶段的关键分支。
sequenceDiagram
participant U as "用户"
participant FE as "前台入口 index.php"
participant BS as "核心引导 bootstrap.php"
participant CFG as "配置 config.php"
participant RT as "路由/调度"
participant SVC as "业务服务"
participant DB as "数据库"
U->>FE : 访问站点根
FE->>BS : 引入引导
BS->>BS : 检测 PHP 版本
BS->>BS : 定义路径常量
BS->>BS : 若未安装则跳转 install
BS->>CFG : 加载站点配置
FE->>RT : 设置委托路由并分发
RT->>SVC : 调用业务逻辑
SVC->>DB : 查询/写入数据
DB-->>SVC : 返回结果
SVC-->>RT : 构建响应
RT-->>FE : 返回 Response
FE-->>U : 输出 HTML/JSON
详细组件分析
系统健康检查(PHP 版本、扩展、文件权限)
- PHP 版本检测
- 核心引导在启动时强制要求 PHP 版本不低于指定最低版本,不满足将直接终止执行。
- 文件权限验证
- 后台工具服务会收集需要检查的目录列表(storage 及其子目录、images、theme 等),对每个目录尝试写入临时文件以判定是否可写。
- 文件权限检测通过“尝试打开/写入/删除临时文件”的方式得出 write/no_write/no_exist 三种状态。
- 安装锁定标志
- 若运行时存储中不存在安装锁定文件,且当前请求不是安装流程,则会自动跳转到安装入口,确保先完成安装再使用。
flowchart TD
Start(["开始"]) --> CheckPHP["检查 PHP 版本"]
CheckPHP --> |不满足| Stop["终止执行并提示升级"]
CheckPHP --> |满足| LoadCfg["加载站点配置"]
LoadCfg --> CheckInstall{"是否存在安装锁定文件?"}
CheckInstall --> |否| Redirect["跳转到安装入口"]
CheckInstall --> |是| CheckDirs["收集需检查目录"]
CheckDirs --> ForEachDir{"遍历目录"}
ForEachDir --> TryWrite["尝试写入临时文件"]
TryWrite --> Result{"写入成功?"}
Result --> |是| MarkOK["标记为可写"]
Result --> |否| MarkFail["标记为不可写/不存在"]
MarkOK --> NextDir["下一个目录"]
MarkFail --> NextDir
NextDir --> |还有| ForEachDir
NextDir --> |结束| Report["输出检测结果"]
后台管理系统基本功能测试
- 访问方式
- 根据配置中的后台目录常量,访问后台入口;若未安装,会被引导至安装流程。
- 登录与鉴权
- 登录后进入管理界面,可通过“工具/杂项”查看目录权限检测结果,确认 storage、images、theme 等目录可写。
- 基础操作
- 创建或编辑一条内容(如文章/产品),触发图片上传与模板编译,验证写入与渲染链路。
前端页面验证(首页加载、数据库连接、模板渲染)
- 首页加载
- 访问站点根,前台入口会解析语言前缀、启动 Init、分发路由并渲染页面。
- 数据库连接测试
- 通过后台工具或任意读取数据的页面(如文章列表)触发 ORM 查询,若数据库配置正确即可正常返回数据。
- 模板渲染
- 模板位于 theme 目录,若该目录可写,支持在线下载模板与编译缓存;渲染失败时可结合错误日志定位。
sequenceDiagram
participant B as "浏览器"
participant FE as "前台入口"
participant INIT as "Init 启动"
participant RT as "路由"
participant CTRL as "控制器/服务"
participant VIEW as "视图/模板"
participant DB as "数据库"
B->>FE : GET /
FE->>INIT : 启动前台环境
INIT->>RT : 准备路由上下文
RT->>CTRL : 匹配首页路由
CTRL->>DB : 读取必要数据
DB-->>CTRL : 返回数据
CTRL->>VIEW : 传入数据渲染
VIEW-->>B : 返回 HTML
API 接口可用性检查
- 入口行为
- API 入口启动后会初始化环境、分发路由,并对未捕获异常统一返回 JSON 500 或在调试模式下输出详细错误。
- 快速验证
- 调用一个公开或无需鉴权的接口(例如健康检查或基础信息接口),观察是否返回 JSON 结构与预期状态码。
- 错误处理
- 业务规则违例会返回 422 并附带错误详情;服务器错误返回 500。
sequenceDiagram
participant C as "客户端"
participant API as "API 入口"
participant INIT as "API Init"
participant RT as "路由"
participant CTRL as "控制器"
participant SVC as "服务"
participant DB as "数据库"
C->>API : HTTP 请求
API->>INIT : 启动 API 环境
INIT->>RT : 分发路由
RT->>CTRL : 调用控制器
CTRL->>SVC : 执行业务逻辑
SVC->>DB : 查询/写入
DB-->>SVC : 返回结果
SVC-->>CTRL : 组装响应
CTRL-->>C : JSON 响应
性能基准测试与负载测试指导
- 基准测试
- 使用压测工具对首页与若干热点 API 发起并发请求,记录 QPS、P95/P99 延迟与错误率。
- 关注数据库连接数、慢查询与模板编译耗时。
- 负载测试
- 逐步提升并发,观察 CPU、内存、磁盘 IO 与网络带宽瓶颈。
- 针对图片上传与模板编译场景,重点验证 storage 与 theme 目录的写入吞吐。
- 优化建议
- 开启合适的缓存策略(如模板编译缓存、查询缓存)。
- 调整 PHP-FPM/进程池与数据库连接池参数。
- 对静态资源启用 CDN 与压缩。
安装完成后的安全检查
- 删除安装脚本
- 若存在安装相关脚本或目录,应在安装完成后移除或限制访问,避免被恶意利用。
- 修改默认密码
- 立即修改管理员默认密码,并遵循强密码策略。
- 关闭调试模式
- 生产环境应关闭调试开关,避免敏感信息泄露。
- 最小化权限
- 仅对 storage、images、theme 等必要目录授予写入权限,其他目录保持只读。
- 隐藏/重命名后台目录
- 可通过后台工具提供的“自定义后台目录”功能,将默认后台目录更改为非默认名称,降低被扫描风险。
依赖关系分析
- 入口与引导
- 前台与 API 入口均依赖核心引导进行环境初始化与异常处理。
- 配置与运行时
- 站点配置决定数据库连接与应用密钥;运行时存储承载安装锁与状态文件。
- 工具与权限
- 工具服务依赖文件辅助类进行权限检测,并通过后台界面反馈结果。
graph LR
FE["前台入口"] --> BS["核心引导"]
API["API 入口"] --> BS
BS --> CFG["站点配置"]
BS --> ST["运行时存储"]
ADMIN["后台工具"] --> FS["文件权限检测"]
FS --> ST
性能考虑
- 合理设置 PHP 版本与扩展,确保运行环境与最低版本要求一致。
- 对高频页面与 API 启用缓存,减少数据库压力。
- 监控 storage 与 theme 目录的写入性能,必要时迁移到高性能存储。
- 在生产环境关闭调试模式,减少额外开销与信息泄露风险。
故障排查指南
- 无法进入安装流程
- 检查是否缺少安装锁定文件或请求路径是否正确;核心引导会在非安装路径下自动跳转安装入口。
- 页面空白或 500 错误
- 前台与 API 入口会将未捕获异常记录到日志,并在调试模式下输出详细错误;生产环境统一返回 JSON 500。
- 目录权限不足
- 使用后台工具的目录权限检测功能,逐一修复 storage、images、theme 等目录的写入权限。
- 数据库连接失败
- 核对站点配置中的数据库主机、用户名、密码与表前缀;通过任意数据读取页面验证连通性。
结论
通过本指南,您可以按步骤完成 DouPHP 的安装后验证:确保 PHP 版本与文件权限满足要求,完成后台基本功能测试,验证前端页面与 API 接口的可用性,并进行必要的性能与安全加固。建议在上线前完成全部检查项,并将调试模式关闭、默认密码修改、安装脚本清理等安全措施落实到位。
附录
- 常用验证清单
- PHP 版本满足最低要求
- storage/images/theme 目录可写
- 数据库连接正常
- 前台首页与后台工具页可访问
- API 接口返回 JSON 且状态码正确
- 关闭调试模式、修改默认密码、删除安装脚本