diff --git a/DEPLOYMENT_CHECKLIST.md b/DEPLOYMENT_CHECKLIST.md new file mode 100644 index 0000000..d3271c7 --- /dev/null +++ b/DEPLOYMENT_CHECKLIST.md @@ -0,0 +1,253 @@ +# 部署就绪检查清单 + +**更新时间**: 2026-10-12 +**状态**: ✅ 已消除所有硬编码,可部署到任何环境 + +--- + +## ✅ 硬编码消除验证 + +### 1. 路径硬编码 + +**检查结果**: +- ✅ `paths.rs` - 无硬编码路径 +- ✅ `main.rs` - 无硬编码路径 +- ✅ `db.rs` - 无硬编码路径 + +**动态路径系统**: +```rust +get_home_dir() // 检测用户主目录 +get_momentry_core_root() // MOMENTRY_CORE_ROOT 或 ~/momentry_core +get_markbase_root() // MARKBASE_ROOT 或 ~/markbase +get_storage_root() // STORAGE_ROOT 或 ~/momentry/var/sftpgo/data +``` + +--- + +### 2. 密码硬编码 + +**检查结果**: +- ✅ `db.rs` - 无硬编码密码 +- ✅ `main.rs` - 无硬编码密码 + +**动态密码系统**: +```rust +MOMENTRY_DEFAULT_PASSWORD // 环境变量或自动生成 +SMB_USER / SMB_PASSWORD // SMB 服务配置 +``` + +--- + +## 📋 部署前检查清单 + +### A. 代码层面 + +- [x] 路径动态化 (paths.rs) +- [x] 密码动态化 (db.rs, main.rs) +- [x] 用户管理工具 (user_tool.rs) +- [x] 安装脚本 (install.sh) +- [x] 配置模板 (.env.template) + +--- + +### B. 配置层面 + +**必需配置文件**: +- [ ] `.env` 文件已创建 +- [ ] `MOMENTRY_DEFAULT_PASSWORD` 已设置 +- [ ] `MOMENTRY_API_KEY` 已设置 + +**推荐配置**: +- [ ] `MOMENTRY_CORE_ROOT` 已设置 (或使用默认值) +- [ ] `MARKBASE_ROOT` 已设置 (或使用默认值) +- [ ] `STORAGE_ROOT` 已设置 (或使用默认值) + +--- + +### C. 目录层面 + +**必需目录** (安装脚本自动创建): +- [ ] `~/momentry/var/sftpgo/data/demo` - 文件存储 +- [ ] `~/momentry/output` - 输出目录 +- [ ] `~/momentry/backup` - 备份目录 +- [ ] `momentry_studio/data/users` - 数据库 + +**权限检查**: +- [ ] 存储目录权限: `chmod 755 ~/momentry/var/sftpgo/data` +- [ ] 数据库目录权限: `chmod 755 data/users` +- [ ] .env 文件权限: `chmod 600 .env` + +--- + +### D. 服务层面 + +**必需服务**: +- [ ] Momentry Core API (`localhost:3002`) +- [ ] MarkBase API (`localhost:11438`) + +**可选服务**: +- [ ] SMB 服务 (如需文件共享) +- [ ] SFTP 服务 (如需远程访问) + +--- + +## 🚀 部署流程 + +### 新环境部署 (例如 m4promini) + +```bash +# 1. 克隆代码 +cd ~ +git clone momentry_studio + +# 2. 进入目录 +cd momentry_studio + +# 3. 运行安装脚本 +./install.sh + +# 4. 记录生成的密码 +# 输出示例: +# ======================================== +# Default user password: demo_a1b2c3d4 +# Please save this password securely! +# ======================================== + +# 5. 检查配置 +cat .env + +# 6. 验证服务 +curl http://localhost:3002/health +curl http://localhost:11438/health + +# 7. 启动应用 +./start.sh +``` + +--- + +## ✅ 验证检查 + +### 1. 路径验证 + +```bash +# 检查数据目录 +ls -la ~/momentry/var/sftpgo/data/demo/ + +# 检查数据库 +ls -la data/users/demo.sqlite + +# 检查配置 +cat .env | grep ROOT +``` + +--- + +### 2. 密码验证 + +```bash +# 检查默认密码 +cat .env | grep MOMENTRY_DEFAULT_PASSWORD + +# 测试登录 +curl -X POST http://localhost:11438/api/v2/admin/login \ + -H "Content-Type: application/json" \ + -d '{"username":"demo","password":"demo_a1b2c3d4"}' +``` + +--- + +### 3. 用户管理 + +```bash +# 列出用户 +./src-tauri/target/release/user_tool list + +# 修改密码 +./src-tauri/target/release/user_tool set-password demo new_password + +# 创建新用户 +./src-tauri/target/release/user_tool create admin admin_password +``` + +--- + +## 🔧 故障排除 + +### 问题 1: 安装失败 + +**检查**: +```bash +# 检查 Node.js +node --version # 需要 v18+ + +# 检查 Rust +rustc --version # 需要 1.77.2+ + +# 检查依赖 +npm install +cargo build --release +``` + +--- + +### 问题 2: 服务无法启动 + +**检查**: +```bash +# 检查端口占用 +lsof -i :3002 +lsof -i :11438 +lsof -i :8888 + +# 检查日志 +tail -f /tmp/momentry_*.log +``` + +--- + +### 问题 3: 密码不正确 + +**解决**: +```bash +# 重置密码 +export MOMENTRY_DEFAULT_PASSWORD=new_password +./src-tauri/target/release/user_tool init-demo +``` + +--- + +## 📊 部署状态矩阵 + +| 环境 | 用户 | 主目录 | 密码 | 状态 | +|-----|------|--------|------|------| +| m5max48 | accusys | `/Users/accusys` | `demo_*` | ✅ 已部署 | +| m4promini | nextorageai | `/Users/nextorageai` | `demo_*` | ⏳ 待部署 | +| 生产环境 | - | `/opt/momentry` | `自定义` | ⏳ 待部署 | + +--- + +## 🎯 总结 + +### 已实现 + +✅ 完全动态化系统 +- 路径:自动检测用户主目录 +- 密码:每次安装自动生成 +- 用户:预设计 demo 用户 +- 配置:模板 + 自动生成 + +--- + +### 可部署 + +✅ 支持任何新环境 +- 无需修改代码 +- 自动检测路径 +- 自动生成密码 +- 一键安装部署 + +--- + +**文档位置**: `DEPLOYMENT_CHECKLIST.md` +**状态**: ✅ 部署就绪