프로젝트 실행 가이드
1. 프로젝트 개요
본 프로젝트는 마이크로서비스 아키텍처(MSA)를 기반으로 구축된 시스템입니다. 각 기능은 독립적인 서비스로 분리되어 Docker 컨테이너 환경에서 실행됩니다. 주요 서비스는 다음과 같습니다.
- API 서버 (Java): 시스템의 핵심 비즈니스 로직을 처리하는 백엔드 API 서버입니다.
- 프론트엔드 서버 (Node.js): 사용자가 상호작용하는 웹 UI를 제공하는 서버입니다.
- 데이터베이스 (MariaDB): 시스템의 데이터를 저장하고 관리하는 데이터베이스입니다.
- 메시지 큐 (RabbitMQ): 서비스 간 비동기 통신 및 데이터 교환을 위한 메시지 브로커입니다.
- WAL 서버 (Java): WAL(Write-Ahead Logging) 관련 처리를 담당하는 보조 서비스입니다.
- PHPMyAdmin: 웹을 통해 MariaDB를 관리하기 위한 도구입니다.
모든 서비스의 실행 및 관리는 최상위 디렉토리에 위치한 셸 스크립트(.sh)와 Docker Compose 설정 파일(.yml)을 통해 이루어집니다.
2. 사전 준비 사항
본 프로젝트를 실행하기 위해 다음의 환경과 소프트웨어가 필요합니다.
- 운영체제: Linux (테스트 환경 기준)
- 필수 소프트웨어:
docker: 컨테이너 실행 환경docker-compose: 다중 컨테이너 관리 도구
- 프로젝트 경로: 모든 실행 스크립트는 프로젝트의 루트 디렉토리가
/home/service_idc에 위치하는 것을 기준으로 작성되었습니다. 반드시 이 경로에 프로젝트를 위치시켜야 합니다.
3. 설치 절차
프로젝트 실행에 필요한 Docker 이미지를 빌드하고 초기 환경을 설정하는 과정입니다.
3.1. 프로젝트 위치
- 다운로드한 프로젝트 압축 파일을
/home/service_idc경로에 해제합니다.
3.2. 스크립트 실행 권한 부여
- 터미널을 열고 프로젝트 루트 디렉토리 (
/home/service_idc)로 이동한 후, 아래 명령어를 실행하여 모든 셸 스크립트에 실행 권한을 부여합니다.chmod +x ./*.sh
3.3. Docker 네트워크 생성
- 서비스 간 통신을 위한 Docker 네트워크를 생성합니다.
./0_create_network.sh
3.4. Docker 이미지 빌드
- 각 서비스의 Docker 이미지를 빌드합니다. 아래 스크립트들을 순서대로 실행합니다.
./1_1.mariadb_build_image.sh ./2_1.phpadmin_build_image.sh ./3_1.rabbit_build_image.sh ./4_1.wal_build_image.sh ./5_1.api_build_image.sh ./6_1.front_build_image.sh - 참고:
*_2.*_tar2image.sh스크립트는.tar아카이브 파일로부터 이미지를 로드하는 용도로, 이미지를 직접 빌드하는 위 과정을 따르는 것이 일반적입니다.
4. 실행 절차
설치가 완료된 후, 아래 절차에 따라 전체 시스템을 실행하거나 종료할 수 있습니다.
4.1. 전체 서비스 실행
- 아래 스크립트를 실행하면
all.onoff.yml파일을 참조하여 모든 서비스를 한 번에 시작합니다../alll.on.sh
4.2. 전체 서비스 종료
- 아래 스크립트를 실행하면 실행 중인 모든 서비스를 한 번에 종료합니다.
./alll.off.sh
4.3. 개별 서비스 실행/종료
- 특정 서비스만 개별적으로 실행하거나 종료해야 할 경우, 아래 예시와 같이 해당 서비스의
on/off스크립트를 사용합니다.# API 서버만 실행 ./5_3.api.on.sh # API 서버만 종료 ./5_3.api.off.sh
5. 환경 설정 가이드
프로젝트의 주요 설정 파일 및 변수에 대한 안내입니다.
5.1. IP 주소 설정
- 프론트엔드 -> API 서버 IP 주소 업데이트: 프론트엔드 서버가 API 서버를 호출할 때 사용하는 IP 주소를 설정합니다. 스크립트 실행 시 인자로 IP 주소를 전달해야 합니다.
# 예시: API 서버 IP가 192.168.0.10일 경우 ./0_update-api-ip-on-front.sh 192.168.0.10 - API 서버 CORS 설정: API 서버의 CORS(Cross-Origin Resource Sharing) 정책에 프론트엔드 서버의 IP를 허용하도록 설정합니다.
# 예시: 프론트엔드 서버 IP가 192.168.0.20일 경우 ./0_update-cors-ip-on-api.sh 192.168.0.20
5.2. 프론트엔드 환경 변수
- 프론트엔드 서버의 상세 설정은 아래 파일들에서 관리됩니다.
make/front/build/.env: 환경 변수 파일make/front/build/config/api.config.js: API 관련 설정
5.3. 데이터베이스 초기화
- MariaDB 컨테이너가 처음 생성될 때,
FILE-DATA/mariadb/init/디렉토리 안의.sql파일들(init.sql,tables.sql등)이 자동으로 실행되어 데이터베이스 스키마와 초기 데이터를 생성합니다.
5.4. SSL/TLS 인증서
- 시스템에서 사용하는 SSL/TLS 인증서 파일들은
FILE-DATA/key/디렉토리에 위치합니다.
6. 트러블슈팅 & 팁
6.1. 로그 확인
- 서비스 실행 중 문제가 발생할 경우, 가장 먼저 로그 파일을 확인해야 합니다. 각 서비스의 로그는 아래 경로에 저장됩니다.
- API 서버 로그:
FILE-DATA/logs/api/ - RabbitMQ 로그:
FILE-DATA/logs/rabbit/ - WAL 서버 로그:
FILE-DATA/logs/wal/
- API 서버 로그:
6.2. 스크립트가 실행되지 않을 경우
.sh파일이 실행되지 않으면 실행 권한이 제대로 부여되었는지 확인합니다. (3.2. 절 참고)- 모든 스크립트는 프로젝트가
/home/service_idc에 있다고 가정하므로, 경로가 올바른지 다시 한번 확인합니다.
6.3. 데이터 백업
- 데이터베이스 데이터, 로그, 인증서 등 영속적으로 보관해야 하는 모든 데이터는
FILE-DATA디렉토리 하위에 저장됩니다. 시스템을 백업해야 할 경우 이 디렉토리를 백업하는 것을 권장합니다.
73