MyWorkTime/DEPLOYMENT.md
2025-07-28 01:04:18 +08:00

4.4 KiB
Raw Permalink Blame History

🚀 WorkTime 服务器部署指南

📋 概述

WorkTime应用现在支持服务器存储让您可以在多台设备上同步数据。本指南将帮助您部署后端服务器。

🛠️ 服务器要求

  • Node.js: 版本 14.0.0 或更高
  • 内存: 至少 512MB RAM
  • 存储: 至少 100MB 可用空间
  • 网络: 支持 HTTP/HTTPS 访问

📦 安装步骤

1. 安装依赖

# 安装服务器依赖
npm install express cors

# 或者使用提供的package.json
cp package-server.json package.json
npm install

2. 启动服务器

# 开发模式(自动重启)
npm run dev

# 生产模式
npm start

3. 验证安装

访问 http://localhost:3001/api/health 应该返回:

{
  "status": "ok",
  "timestamp": "2024-01-01T00:00:00.000Z"
}

🌐 生产环境部署

使用 PM2推荐

# 安装PM2
npm install -g pm2

# 启动应用
pm2 start server.js --name worktime-server

# 设置开机自启
pm2 startup
pm2 save

# 查看状态
pm2 status
pm2 logs worktime-server

使用 Docker

FROM node:18-alpine
WORKDIR /app
COPY package*.json ./
RUN npm install --production
COPY server.js ./
EXPOSE 3001
CMD ["node", "server.js"]
# 构建镜像
docker build -t worktime-server .

# 运行容器
docker run -d -p 3001:3001 --name worktime-server worktime-server

使用 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;
    }
}

🔧 配置选项

环境变量

# 端口配置
PORT=3001

# 数据文件路径
DATA_FILE=/path/to/user-data.json

# CORS配置
CORS_ORIGIN=http://localhost:3000

数据文件位置

默认情况下,数据文件保存在 user-data.json。您可以修改 DATA_FILE 环境变量来更改位置。

🔒 安全考虑

1. 身份验证(可选)

如果需要多用户支持可以添加简单的API密钥验证

// 在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

# 使用Let's Encrypt
sudo certbot --nginx -d your-domain.com

3. 数据备份

定期备份 user-data.json 文件:

# 创建备份脚本
#!/bin/bash
cp user-data.json backup/user-data-$(date +%Y%m%d-%H%M%S).json

📊 监控和维护

日志监控

# 查看应用日志
pm2 logs worktime-server

# 查看错误日志
pm2 logs worktime-server --err

性能监控

# 查看资源使用情况
pm2 monit

# 查看详细统计
pm2 show worktime-server

数据备份

# 自动备份脚本
#!/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

🔄 更新和维护

更新应用

# 停止应用
pm2 stop worktime-server

# 更新代码
git pull origin main

# 安装新依赖
npm install

# 重启应用
pm2 restart worktime-server

数据迁移

如果需要迁移到新服务器:

  1. 停止旧服务器
  2. 复制 user-data.json 到新服务器
  3. 启动新服务器
  4. 更新前端配置中的服务器地址

🆘 故障排除

常见问题

  1. 端口被占用

    # 查看端口使用情况
    lsof -i :3001
    
    # 杀死占用进程
    kill -9 <PID>
    
  2. 权限问题

    # 确保有写入权限
    chmod 755 /path/to/data/directory
    
  3. 内存不足

    # 增加Node.js内存限制
    pm2 start server.js --name worktime-server --node-args="--max-old-space-size=1024"
    

联系支持

如果遇到问题,请检查:

  • 服务器日志
  • 网络连接
  • 文件权限
  • 磁盘空间

📝 许可证

本项目采用 MIT 许可证。