# 部署指南 ## 概述 本文档描述了 188-179 招聘系统的部署流程和配置。 ## 部署架构 ### 组件列表 | 组件 | 技术栈 | 端口 | 说明 | |------|--------|------|------| | Web服务器 | Node.js + Hono | 8080 | 管理后台后端 | | PostgreSQL | 17 | 5432 | 数据库 | | Redis | 7 | 6379 | 缓存和会话 | | MinIO | latest | 9000 | 对象存储 | ### 基础设施要求 **最低配置**: - CPU: 2核 - 内存: 4GB - 磁盘: 20GB **推荐配置**: - CPU: 4核 - 内存: 8GB - 磁盘: 50GB ## Docker部署 ### 使用Docker Compose ```bash # 构建镜像 docker-compose build # 启动所有服务 docker-compose up -d # 查看日志 docker-compose logs -f # 停止服务 docker-compose down ``` ### Dockerfile示例 ```dockerfile # Web服务Dockerfile FROM node:20.19.2-alpine WORKDIR /app # 安装pnpm RUN npm install -g pnpm@10.18.3 # 复制依赖文件 COPY package.json pnpm-lock.yaml ./ COPY pnpm-workspace.yaml ./ # 安装依赖 RUN pnpm install --frozen-lockfile # 复制源码 COPY . . # 构建共享包 RUN pnpm run build:mini-ui-packages # 构建应用 RUN pnpm build # 暴露端口 EXPOSE 8080 # 启动命令 CMD ["node", "web/server.js"] ``` ### docker-compose.yml示例 ```yaml version: '3.8' services: postgres: image: postgres:17 environment: POSTGRES_USER: postgres POSTGRES_PASSWORD: postgres POSTGRES_DB: postgres ports: - "5432:5432" volumes: - postgres_data:/var/lib/postgresql/data redis: image: redis:7-alpine ports: - "6379:6379" volumes: - redis_data:/data minio: image: minio/minio:latest command: server /data --console-address ":9001" environment: MINIO_ROOT_USER: minioadmin MINIO_ROOT_PASSWORD: minioadmin ports: - "9000:9000" - "9001:9001" volumes: - minio_data:/data web: build: . ports: - "8080:8080" depends_on: - postgres - redis - minio environment: DATABASE_URL: postgresql://postgres:postgres@postgres:5432/postgres REDIS_URL: redis://redis:6379 MINIO_ENDPOINT: minio MINIO_PORT: 9000 NODE_ENV: production volumes: postgres_data: redis_data: minio_data: ``` ## 生产环境部署 ### 环境变量配置 创建生产环境的 `.env.production`: ```bash # 数据库配置 DATABASE_URL=postgresql://user:password@production-db:5432/dbname # Redis配置 REDIS_URL=redis://production-redis:6379 # JWT配置 JWT_SECRET=your-production-jwt-secret-min-32-chars # MinIO配置 MINIO_ENDPOINT=production-minio MINIO_PORT=9000 MINIO_ACCESS_KEY=your-access-key MINIO_SECRET_KEY=your-secret-key MINIO_BUCKET=d8dai MINIO_USE_SSL=true # 应用配置 NODE_ENV=production PORT=8080 LOG_LEVEL=info # CORS配置 CORS_ORIGIN=https://your-domain.com ``` ### 构建生产版本 ```bash # 设置生产环境 export NODE_ENV=production # 构建所有包 pnpm build # 构建小程序UI包 pnpm run build:mini-ui-packages ``` ### 启动生产服务 ```bash # 使用PM2管理进程 pm2 start web/server.js --name "d8d-web" # 查看状态 pm2 status # 查看日志 pm2 logs d8d-web # 重启服务 pm2 restart d8d-web ``` ## 数据库迁移 ### 运行迁移 ```bash cd web pnpm db:migrate ``` ### 数据库备份 ```bash # 备份数据库 pnpm db:backup # 恢复数据库 pnpm db:restore ``` ## 监控和日志 ### 应用日志 日志位置: - 应用日志: `/var/log/d8d/app.log` - 错误日志: `/var/log/d8d/error.log` ### 日志配置 ```typescript // logger配置 import { logger } from '@d8d/shared-utils'; logger.setLevel(process.env.LOG_LEVEL || 'info'); ``` ### 监控指标 - CPU使用率 - 内存使用率 - 响应时间 - 错误率 - 请求量 ## 安全配置 ### HTTPS配置 ```nginx server { listen 443 ssl http2; server_name your-domain.com; ssl_certificate /path/to/cert.pem; ssl_certificate_key /path/to/key.pem; location / { proxy_pass http://localhost:8080; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } } ``` ### 防火墙配置 ```bash # 只开放必要端口 ufw allow 80/tcp ufw allow 443/tcp ufw allow 22/tcp ufw enable ``` ## CI/CD配置 ### GitHub Actions示例 ```yaml name: Deploy on: push: branches: [main] jobs: deploy: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Setup Node.js uses: actions/setup-node@v3 with: node-version: '20.19.2' - name: Install pnpm run: npm install -g pnpm@10.18.3 - name: Install dependencies run: pnpm install - name: Build run: pnpm build - name: Deploy to server run: | scp -r . user@server:/var/www/d8d ssh user@server "cd /var/www/d8d && pm2 restart all" ``` ## 故障排查 ### 服务无法启动 1. 检查环境变量配置 2. 检查数据库连接 3. 检查端口占用 4. 查看应用日志 ### 数据库连接失败 1. 确认数据库服务运行 2. 检查连接字符串 3. 验证网络连接 4. 检查数据库用户权限 ### 性能问题 1. 检查系统资源使用 2. 查看慢查询日志 3. 检查缓存命中率 4. 分析应用日志 ## 回滚策略 ### 数据库回滚 ```bash # 恢复到之前的备份 pnpm db:restore ``` ### 应用回滚 ```bash # 使用PM2回滚到旧版本 pm2 revert d8d-web # 或切换到之前的Git提交 git checkout pnpm build pm2 restart d8d-web ``` ## 相关文档 - [开发环境设置](./setup.md) - [本地开发指南](./local-development.md) --- **文档版本**: 1.0 **最后更新**: 2026-01-07