# 🚀 WorkTime 服务器部署指南 ## 📋 概述 WorkTime应用现在支持服务器存储,让您可以在多台设备上同步数据。本指南将帮助您部署后端服务器。 ## 🛠️ 服务器要求 - **Node.js**: 版本 14.0.0 或更高 - **内存**: 至少 512MB RAM - **存储**: 至少 100MB 可用空间 - **网络**: 支持 HTTP/HTTPS 访问 ## 📦 安装步骤 ### 1. 安装依赖 ```bash # 安装服务器依赖 npm install express cors # 或者使用提供的package.json cp package-server.json package.json npm install ``` ### 2. 启动服务器 ```bash # 开发模式(自动重启) npm run dev # 生产模式 npm start ``` ### 3. 验证安装 访问 `http://localhost:3001/api/health` 应该返回: ```json { "status": "ok", "timestamp": "2024-01-01T00:00:00.000Z" } ``` ## 🌐 生产环境部署 ### 使用 PM2(推荐) ```bash # 安装PM2 npm install -g pm2 # 启动应用 pm2 start server.js --name worktime-server # 设置开机自启 pm2 startup pm2 save # 查看状态 pm2 status pm2 logs worktime-server ``` ### 使用 Docker ```dockerfile FROM node:18-alpine WORKDIR /app COPY package*.json ./ RUN npm install --production COPY server.js ./ EXPOSE 3001 CMD ["node", "server.js"] ``` ```bash # 构建镜像 docker build -t worktime-server . # 运行容器 docker run -d -p 3001:3001 --name worktime-server worktime-server ``` ### 使用 Nginx 反向代理 ```nginx server { listen 80; server_name your-domain.com; location /api/ { proxy_pass http://localhost:3001; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_cache_bypass $http_upgrade; } } ``` ## 🔧 配置选项 ### 环境变量 ```bash # 端口配置 PORT=3001 # 数据文件路径 DATA_FILE=/path/to/user-data.json # CORS配置 CORS_ORIGIN=http://localhost:3000 ``` ### 数据文件位置 默认情况下,数据文件保存在 `user-data.json`。您可以修改 `DATA_FILE` 环境变量来更改位置。 ## 🔒 安全考虑 ### 1. 身份验证(可选) 如果需要多用户支持,可以添加简单的API密钥验证: ```javascript // 在server.js中添加 const API_KEY = process.env.API_KEY || 'your-secret-key'; app.use('/api', (req, res, next) => { const key = req.headers['x-api-key']; if (key !== API_KEY) { return res.status(401).json({ error: '未授权访问' }); } next(); }); ``` ### 2. HTTPS 在生产环境中,建议使用HTTPS: ```bash # 使用Let's Encrypt sudo certbot --nginx -d your-domain.com ``` ### 3. 数据备份 定期备份 `user-data.json` 文件: ```bash # 创建备份脚本 #!/bin/bash cp user-data.json backup/user-data-$(date +%Y%m%d-%H%M%S).json ``` ## 📊 监控和维护 ### 日志监控 ```bash # 查看应用日志 pm2 logs worktime-server # 查看错误日志 pm2 logs worktime-server --err ``` ### 性能监控 ```bash # 查看资源使用情况 pm2 monit # 查看详细统计 pm2 show worktime-server ``` ### 数据备份 ```bash # 自动备份脚本 #!/bin/bash BACKUP_DIR="/backup/worktime" DATE=$(date +%Y%m%d-%H%M%S) mkdir -p $BACKUP_DIR cp user-data.json $BACKUP_DIR/user-data-$DATE.json # 保留最近30天的备份 find $BACKUP_DIR -name "user-data-*.json" -mtime +30 -delete ``` ## 🔄 更新和维护 ### 更新应用 ```bash # 停止应用 pm2 stop worktime-server # 更新代码 git pull origin main # 安装新依赖 npm install # 重启应用 pm2 restart worktime-server ``` ### 数据迁移 如果需要迁移到新服务器: 1. 停止旧服务器 2. 复制 `user-data.json` 到新服务器 3. 启动新服务器 4. 更新前端配置中的服务器地址 ## 🆘 故障排除 ### 常见问题 1. **端口被占用** ```bash # 查看端口使用情况 lsof -i :3001 # 杀死占用进程 kill -9 ``` 2. **权限问题** ```bash # 确保有写入权限 chmod 755 /path/to/data/directory ``` 3. **内存不足** ```bash # 增加Node.js内存限制 pm2 start server.js --name worktime-server --node-args="--max-old-space-size=1024" ``` ### 联系支持 如果遇到问题,请检查: - 服务器日志 - 网络连接 - 文件权限 - 磁盘空间 ## 📝 许可证 本项目采用 MIT 许可证。