完善部署脚本兼容性并生成详细部署手册
- setup.sh: 自动检测 CONDA_BASE(conda info --base),移除 set -e 改为 错误收集,新增第8步验证 kohya 训练环境(测试 torch/accelerate 加载) - start_all_services.sh: 自动检测 CONDA_BASE,新增端口冲突检测和 WebUI 就绪等待(最多60秒轮询) - stop_all_services.sh: 新增停止脚本,按端口停止三个服务 - py310.yml: 移除硬编码 prefix 路径,避免跨机器部署问题 - DEPLOY.md: 详细部署操作手册,覆盖从 clone 到验证三大功能的全流程 - 已验证: kohya.tar.gz 解压→conda-unpack→PYTHONPATH 加载全部通过
This commit is contained in:
+74
-11
@@ -1,24 +1,87 @@
|
||||
#!/bin/bash
|
||||
|
||||
BASE_DIR="$(cd "$(dirname "$0")" && pwd)"
|
||||
CONDA_BASE="${CONDA_BASE:-/home/szlc/miniconda3}"
|
||||
|
||||
# 自动检测 conda 安装路径
|
||||
if [ -z "$CONDA_BASE" ]; then
|
||||
if command -v conda >/dev/null 2>&1; then
|
||||
CONDA_BASE="$(conda info --base 2>/dev/null)"
|
||||
fi
|
||||
fi
|
||||
CONDA_BASE="${CONDA_BASE:-$HOME/miniconda3}"
|
||||
export CONDA_BASE
|
||||
|
||||
mkdir -p "$BASE_DIR/logs"
|
||||
|
||||
# 检查端口是否被占用,如占用则提示
|
||||
check_port() {
|
||||
local port=$1
|
||||
local name=$2
|
||||
if lsof -i :$port >/dev/null 2>&1; then
|
||||
echo "⚠ 端口 $port ($name) 已被占用,可能服务已在运行"
|
||||
echo " 如需重启,请先运行: ./stop_all_services.sh"
|
||||
return 1
|
||||
fi
|
||||
return 0
|
||||
}
|
||||
|
||||
echo "=== 启动换发型服务 ==="
|
||||
echo "BASE_DIR: $BASE_DIR"
|
||||
echo "CONDA_BASE: $CONDA_BASE"
|
||||
echo ""
|
||||
|
||||
# 检查 conda 环境是否存在
|
||||
for env_name in my_hair sdwebui py310; do
|
||||
if [ ! -f "$CONDA_BASE/envs/$env_name/bin/python" ]; then
|
||||
echo "✗ conda 环境 $env_name 不存在,请先运行 ./setup.sh"
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
|
||||
# 1. hair_service_sd (端口 8801)
|
||||
cd "$BASE_DIR/hair_service_sd"
|
||||
nohup "$CONDA_BASE/envs/my_hair/bin/python" run_copy_cost_colorb64.py > "$BASE_DIR/logs/hair_service.log" 2>&1 &
|
||||
echo "hair_service_sd 已启动 (PID: $!, 端口 8801)"
|
||||
echo "[1/3] 启动 hair_service_sd (端口 8801)..."
|
||||
if check_port 8801 "hair_service_sd"; then
|
||||
cd "$BASE_DIR/hair_service_sd"
|
||||
nohup "$CONDA_BASE/envs/my_hair/bin/python" run_copy_cost_colorb64.py > "$BASE_DIR/logs/hair_service.log" 2>&1 &
|
||||
echo " hair_service_sd 已启动 (PID: $!, 端口 8801)"
|
||||
fi
|
||||
|
||||
# 2. stable-diffusion-webui (端口 57860)
|
||||
cd "$BASE_DIR/stable-diffusion-webui"
|
||||
nohup "$CONDA_BASE/envs/sdwebui/bin/python" webui.py --api --listen --xformers --port 57860 > "$BASE_DIR/logs/webui.log" 2>&1 &
|
||||
echo "stable-diffusion-webui 已启动 (PID: $!, 端口 57860)"
|
||||
echo "[2/3] 启动 stable-diffusion-webui (端口 57860)..."
|
||||
if check_port 57860 "webui"; then
|
||||
cd "$BASE_DIR/stable-diffusion-webui"
|
||||
nohup "$CONDA_BASE/envs/sdwebui/bin/python" webui.py --api --listen --xformers --port 57860 > "$BASE_DIR/logs/webui.log" 2>&1 &
|
||||
echo " stable-diffusion-webui 已启动 (PID: $!, 端口 57860)"
|
||||
echo " ℹ WebUI 首次启动需加载模型(约 30-60 秒),请耐心等待"
|
||||
fi
|
||||
|
||||
# 3. photo_service (端口 32678)
|
||||
cd "$BASE_DIR/photo_service"
|
||||
nohup "$CONDA_BASE/envs/py310/bin/python" lora_train_service_1.py > "$BASE_DIR/logs/photo_service.log" 2>&1 &
|
||||
echo "photo_service 已启动 (PID: $!, 端口 32678)"
|
||||
echo "[3/3] 启动 photo_service (端口 32678)..."
|
||||
if check_port 32678 "photo_service"; then
|
||||
cd "$BASE_DIR/photo_service"
|
||||
nohup "$CONDA_BASE/envs/py310/bin/python" lora_train_service_1.py > "$BASE_DIR/logs/photo_service.log" 2>&1 &
|
||||
echo " photo_service 已启动 (PID: $!, 端口 32678)"
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo "所有服务已在后台启动,日志在 $BASE_DIR/logs/"
|
||||
echo "=== 所有服务已启动 ==="
|
||||
echo "日志目录: $BASE_DIR/logs/"
|
||||
echo ""
|
||||
echo "查看日志:"
|
||||
echo " tail -f $BASE_DIR/logs/hair_service.log # 换发型/换发色"
|
||||
echo " tail -f $BASE_DIR/logs/webui.log # SD WebUI"
|
||||
echo " tail -f $BASE_DIR/logs/photo_service.log # 训练服务"
|
||||
echo ""
|
||||
echo "停止服务: ./stop_all_services.sh"
|
||||
echo ""
|
||||
echo "等待 WebUI 就绪(检查端口 57860)..."
|
||||
for i in $(seq 1 60); do
|
||||
if curl -s http://127.0.0.1:57860/sdapi/v1/options >/dev/null 2>&1; then
|
||||
echo "✓ WebUI 已就绪"
|
||||
break
|
||||
fi
|
||||
sleep 2
|
||||
if [ $i -eq 60 ]; then
|
||||
echo "⚠ WebUI 60 秒内未就绪,请检查日志: tail -f $BASE_DIR/logs/webui.log"
|
||||
fi
|
||||
done
|
||||
|
||||
Reference in New Issue
Block a user