#!/bin/sh # conda가 LD_LIBRARY_PATH에 lib를 넣은 상태에서 bash가 스크립트를 읽으면 # 시스템 bash가 conda의 libtinfo를 물어 경고가 난다. /bin/sh로 한 번 감싼 뒤 # LD_LIBRARY_PATH 없이 bash를 다시 실행한다. if [ -z "${STT_RUN_WITH_CLEAN_LDLIB:-}" ]; then export STT_RUN_WITH_CLEAN_LDLIB=1 exec env -u LD_LIBRARY_PATH /bin/bash "$0" "$@" fi set -euo pipefail SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" cd "$SCRIPT_DIR" if [[ -z "${CONDA_BASE:-}" || ! -f "${CONDA_BASE}/bin/activate" ]]; then CONDA_BASE="" for cand in "${HOME}/workspace/miniconda3" "${HOME}/miniconda3" "${HOME}/anaconda3" "/opt/anaconda3"; do if [[ -n "$cand" && -f "$cand/bin/activate" ]]; then CONDA_BASE="$cand" break fi done fi if [[ -z "${CONDA_BASE:-}" || ! -f "${CONDA_BASE}/bin/activate" ]]; then echo "ERROR: conda를 찾을 수 없습니다. 예: export CONDA_BASE=/path/to/miniconda3" >&2 exit 1 fi # 기본은 ncue (기존 동작). 다른 환경은 CONDA_ENV=stt 등으로 지정. CONDA_ENV="${CONDA_ENV:-ncue}" # shellcheck source=/dev/null source "${CONDA_BASE}/bin/activate" "${CONDA_ENV}" # 전역 LD_LIBRARY_PATH에 conda lib를 넣지 않음 (bash/libtinfo 경고 방지). # torch/ctranslate2 등은 uvicorn 자식에만 경로 전달. PORT="${PORT:-8025}" RELOAD="${RELOAD:-0}" if lsof -ti tcp:"${PORT}" >/dev/null 2>&1; then echo "Stopping existing server on port ${PORT}..." lsof -ti tcp:"${PORT}" | xargs -r kill -9 sleep 1 fi UVICORN_ARGS=("--host" "127.0.0.1" "--port" "${PORT}") if [[ "${RELOAD}" == "1" ]]; then UVICORN_ARGS+=("--reload") fi echo "Starting uvicorn on 127.0.0.1:${PORT} (reload=${RELOAD})" nohup env LD_LIBRARY_PATH="${CONDA_PREFIX}/lib${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}" \ uvicorn app.main:app "${UVICORN_ARGS[@]}" > server.log 2>&1 & echo "Server started (PID: $!). Logs: server.log"