feat: 动态路径系统 - 支持任意用户环境部署

问题:
- 100+ 处硬编码路径 /Users/accusys
- 无法在不同用户环境部署
- 配置文件路径固定

解决方案:
1. ✅ 创建 paths.rs 模块
   - get_home_dir() - 获取用户主目录
   - get_momentry_core_root() - Core API 根目录
   - get_markbase_root() - MarkBase 根目录
   - get_studio_root() - Studio 根目录
   - get_storage_root() - 存储根目录
   - 环境变量优先 > 用户主目录推断

2. ✅ 修改 main.rs
   - 移除所有硬编码路径
   - 使用动态路径函数
   - 支持环境变量配置

3. ✅ 创建配置模板
   - admin_config.json.template
   - .env.template
   - 使用 {{HOME}} 占位符

4. ✅ 创建自动化脚本
   - install.sh - 通用安装脚本
   - generate_config.sh - 配置生成脚本
   - 自动检测用户环境

特性:
- ✅ 支持任意用户环境
- ✅ 自动检测用户主目录
- ✅ 环境变量优先级控制
- ✅ 一键安装部署

测试:
- ✅ 编译通过 (cargo check)
- ⚠️ 需要在新环境测试

使用方法:
1. 克隆项目
2. ./install.sh
3. 编辑 .env
4. npm run proxy

适用环境:
- m5max48: /Users/accusys
- m4promini: /Users/nextorageai
- 任意 macOS 环境
This commit is contained in:
2026-10-12 12:34:53 +08:00
parent bb45f0981a
commit 0973f5cfd7
6 changed files with 584 additions and 17 deletions

76
generate_config.sh Executable file
View File

@@ -0,0 +1,76 @@
#!/bin/bash
# Momentry Studio - 配置文件生成脚本
# 用途: 根据当前用户环境生成 admin_config.json
# 使用: ./generate_config.sh
set -e
# 获取用户主目录
USER_HOME="${HOME:-$(pwd)}"
STUDIO_ROOT="$(cd "$(dirname "$0")" && pwd)"
echo "================================================================================"
echo " Momentry Studio - 配置文件生成"
echo "================================================================================"
echo ""
echo "用户主目录: ${USER_HOME}"
echo "Studio 根目录: ${STUDIO_ROOT}"
echo ""
# 设置默认值
PYTHON_PATH="${PYTHON_PATH:-/opt/homebrew/bin/python3.11}"
FFMPEG_PATH="${FFMPEG_PATH:-/opt/homebrew/bin/ffmpeg}"
MEDIA_BASE_URL="${MEDIA_BASE_URL:-https://wp.momentry.ddns.net}"
SERVE_BASE_URL="${SERVE_BASE_URL:-https://m5wp.momentry.ddns.net/files}"
# 检查模板文件
TEMPLATE_FILE="${STUDIO_ROOT}/config/admin_config.json.template"
if [ ! -f "${TEMPLATE_FILE}" ]; then
echo "❌ 错误: 找不到模板文件 ${TEMPLATE_FILE}"
exit 1
fi
echo "配置值:"
echo " - Python: ${PYTHON_PATH}"
echo " - FFmpeg: ${FFMPEG_PATH}"
echo " - Media Base URL: ${MEDIA_BASE_URL}"
echo " - Serve Base URL: ${SERVE_BASE_URL}"
echo ""
# 生成配置文件
OUTPUT_FILE="${STUDIO_ROOT}/config/admin_config.json"
echo "生成配置文件..."
sed -e "s|{{HOME}}|${USER_HOME}|g" \
-e "s|{{PYTHON_PATH}}|${PYTHON_PATH}|g" \
-e "s|{{FFMPEG_PATH}}|${FFMPEG_PATH}|g" \
-e "s|{{MEDIA_BASE_URL}}|${MEDIA_BASE_URL}|g" \
-e "s|{{SERVE_BASE_URL}}|${SERVE_BASE_URL}|g" \
"${TEMPLATE_FILE}" > "${OUTPUT_FILE}"
if [ $? -eq 0 ]; then
echo "✅ 配置文件已生成: ${OUTPUT_FILE}"
echo ""
echo "生成的路径:"
echo " - Output Dir: ${USER_HOME}/momentry/output"
echo " - Backup Dir: ${USER_HOME}/momentry/backup"
echo " - Scripts Dir: ${USER_HOME}/momentry_core/scripts"
echo " - Storage Root: ${USER_HOME}/momentry/var/sftpgo/data"
else
echo "❌ 配置文件生成失败"
exit 1
fi
echo ""
echo "================================================================================"
echo " ✅ 完成"
echo "================================================================================"
echo ""
echo "下一步:"
echo " 1. 检查生成的配置: cat ${OUTPUT_FILE}"
echo " 2. 如需自定义,设置环境变量后重新运行:"
echo " export PYTHON_PATH=/your/path"
echo " export FFMPEG_PATH=/your/path"
echo " ./generate_config.sh"
echo ""