# 🚀 WorkTime 生产环境部署指南 ## 📋 系统要求 - **Node.js**: 版本 14.0.0 或更高 - **npm**: 版本 6.0.0 或更高 - **内存**: 至少 512MB 可用内存 - **存储**: 至少 100MB 可用空间 ## 🛠️ 快速部署 ### 方法1: 使用部署脚本(推荐) ```bash # 克隆项目 git clone cd WorkTime # 运行部署脚本 ./deploy.sh ``` ### 方法2: 手动部署 ```bash # 1. 安装依赖 npm install # 2. 构建前端应用 npm run build # 3. 启动服务器 node server.js ``` ## 🌐 生产环境配置 ### 环境变量 ```bash # 设置端口(可选,默认为3001) export PORT=3001 # 设置数据文件路径(可选) export DATA_FILE=/path/to/user-data.json ``` ### 使用 PM2 管理进程(推荐) ```bash # 安装 PM2 npm install -g pm2 # 启动应用 pm2 start server.js --name "worktime" # 查看状态 pm2 status # 查看日志 pm2 logs worktime # 重启应用 pm2 restart worktime # 停止应用 pm2 stop worktime ``` ### 使用 Docker 部署 ```dockerfile FROM node:18-alpine WORKDIR /app COPY package*.json ./ RUN npm ci --only=production COPY . . RUN npm run build EXPOSE 3001 CMD ["node", "server.js"] ``` ```bash # 构建镜像 docker build -t worktime-app . # 运行容器 docker run -d -p 3001:3001 --name worktime worktime-app ``` ## 🔧 服务器配置 ### Nginx 反向代理配置 ```nginx server { listen 80; server_name your-domain.com; location / { 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; } } ``` ### Apache 反向代理配置 ```apache ServerName your-domain.com ProxyPreserveHost On ProxyPass / http://localhost:3001/ ProxyPassReverse / http://localhost:3001/ ErrorLog ${APACHE_LOG_DIR}/worktime_error.log CustomLog ${APACHE_LOG_DIR}/worktime_access.log combined ``` ## 📊 监控和维护 ### 健康检查 ```bash # 检查应用状态 curl http://localhost:3001/api/health # 预期响应 {"status":"ok","timestamp":"2025-07-27T16:59:36.507Z"} ``` ### 日志管理 ```bash # 查看应用日志 tail -f /var/log/worktime.log # 查看错误日志 tail -f /var/log/worktime-error.log ``` ### 数据备份 ```bash # 备份用户数据 cp user-data.json backup/user-data-$(date +%Y%m%d-%H%M%S).json # 自动备份脚本 #!/bin/bash BACKUP_DIR="/backup/worktime" mkdir -p $BACKUP_DIR cp user-data.json $BACKUP_DIR/user-data-$(date +%Y%m%d-%H%M%S).json find $BACKUP_DIR -name "*.json" -mtime +7 -delete ``` ## 🔒 安全配置 ### 防火墙设置 ```bash # 只允许必要端口 sudo ufw allow 22 # SSH sudo ufw allow 80 # HTTP sudo ufw allow 443 # HTTPS sudo ufw enable ``` ### SSL 证书配置 ```bash # 使用 Let's Encrypt sudo certbot --nginx -d your-domain.com # 或使用自签名证书 openssl req -x509 -nodes -days 365 -newkey rsa:2048 \ -keyout private.key -out certificate.crt ``` ## 📈 性能优化 ### 启用 Gzip 压缩 在 Nginx 配置中添加: ```nginx gzip on; gzip_vary on; gzip_min_length 1024; gzip_types text/plain text/css text/xml text/javascript application/javascript application/xml+rss application/json; ``` ### 缓存配置 ```nginx # 静态资源缓存 location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg)$ { expires 1y; add_header Cache-Control "public, immutable"; } ``` ## 🚨 故障排除 ### 常见问题 1. **端口被占用** ```bash # 检查端口占用 netstat -tlnp | grep 3001 # 杀死占用进程 sudo kill -9 ``` 2. **权限问题** ```bash # 确保数据文件可写 chmod 644 user-data.json chown www-data:www-data user-data.json ``` 3. **内存不足** ```bash # 增加 Node.js 内存限制 node --max-old-space-size=1024 server.js ``` ### 日志分析 ```bash # 查看错误日志 grep "ERROR" /var/log/worktime.log # 查看访问统计 awk '{print $1}' /var/log/worktime.log | sort | uniq -c | sort -nr ``` ## 📞 技术支持 如果遇到问题,请检查: 1. 应用日志文件 2. 系统资源使用情况 3. 网络连接状态 4. 数据库文件权限 ## 🔄 更新部署 ```bash # 1. 停止应用 pm2 stop worktime # 2. 拉取最新代码 git pull origin main # 3. 安装依赖 npm install # 4. 重新构建 npm run build # 5. 重启应用 pm2 restart worktime ``` --- **注意**: 请根据您的具体环境和需求调整配置参数。