100 lines
4.1 KiB
Markdown
100 lines
4.1 KiB
Markdown
# 11.2 环境规划
|
||
|
||
:::tip 概述
|
||
本节提供不同规模项目的服务器配置建议和环境规划方案。
|
||
:::
|
||
|
||
## 推荐配置
|
||
|
||
| 组件 | 版本 | 说明 |
|
||
|------|------|------|
|
||
| PHP | 8.3+ | 必需(Laravel 13 要求) |
|
||
| Laravel | 13.x | 后端框架 |
|
||
| MySQL | 8.0+ | 主数据库(也支持 PostgreSQL、SQL Server、Oracle、SQLite) |
|
||
| Redis | 6.0+ | 缓存 / 会话 / 队列 / JWT 会话存储(**必需**,phpredis 扩展) |
|
||
| Nginx | 1.18+ | Web 服务器 |
|
||
| Node.js | 18+(建议 22 LTS) | 前端构建(`ui/` 为 Vite 3;根目录资源构建为 Vite 7) |
|
||
| Composer | 2.x | PHP 依赖 |
|
||
| pnpm | 9+ | 前端依赖(`ui/` 目录,含 pnpm-lock.yaml) |
|
||
|
||
:::warning Redis 为强依赖
|
||
本项目 `.env.example` 默认 `SESSION_DRIVER=redis`、`CACHE_STORE=redis`、`QUEUE_CONNECTION=redis`、`REDIS_CLIENT=phpredis`,JWT 双令牌也依赖 Redis。生产环境必须部署 Redis,否则无法登录、无法缓存、队列不可用。
|
||
:::
|
||
|
||
## 服务器配置建议
|
||
|
||
| 规模 | CPU | 内存 | 磁盘 | 说明 |
|
||
|------|-----|------|------|------|
|
||
| 小型 | 2核 | 4GB | 50GB | 单机部署,日活 < 1000(数据库初始化导入约 226MB,建议 ≥4GB) |
|
||
| 中型 | 4核 | 8GB | 100GB | 单机部署,日活 1000~10000 |
|
||
| 大型 | 8核+ | 16GB+ | 200GB+ | 分离部署,日活 > 10000 |
|
||
|
||
## 部署架构
|
||
|
||
### 小型项目(单机)
|
||
|
||
```text
|
||
┌─────────────────────────────┐
|
||
│ 单台服务器 │
|
||
│ │
|
||
│ Nginx + PHP-FPM + MySQL │
|
||
│ + Redis(必需) │
|
||
│ + 前端静态文件 │
|
||
└─────────────────────────────┘
|
||
```
|
||
|
||
### 中型项目(单机优化)
|
||
|
||
```text
|
||
┌─────────────────────────────┐
|
||
│ 单台服务器 │
|
||
│ │
|
||
│ Nginx(前端 + API 代理) │
|
||
│ PHP-FPM(多进程) │
|
||
│ MySQL(主库) │
|
||
│ Redis(缓存/队列) │
|
||
│ Supervisor(队列/守护进程) │
|
||
└─────────────────────────────┘
|
||
```
|
||
|
||
### 大型项目(分离部署)
|
||
|
||
```text
|
||
┌──────────┐ ┌──────────┐ ┌──────────┐
|
||
│ Nginx │ │ Nginx │ │ Nginx │
|
||
│ 前端CDN │ │ API-1 │ │ API-2 │
|
||
└──────────┘ └──────────┘ └──────────┘
|
||
│ │
|
||
└──────┬───────┘
|
||
│
|
||
┌──────┴──────┐
|
||
▼ ▼
|
||
┌──────────┐ ┌──────────┐
|
||
│ MySQL │ │ Redis │
|
||
│ 主从 │ │ 集群 │
|
||
└──────────┘ └──────────┘
|
||
```
|
||
|
||
## 环境变量规划
|
||
|
||
本项目 `.env` 为扁平键名(无分段式配置),核心项规划如下:
|
||
|
||
| 环境 | APP_DEBUG | APP_ENV | CACHE_STORE / SESSION_DRIVER | JWT_SECRET | CORS_ALLOW_ORIGIN |
|
||
|------|-----------|---------|------------------------------|------------|-------------------|
|
||
| 开发 | true | local | redis | 开发密钥 | * |
|
||
| 测试 | true | testing | redis | 测试密钥 | * |
|
||
| 生产 | **false** | **production** | redis | **强随机密钥(≥32 字符)** | **指定域名** |
|
||
|
||
生成强随机 JWT 密钥:
|
||
|
||
```bash
|
||
php -r "echo bin2hex(random_bytes(32));"
|
||
```
|
||
|
||
:::tip 其它生产必检项
|
||
- `DB_PREFIX=laravel_` 与 SQL 脚本表前缀一致,不要随意修改
|
||
- `FILE_DOMAIN_URL` 留空时按当前请求域名补全文件地址;跨域部署时应配置为前端可访问的文件域名
|
||
- `TRUSTED_PROXIES` 按反向代理层级配置(默认信任 127.0.0.1 / ::1)
|
||
- 队列常驻进程:`php artisan queue:work`(生产用 Supervisor 托管)
|
||
:::
|