# 从零做一个真正能部署的 PHP 项目
【摘要】 从零做一个真正能部署的 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)