5.2 KiB
5.2 KiB
Workdizhi 服务器端存储部署说明
✅ 部署完成
服务器端数据持久化已成功实施!
📋 部署内容
新增文件
- server.js - Node.js Express 后端服务器
- package.json - Node.js 依赖配置
- Dockerfile - 更新为 Node.js 镜像
- docker-compose.yml - 添加数据卷挂载
修改文件
- script.js - 修改数据加载和保存方法,支持服务器 API
🔧 技术架构
后端
- 框架: Express.js
- 端口: 3000(容器内)
- 数据存储:
/app/data/urls.json - API 端点:
GET /api/urls- 获取数据POST /api/urls- 保存数据GET /api/health- 健康检查
前端
- 数据加载: 优先从服务器加载,失败时降级到 localStorage
- 数据保存: 优先保存到服务器,失败时降级到 localStorage
- 兼容性: 完全向后兼容,支持旧数据迁移
数据持久化
- 服务器端:
/home/renjianbo/devops/workdizhi/workdizhi/data/urls.json - Docker 卷: 挂载到容器的
/app/data - 备份: localStorage 作为备用存储
🚀 使用方法
访问应用
- Web 界面: http://101.43.95.130:3006
- API 端点: http://101.43.95.130:3006/api/urls
数据管理
- 自动保存: 添加、编辑、删除网址时自动保存到服务器
- 自动加载: 打开页面时自动从服务器加载数据
- 数据迁移: 如果 localStorage 中有旧数据,会自动迁移到服务器
备份和恢复
数据文件位置:/home/renjianbo/devops/workdizhi/workdizhi/data/urls.json
# 备份数据
cp /home/renjianbo/devops/workdizhi/workdizhi/data/urls.json /path/to/backup/
# 恢复数据
cp /path/to/backup/urls.json /home/renjianbo/devops/workdizhi/workdizhi/data/
📊 数据存储位置
| 位置 | 路径 | 说明 |
|---|---|---|
| 服务器文件 | /home/renjianbo/devops/workdizhi/workdizhi/data/urls.json |
主数据存储 |
| 容器内 | /app/data/urls.json |
容器内的数据文件 |
| 浏览器 | localStorage | 备用存储(降级使用) |
🔄 服务管理
启动服务
cd /home/renjianbo/devops/workdizhi/workdizhi
docker-compose up -d
停止服务
cd /home/renjianbo/devops/workdizhi/workdizhi
docker-compose down
重启服务
cd /home/renjianbo/devops/workdizhi/workdizhi
docker-compose restart
查看日志
docker logs -f workdizhi-web
重新构建
cd /home/renjianbo/devops/workdizhi/workdizhi
docker-compose build
docker-compose up -d
✅ 验证部署
1. 检查服务状态
docker ps | grep workdizhi
# 应该显示容器运行中
2. 测试 API
# 健康检查
curl http://localhost:3006/api/health
# 获取数据
curl http://localhost:3006/api/urls
# 保存数据
curl -X POST http://localhost:3006/api/urls \
-H "Content-Type: application/json" \
-d '{"urls":[],"categories":[]}'
3. 检查数据文件
ls -la /home/renjianbo/devops/workdizhi/workdizhi/data/
cat /home/renjianbo/devops/workdizhi/workdizhi/data/urls.json
🔍 故障排查
问题 1: 数据未保存
检查:
- 查看容器日志:
docker logs workdizhi-web - 检查数据目录权限:
ls -la /home/renjianbo/devops/workdizhi/workdizhi/data/ - 检查 API 响应:浏览器开发者工具 Network 标签
解决:
# 修复权限
chmod 755 /home/renjianbo/devops/workdizhi/workdizhi/data
chown -R renjianbo:renjianbo /home/renjianbo/devops/workdizhi/workdizhi/data
问题 2: 无法访问
检查:
- 端口是否监听:
netstat -tlnp | grep 3006 - 防火墙是否开放:
sudo firewall-cmd --list-ports
解决:
# 开放端口
sudo firewall-cmd --permanent --add-port=3006/tcp
sudo firewall-cmd --reload
问题 3: 数据丢失
恢复:
- 检查数据文件是否存在
- 如果有备份,恢复备份文件
- 如果没有备份,检查 localStorage(浏览器开发者工具)
📝 数据迁移
从 localStorage 迁移到服务器
- 打开网站:http://101.43.95.130:3006
- 如果 localStorage 中有数据,会自动加载
- 进行任何操作(添加、编辑、删除)会自动保存到服务器
- 数据迁移完成
从导出文件迁移
- 使用导入功能导入 JSON 文件
- 数据会自动保存到服务器
🎯 优势
✅ 数据持久化: 数据保存在服务器,不会因换电脑而丢失 ✅ 多设备同步: 所有设备访问同一服务器,数据同步 ✅ 自动备份: 数据文件可以定期备份 ✅ 向后兼容: 支持 localStorage 降级,确保兼容性 ✅ 易于维护: 数据文件位置明确,易于备份和恢复
📌 注意事项
- 定期备份: 建议定期备份
/home/renjianbo/devops/workdizhi/workdizhi/data/urls.json - 权限管理: 确保数据目录有正确的读写权限
- 磁盘空间: 监控数据文件大小,避免占用过多空间
- 安全: 如果暴露在公网,考虑添加认证机制
🔗 相关文件
- 后端服务:
server.js - 前端代码:
script.js - Docker 配置:
docker-compose.yml - 数据文件:
data/urls.json