Files
workdizhi/部署说明.md

5.2 KiB
Raw Permalink Blame History

Workdizhi 服务器端存储部署说明

部署完成

服务器端数据持久化已成功实施!

📋 部署内容

新增文件

  1. server.js - Node.js Express 后端服务器
  2. package.json - Node.js 依赖配置
  3. Dockerfile - 更新为 Node.js 镜像
  4. docker-compose.yml - 添加数据卷挂载

修改文件

  1. 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 作为备用存储

🚀 使用方法

访问应用

数据管理

  1. 自动保存: 添加、编辑、删除网址时自动保存到服务器
  2. 自动加载: 打开页面时自动从服务器加载数据
  3. 数据迁移: 如果 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: 数据未保存

检查:

  1. 查看容器日志:docker logs workdizhi-web
  2. 检查数据目录权限:ls -la /home/renjianbo/devops/workdizhi/workdizhi/data/
  3. 检查 API 响应:浏览器开发者工具 Network 标签

解决:

# 修复权限
chmod 755 /home/renjianbo/devops/workdizhi/workdizhi/data
chown -R renjianbo:renjianbo /home/renjianbo/devops/workdizhi/workdizhi/data

问题 2: 无法访问

检查:

  1. 端口是否监听:netstat -tlnp | grep 3006
  2. 防火墙是否开放:sudo firewall-cmd --list-ports

解决:

# 开放端口
sudo firewall-cmd --permanent --add-port=3006/tcp
sudo firewall-cmd --reload

问题 3: 数据丢失

恢复:

  1. 检查数据文件是否存在
  2. 如果有备份,恢复备份文件
  3. 如果没有备份,检查 localStorage浏览器开发者工具

📝 数据迁移

从 localStorage 迁移到服务器

  1. 打开网站:http://101.43.95.130:3006
  2. 如果 localStorage 中有数据,会自动加载
  3. 进行任何操作(添加、编辑、删除)会自动保存到服务器
  4. 数据迁移完成

从导出文件迁移

  1. 使用导入功能导入 JSON 文件
  2. 数据会自动保存到服务器

🎯 优势

数据持久化: 数据保存在服务器,不会因换电脑而丢失 多设备同步: 所有设备访问同一服务器,数据同步 自动备份: 数据文件可以定期备份 向后兼容: 支持 localStorage 降级,确保兼容性 易于维护: 数据文件位置明确,易于备份和恢复

📌 注意事项

  1. 定期备份: 建议定期备份 /home/renjianbo/devops/workdizhi/workdizhi/data/urls.json
  2. 权限管理: 确保数据目录有正确的读写权限
  3. 磁盘空间: 监控数据文件大小,避免占用过多空间
  4. 安全: 如果暴露在公网,考虑添加认证机制

🔗 相关文件

  • 后端服务: server.js
  • 前端代码: script.js
  • Docker 配置: docker-compose.yml
  • 数据文件: data/urls.json