4.7 KiB
4.7 KiB
🚀 WorkTime 生产环境部署指南
📋 系统要求
- Node.js: 版本 14.0.0 或更高
- npm: 版本 6.0.0 或更高
- 内存: 至少 512MB 可用内存
- 存储: 至少 100MB 可用空间
🛠️ 快速部署
方法1: 使用部署脚本(推荐)
# 克隆项目
git clone <your-repository-url>
cd WorkTime
# 运行部署脚本
./deploy.sh
方法2: 手动部署
# 1. 安装依赖
npm install
# 2. 构建前端应用
npm run build
# 3. 启动服务器
node server.js
🌐 生产环境配置
环境变量
# 设置端口(可选,默认为3001)
export PORT=3001
# 设置数据文件路径(可选)
export DATA_FILE=/path/to/user-data.json
使用 PM2 管理进程(推荐)
# 安装 PM2
npm install -g pm2
# 启动应用
pm2 start server.js --name "worktime"
# 查看状态
pm2 status
# 查看日志
pm2 logs worktime
# 重启应用
pm2 restart worktime
# 停止应用
pm2 stop worktime
使用 Docker 部署
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"]
# 构建镜像
docker build -t worktime-app .
# 运行容器
docker run -d -p 3001:3001 --name worktime worktime-app
🔧 服务器配置
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 反向代理配置
<VirtualHost *:80>
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
</VirtualHost>
📊 监控和维护
健康检查
# 检查应用状态
curl http://localhost:3001/api/health
# 预期响应
{"status":"ok","timestamp":"2025-07-27T16:59:36.507Z"}
日志管理
# 查看应用日志
tail -f /var/log/worktime.log
# 查看错误日志
tail -f /var/log/worktime-error.log
数据备份
# 备份用户数据
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
🔒 安全配置
防火墙设置
# 只允许必要端口
sudo ufw allow 22 # SSH
sudo ufw allow 80 # HTTP
sudo ufw allow 443 # HTTPS
sudo ufw enable
SSL 证书配置
# 使用 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 配置中添加:
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;
缓存配置
# 静态资源缓存
location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg)$ {
expires 1y;
add_header Cache-Control "public, immutable";
}
🚨 故障排除
常见问题
-
端口被占用
# 检查端口占用 netstat -tlnp | grep 3001 # 杀死占用进程 sudo kill -9 <PID>
-
权限问题
# 确保数据文件可写 chmod 644 user-data.json chown www-data:www-data user-data.json
-
内存不足
# 增加 Node.js 内存限制 node --max-old-space-size=1024 server.js
日志分析
# 查看错误日志
grep "ERROR" /var/log/worktime.log
# 查看访问统计
awk '{print $1}' /var/log/worktime.log | sort | uniq -c | sort -nr
📞 技术支持
如果遇到问题,请检查:
- 应用日志文件
- 系统资源使用情况
- 网络连接状态
- 数据库文件权限
🔄 更新部署
# 1. 停止应用
pm2 stop worktime
# 2. 拉取最新代码
git pull origin main
# 3. 安装依赖
npm install
# 4. 重新构建
npm run build
# 5. 重启应用
pm2 restart worktime
注意: 请根据您的具体环境和需求调整配置参数。