# 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 托管) :::