# 从零做一个真正能部署的 PHP 项目

举报
yd_220371319 发表于 2026/10/22 18:34:59 2026/10/22
【摘要】 从零做一个真正能部署的 PHP 项目前面 17 篇讲的内容,最后要落到真实项目里。这次设计一个简单的 PHP API + 用户系统。 项目结构app/├── src/│ ├── Controller/│ ├── Service/│ ├── Repository/│ └── DTO/├── public/│ └── index.php├── config/├── stor...

从零做一个真正能部署的 PHP 项目

前面 17 篇讲的内容,最后要落到真实项目里。

这次设计一个简单的 PHP API + 用户系统。

项目结构

app/
├── src/
│   ├── Controller/
│   ├── Service/
│   ├── Repository/
│   └── DTO/
├── public/
│   └── index.php
├── config/
├── storage/
├── tests/
├── composer.json
├── composer.lock
├── Dockerfile
└── compose.yaml

请求流程

浏览器
 ↓
Nginx
 ↓
PHP-FPM
 ↓
Middleware
 ↓
Controller
 ↓
Service
 ↓
Repository
 ↓
MySQL

缓存数据:

Service
 ↓
Redis

用户注册

POST /api/users
 ↓
验证参数
 ↓
检查邮箱
 ↓
password_hash()
 ↓
MySQL
 ↓
201

登录

POST /api/login
 ↓
查询用户
 ↓
password_verify()
 ↓
生成认证凭证
 ↓
返回 Token

用户信息

GET /api/me
Authorization: Bearer ...

Middleware 负责认证,Controller 不需要重复实现。

Redis

可以缓存:

user:{id}

并设置合理 TTL。

用户信息发生变化时,需要考虑缓存失效。

Docker

最终可以运行:

nginx
php-fpm
mysql
redis

数据库和 Redis 使用持久化卷。

日志

应用日志至少考虑:

时间
请求 ID
用户 ID(如果有)
请求路径
错误信息

不要记录密码和完整 Token。

部署流程

一个比较完整的流程:

Git
 ↓
CI
 ↓
测试
 ↓
构建镜像
 ↓
部署
 ↓
健康检查
 ↓
日志 / 监控

部署失败时应该可以回滚。

上线检查

[ ] HTTPS
[ ] 数据库密码没有写死
[ ] Debug 已关闭
[ ] 错误日志正常
[ ] 数据库有备份
[ ] 上传目录安全
[ ] SQL 使用预处理
[ ] 密码使用 password_hash
[ ] Session / Token 策略明确
[ ] Nginx 配置正确
[ ] PHP-FPM 正常
[ ] Docker 数据有持久化
[ ] 有基本监控

结语

刚开始学 PHP 时,我们关心的是:

echo 怎么写?
数组怎么遍历?

进入真实项目后,更应该关心:

请求怎么进来?
代码怎么组织?
数据怎么保存?
权限怎么控制?
日志在哪里?
为什么 502?
数据库为什么慢?
怎么安全部署?

这才是从“会 PHP”走向“会做 PHP 项目”的关键一步。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。