# 快速开始指南 > 快速上手 WWJCloud 网关系统,从零开始搭建完整的网关环境 ## 🚀 **环境准备** ### **系统要求** - **操作系统**: Windows 10+, macOS 10.15+, Ubuntu 18.04+ - **Node.js**: >= 18.0.0 - **npm**: >= 8.0.0 或 pnpm >= 7.0.0 - **Docker**: >= 20.0.0 (可选) - **Kubernetes**: >= 1.20.0 (可选) ### **开发工具** - **代码编辑器**: VS Code (推荐) - **API 测试**: Postman 或 Apifox - **数据库管理**: MySQL Workbench 或 phpMyAdmin - **容器管理**: Docker Desktop --- ## 📦 **安装步骤** ### **1. 克隆项目** ```bash # 克隆项目到本地 git clone cd wwjcloud-nestjs # 检查项目结构 ls -la ``` ### **2. 安装依赖** ```bash # 使用 npm 安装 npm install # 或使用 pnpm (推荐) pnpm install # 检查安装结果 npm list --depth=0 ``` ### **3. 环境配置** ```bash # 复制环境配置文件 cp .env.example .env # 编辑环境配置 nano .env ``` **环境配置示例**: ```env # 应用配置 NODE_ENV=development PORT=3001 # 数据库配置 DB_HOST=localhost DB_PORT=3306 DB_USERNAME=root DB_PASSWORD=your_password DB_DATABASE=wwjcloud # Redis配置 REDIS_HOST=localhost REDIS_PORT=6379 REDIS_PASSWORD= # JWT配置 JWT_SECRET=your_jwt_secret_key JWT_EXPIRES_IN=7d # 日志配置 LOG_LEVEL=info ``` ### **4. 数据库准备** ```bash # 启动 MySQL 服务 sudo systemctl start mysql # 创建数据库 mysql -u root -p CREATE DATABASE wwjcloud CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; EXIT; # 导入数据库结构 mysql -u root -p wwjcloud < sql/wwjcloud.sql ``` ### **5. 启动服务** ```bash # 开发模式启动 npm run start:dev # 或使用 pnpm pnpm start:dev ``` --- ## ✅ **验证安装** ### **健康检查** ```bash # 检查服务状态 curl http://localhost:3001/health # 预期响应 { "status": "ok", "timestamp": "2025-08-25T02:36:55.746Z", "uptime": 123.456 } ``` ### **API 文档** - **访问地址**: http://localhost:3001/docs - **功能**: 查看所有可用的 API 接口 - **测试**: 在线测试 API 功能 ### **服务状态** ```bash # 检查端口占用 netstat -tulpn | grep :3001 # 检查进程状态 ps aux | grep node ``` --- ## 🔧 **基础配置** ### **路由配置** ```typescript // src/app.module.ts @Module({ imports: [ // 基础模块 ConfigModule.forRoot({ isGlobal: true, load: [configuration], }), // 网关模块 GatewayModule, // 业务模块 UserModule, AuthModule, ], }) export class AppModule {} ``` ### **中间件配置** ```typescript // src/main.ts async function bootstrap() { const app = await NestFactory.create(AppModule); // 全局中间件 app.useGlobalPipes(new ValidationPipe()); app.useGlobalInterceptors(new TransformInterceptor()); // CORS 配置 app.enableCors({ origin: ['http://localhost:3000', 'http://localhost:8080'], credentials: true, }); // 启动服务 await app.listen(3001); } ``` ### **环境变量配置** ```typescript // src/config/index.ts export default () => ({ nodeEnv: process.env.NODE_ENV || 'development', port: parseInt(process.env.PORT || '3000', 10), // 网关配置 gateway: { enabled: process.env.GATEWAY_ENABLED === 'true', timeout: parseInt(process.env.GATEWAY_TIMEOUT || '30000', 10), retries: parseInt(process.env.GATEWAY_RETRIES || '3', 10), }, // 负载均衡配置 loadBalancer: { algorithm: process.env.LB_ALGORITHM || 'round-robin', healthCheck: process.env.LB_HEALTH_CHECK === 'true', }, }); ``` --- ## 🧪 **测试网关功能** ### **1. 基础路由测试** ```bash # 测试用户注册 curl -X POST http://localhost:3001/api/member/register \ -H "Content-Type: application/json" \ -d '{ "username": "testuser", "email": "test@example.com", "password": "password123" }' # 测试用户登录 curl -X POST http://localhost:3001/api/member/login \ -H "Content-Type: application/json" \ -d '{ "username": "testuser", "password": "password123" }' ``` ### **2. 认证测试** ```bash # 获取 JWT Token TOKEN=$(curl -s -X POST http://localhost:3001/api/member/login \ -H "Content-Type: application/json" \ -d '{"username": "testuser", "password": "password123"}' \ | jq -r '.access_token') # 使用 Token 访问受保护的接口 curl -X GET http://localhost:3001/api/member/profile \ -H "Authorization: Bearer $TOKEN" ``` ### **3. 负载均衡测试** ```bash # 模拟并发请求 for i in {1..10}; do curl -s http://localhost:3001/api/member/profile \ -H "Authorization: Bearer $TOKEN" & done wait ``` --- ## 📊 **监控和日志** ### **日志查看** ```bash # 查看应用日志 tail -f logs/app-$(date +%Y-%m-%d).log # 查看错误日志 grep "ERROR" logs/app-$(date +%Y-%m-%d).log # 查看性能日志 grep "PERFORMANCE" logs/app-$(date +%Y-%m-%d).log ``` ### **性能监控** ```bash # 检查内存使用 ps -o pid,ppid,%mem,%cpu,cmd -p $(pgrep node) # 检查网络连接 netstat -an | grep :3001 | wc -l # 检查响应时间 curl -w "@curl-format.txt" -o /dev/null -s http://localhost:3001/health ``` **curl-format.txt 内容**: ``` time_namelookup: %{time_namelookup}\n time_connect: %{time_connect}\n time_appconnect: %{time_appconnect}\n time_pretransfer: %{time_pretransfer}\n time_redirect: %{time_redirect}\n time_starttransfer: %{time_starttransfer}\n ----------\n time_total: %{time_total}\n ``` --- ## 🚨 **常见问题** ### **1. 端口被占用** ```bash # 查找占用端口的进程 lsof -i :3001 # 杀死进程 kill -9 # 或者修改端口 export PORT=3002 npm run start:dev ``` ### **2. 数据库连接失败** ```bash # 检查 MySQL 服务状态 sudo systemctl status mysql # 检查数据库连接 mysql -u root -p -h localhost # 检查防火墙设置 sudo ufw status ``` ### **3. 依赖安装失败** ```bash # 清理缓存 npm cache clean --force # 删除 node_modules rm -rf node_modules package-lock.json # 重新安装 npm install ``` --- ## 🔄 **下一步操作** ### **开发模式** - [ ] 熟悉项目结构和代码组织 - [ ] 了解各个模块的功能和接口 - [ ] 开始开发新的功能模块 - [ ] 编写单元测试和集成测试 ### **生产部署** - [ ] 配置生产环境变量 - [ ] 设置数据库和缓存 - [ ] 配置负载均衡和反向代理 - [ ] 设置监控和告警 ### **高级功能** - [ ] 实现微服务网关功能 - [ ] 集成服务网格技术 - [ ] 添加分布式追踪 - [ ] 优化性能和可靠性 --- ## 📚 **相关文档** - [网关系统概览](./overview.md) - 了解系统架构和特性 - [技术架构详解](./architecture.md) - 深入理解技术实现 - [开发计划](./development-plan.md) - 查看开发路线图 - [API 参考](./api-reference.md) - 完整的 API 文档 --- ## 💡 **提示和建议** 1. **开发环境**: 建议使用 VS Code 和相关的 NestJS 插件 2. **版本控制**: 定期提交代码,保持良好的版本管理习惯 3. **测试驱动**: 先写测试,再写代码,确保代码质量 4. **文档更新**: 及时更新文档,保持文档与代码同步 5. **性能优化**: 关注性能指标,持续优化系统性能 --- > **注意**: 如果遇到问题,请查看日志文件或提交 Issue 到项目仓库。