Files
change_hair_3090/start_all_services.sh
colomi 42622e8e1e 完善部署脚本兼容性并生成详细部署手册
- 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 加载全部通过
2026-07-11 19:11:36 +08:00

88 lines
2.8 KiB
Bash
Executable File
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/bin/bash
BASE_DIR="$(cd "$(dirname "$0")" && pwd)"
# 自动检测 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)
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)
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)
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 "=== 所有服务已启动 ==="
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