263 lines
4.4 KiB
Markdown
263 lines
4.4 KiB
Markdown
# 🚀 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 许可证。 |