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

263 lines
4.4 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 🚀 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 <PID>
```
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 许可证。