94 lines
3.2 KiB
Bash
Executable File
94 lines
3.2 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# 워커 자동 시작 스크립트
|
|
echo "=== 이미지 처리 워커 시작 ==="
|
|
|
|
# 기본 설정 (원격 실행용)
|
|
# 메인서버 IP를 실제 IP로 변경하세요
|
|
MAIN_SERVER_IP=${MAIN_SERVER_IP:-"localhost"} # 원격지에서는 메인서버의 실제 IP 설정 필요
|
|
REDIS_URL=${REDIS_URL:-"redis://${MAIN_SERVER_IP}:6379/0"}
|
|
MAIN_SERVER=${MAIN_SERVER:-"$MAIN_SERVER_IP"}
|
|
CONCURRENCY=${CONCURRENCY:-"2"}
|
|
WORKER_MODE=${WORKER_MODE:-"local"}
|
|
WORKER_NAME=${WORKER_NAME:-"worker-$(hostname)-$$"}
|
|
|
|
echo "메인서버 IP: $MAIN_SERVER_IP"
|
|
echo "Redis URL: $REDIS_URL"
|
|
echo "메인 서버: $MAIN_SERVER"
|
|
echo "동시 처리 수: $CONCURRENCY"
|
|
echo "실행 모드: $WORKER_MODE"
|
|
echo "워커 이름: $WORKER_NAME"
|
|
|
|
# 원격 실행인지 확인
|
|
if [ "$MAIN_SERVER_IP" = "localhost" ]; then
|
|
echo ""
|
|
echo "⚠️ 경고: 원격지에서 실행하는 경우 메인서버 IP를 설정하세요!"
|
|
echo "사용법: MAIN_SERVER_IP=메인서버IP ./start_worker.sh"
|
|
echo "예시: MAIN_SERVER_IP=192.168.1.100 ./start_worker.sh"
|
|
echo ""
|
|
fi
|
|
|
|
case $WORKER_MODE in
|
|
"docker")
|
|
echo "Docker 모드로 워커 시작..."
|
|
docker-compose down
|
|
docker-compose build
|
|
docker-compose up -d
|
|
echo "워커 컨테이너 시작 완료!"
|
|
docker-compose logs -f worker
|
|
;;
|
|
|
|
"local")
|
|
echo "로컬 모드로 워커 시작..."
|
|
# 가상환경 활성화 확인
|
|
if [[ "$VIRTUAL_ENV" != "" ]]; then
|
|
echo "가상환경 활성화됨: $VIRTUAL_ENV"
|
|
else
|
|
echo "가상환경을 활성화하세요: source bin/activate"
|
|
if [ -f "bin/activate" ]; then
|
|
echo "자동으로 가상환경 활성화 중..."
|
|
source bin/activate
|
|
else
|
|
echo "❌ 가상환경을 찾을 수 없습니다. 먼저 설정하세요."
|
|
exit 1
|
|
fi
|
|
fi
|
|
|
|
python worker.py --concurrency $CONCURRENCY --redis-url $REDIS_URL --main-server $MAIN_SERVER --worker-name $WORKER_NAME
|
|
;;
|
|
|
|
"remote")
|
|
echo "원격 모드로 워커 시작..."
|
|
# 원격 모드는 local과 동일하지만 기본 설정이 원격용
|
|
if [[ "$VIRTUAL_ENV" != "" ]]; then
|
|
echo "가상환경 활성화됨: $VIRTUAL_ENV"
|
|
else
|
|
if [ -f "bin/activate" ]; then
|
|
echo "자동으로 가상환경 활성화 중..."
|
|
source bin/activate
|
|
else
|
|
echo "❌ 가상환경을 찾을 수 없습니다."
|
|
exit 1
|
|
fi
|
|
fi
|
|
|
|
python worker.py --concurrency $CONCURRENCY --redis-url $REDIS_URL --main-server $MAIN_SERVER --worker-name $WORKER_NAME
|
|
;;
|
|
|
|
*)
|
|
echo "사용법: WORKER_MODE=docker|local|remote ./start_worker.sh"
|
|
echo ""
|
|
echo "환경 변수:"
|
|
echo " MAIN_SERVER_IP: 메인서버 IP 주소 (필수 - 원격 실행시)"
|
|
echo " REDIS_URL: Redis 서버 URL"
|
|
echo " MAIN_SERVER: 메인 서버 주소"
|
|
echo " CONCURRENCY: 동시 처리 수 (기본값: 2)"
|
|
echo " WORKER_NAME: 워커 식별명"
|
|
echo ""
|
|
echo "원격 실행 예시:"
|
|
echo " MAIN_SERVER_IP=192.168.1.100 WORKER_MODE=remote ./start_worker.sh"
|
|
echo " MAIN_SERVER_IP=10.0.0.50 CONCURRENCY=4 ./start_worker.sh"
|
|
echo ""
|
|
exit 1
|
|
;;
|
|
esac |