Files
rxthinkcmf-wiki/RXThinkCMF_Laravel13_NaiveVue/zh/deploy/env-plan.md
T
2026-10-08 17:50:29 +08:00

100 lines
4.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 托管)
:::