RAG 시스템을 Windows 환경에서 Rocky Linux 9.7 (Blue Onyx) 엔터프라이즈 서버로 마이그레이션하기 위한 상세 구축 절차, 환경 설정, 트러블슈팅 가이드입니다.
| 항목 | 현재 환경 | 대상 환경 |
|---|---|---|
| 운영체제 | Windows 10 | Rocky Linux 9.7 (Blue Onyx) |
| 서버 IP | localhost | 192.168.2.14 |
| GPU | (현재 GPU) | NVIDIA RTX PRO 4500 Blackwell |
| 네트워크 | - | 온라인 환경 |
| 데이터 마이그레이션 | - | ❌ 안 함 (Linux에서 새로 ingest) |
| 소스 전송 방식 | - | FileZilla FTP |
| 접속자 | URL | 설명 |
|---|---|---|
| 일반 사용자 | http://192.168.2.14:8080/index1.html |
사용자 전용 인터페이스 |
| 운영 관리자 | http://192.168.2.14:8080 |
관리자 전용 인터페이스 |
Rocky Linux 9.7 OS 설정 및 Docker/NVIDIA 드라이버 설치
# 시스템 업데이트
sudo dnf update -y
# CRB(CodeReady Builder) 활성화 (의존성 해결용)
sudo dnf config-manager --set-enabled crb
# EPEL 저장소 활성화
sudo dnf install -y epel-release
# 필수 유틸리티 설치
sudo dnf install -y git curl wget vim tar unzip net-tools
# 1. Docker Repository 추가
sudo dnf config-manager --add-repo https://download.docker.com/linux/rhel/docker-ce.repo
# 2. 패키지 설치
sudo dnf install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
# 3. 서비스 시작
sudo systemctl start docker
sudo systemctl enable docker
# 4. 권한 부여 (재로그인 필요)
sudo usermod -aG docker $USER
newgrp docker
# ──────────────────────────────────────────────
# 사전 준비: 커널 헤더 및 빌드 도구 설치
# ──────────────────────────────────────────────
sudo dnf install -y kernel-devel-$(uname -r) kernel-headers-$(uname -r)
sudo dnf install -y dkms gcc make elfutils-libelf-devel
# ──────────────────────────────────────────────
# Nouveau 오픈소스 드라이버 비활성화 (충돌 방지)
# ──────────────────────────────────────────────
echo "blacklist nouveau" | sudo tee /etc/modprobe.d/blacklist-nouveau.conf
echo "options nouveau modeset=0" | sudo tee -a /etc/modprobe.d/blacklist-nouveau.conf
sudo dracut --force
sudo grubby --update-kernel=ALL --args="rd.driver.blacklist=nouveau modprobe.blacklist=nouveau"
# ──────────────────────────────────────────────
# CUDA 저장소 추가 및 드라이버 설치
# ──────────────────────────────────────────────
sudo dnf config-manager --add-repo \
https://developer.download.nvidia.com/compute/cuda/repos/rhel9/x86_64/cuda-rhel9.repo
# ⚠️ 아래 명령은 Rocky 9.7에서 nvidia-smi 인식 실패가 빈번함 (사용 금지)
# sudo dnf module install -y nvidia-driver:latest-dkms
# ✅ 권장: cuda-drivers 패키지로 설치
sudo dnf install -y cuda-drivers
# 설치 후 반드시 재부팅
sudo reboot
재부팅 후 확인: nvidia-smi 명령으로 NVIDIA RTX PRO 4500 Blackwell GPU 정보와 드라이버 버전이 표시되어야 합니다.
만약 표시되지 않으면 아래 트러블슈팅 섹션을 참고하세요.
# GPU 인식 확인 (반드시 재부팅 후)
nvidia-smi
# 정상 출력 예시:
# +-----------------------------------------------------------------------------------------+
# | NVIDIA-SMI 570.xx.xx Driver Version: 570.xx.xx CUDA Version: 12.x |
# | GPU Name ... Memory-Usage |
# | 0 NVIDIA RTX PRO 4500 ... 0MiB / 24576MiB |
# +-----------------------------------------------------------------------------------------+
# 드라이버 모듈 로드 확인
lsmod | grep nvidia
# 커널 메시지에서 NVIDIA 관련 확인
dmesg | grep -i nvidia
# 1. nvidia-smi 정상 출력 확인 후 진행
nvidia-smi
# 2. NVIDIA Container Toolkit 저장소 추가
curl -s -L https://nvidia.github.io/libnvidia-container/stable/rpm/nvidia-container-toolkit.repo | \
sudo tee /etc/yum.repos.d/nvidia-container-toolkit.repo
# 3. Toolkit 설치
sudo dnf install -y nvidia-container-toolkit
# 4. Docker 런타임에 NVIDIA 등록
sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart docker
# 5. Docker에서 GPU 테스트
docker run --rm --gpus all nvidia/cuda:12.1.1-base-ubuntu22.04 nvidia-smi
Docker 컨테이너 내부에서도 nvidia-smi 출력이 나타나면 GPU 패스스루 설정 완료입니다.
# FastAPI(8000), Tomcat(8080) 포트 개방
sudo firewall-cmd --permanent --add-port=8000/tcp
sudo firewall-cmd --permanent --add-port=8080/tcp
sudo firewall-cmd --reload
FileZilla FTP를 이용한 파일 업로드
| 경로 | 설명 |
|---|---|
app/ |
Python 백엔드 소스 |
docker/ |
서브 서비스 Dockerfile |
frontend/ |
Web UI 소스 (html, js, css) |
assets/ |
어휘 데이터 등 |
docker-compose.yml |
오케스트레이션 설정 |
requirements.txt |
라이브러리 목록 |
.env |
환경 변수 파일 |
/home/[user]/rag
# 전송 후 권한 설정
cd ~/rag
chmod +x docker/tomcat/entrypoint.sh
chmod 600 .env
chmod -R 755 app/ frontend/ assets/
mkdir -p data/postgres data/models
# 온라인 모드 활성화 (모델 다운로드 허용)
EMBED_MODEL_ALLOW_DOWNLOADS=1
INGEST_ALLOW_DOWNLOADS=1
# NVIDIA RTX PRO 4500 Blackwell 최적화 (VRAM 24GB 활용)
OLLAMA_NUM_CTX=4096
INGEST_BATCH_SIZE=8
# 경로 초기화 (자동 다운로드)
EMBED_MODEL_LOCAL_PATH=
RERANKER_MODEL=
docker compose build
docker compose up -d
docker compose ps
docker compose logs -f
편리한 운영을 위한 쉘 스크립트 작성 (~/rag/scripts/)
#!/bin/bash
cd "$(dirname "$0")/.."
echo "Starting RAG System..."
docker compose up -d
docker compose ps
#!/bin/bash
cd "$(dirname "$0")/.."
SERVICE=${1:-""}
if [ -z "$SERVICE" ]; then
docker compose logs -f
else
docker compose logs -f $SERVICE
fi
새로운 Linux 환경에서는 기존 Windows 데이터를 가져오지 않고, 처음부터 다시 Ingest를 수행합니다.
TOPIK_VOCAB_ENABLED=1
설정 시 구동 후 자동 수행# 수동 Ingest 요청
curl -X POST http://192.168.2.14:8000/ingest/trigger
# 적재 데이터 수 확인
docker exec -it rag-postgres psql -U rag_user -d rag \
-c "SELECT source_type, COUNT(*) FROM embeddings GROUP BY source_type;"
드라이버 설치 후 nvidia-smi가 동작하지 않는 경우
lsmod | grep nouveau — 출력이 있으면 Nouveau가 아직 활성 상태입니다.echo "blacklist nouveau" | sudo tee /etc/modprobe.d/blacklist-nouveau.confsudo dracut --force && sudo reboot
dnf module install nvidia-driver:latest-dkms는 모듈 스트림 문제로 실패하는 경우가 많습니다.cuda-drivers로 재설치하세요:sudo dnf remove -y nvidia-driver* cuda-drivers*sudo dnf install -y cuda-drivers && sudo reboot
sudo dnf install -y kernel-devel-$(uname -r) kernel-headers-$(uname -r)sudo dkms autoinstall && sudo reboot
mokutil --sb-state — Secure Boot 상태 확인
docker run --gpus all ... 에러 발생 시
nvidia-smi가 정상이라면 NVIDIA Container Toolkit 설정을 확인하세요.sudo nvidia-ctk runtime configure --runtime=dockersudo systemctl restart dockerdocker run --rm --gpus all nvidia/cuda:12.1.1-base-ubuntu22.04 nvidia-smi/etc/docker/daemon.json에 nvidia 런타임이 등록되었는지 확인:cat /etc/docker/daemon.json — "nvidia" 런타임 항목이 있어야 합니다.
8080, 8000 포트가 이미 사용 중
sudo ss -tulpn | grep 8080 으로 점유 프로세스 확인 후 종료 (kill -9 [PID]).