Files
momentry_studio/DEPLOYMENT_CHECKLIST.md
Momentry Studio 59e2718424 docs: 添加部署就绪检查清单
验证内容:
✅ 路径硬编码已消除 (paths.rs, main.rs, db.rs)
✅ 密码硬编码已消除 (db.rs, main.rs)

部署清单:
- 代码层面: 路径动态化、密码动态化、用户管理工具
- 配置层面: .env 文件、环境变量
- 目录层面: 存储目录、数据库目录、权限设置
- 服务层面: Core API、MarkBase API

部署流程:
1. 克隆代码
2. 运行 install.sh
3. 记录生成的密码
4. 验证服务
5. 启动应用

故障排除:
- 安装失败检查
- 服务启动检查
- 密码重置方法

状态: ✅ 可部署到任何新环境
2026-10-12 14:27:03 +08:00

254 lines
4.6 KiB
Markdown

# 部署就绪检查清单
**更新时间**: 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 <repo_url> 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`
**状态**: ✅ 部署就绪