smart_ims/docs/PRODUCTION_DEPLOYMENT.md

3.5 KiB

운영 서버 배포 및 관리 가이드 (Production Deployment Guide)

본 문서는 SmartIMS 솔루션을 운영 서버에 최초 설치하는 절차와 Git Tag를 이용한 효율적인 버전 관리 및 업데이트 방역에 대해 설명합니다.


1. 개요 (Overview)

SmartIMS 배포는 Git Tag 기반 배포 방식을 권장합니다. 이는 검증된 특정 시점의 소스 코드(Release)만을 운영 서버에 반영하여 시스템 안정성을 확보하고, 향후 시스템 관리 메뉴를 통해 손쉽게 업데이트할 수 있는 기반을 제공합니다.


2. 최초 설치 절차 (Initial Installation)

운영 서버(Linux/Synology 등)에 접속한 상태에서 다음 과정을 순차적으로 진행합니다.

2.1. 사전 요구 사항

  • Git: 소스 코드 동기화용
  • Node.js: v20 이상 환경
  • MySQL/MariaDB: 서비스 데이터베이스
  • PM2: 서비스 프로세스 관리 (npm install -g pm2)

2.2. 설치 단계

  1. 소스 클론:
    git clone [저장소_URL] smartims
    cd smartims
    
  2. 안정 버전(Tag) 전환:
    git fetch --all --tags
    # 현재 배포 가능한 최신 태그로 전환 (예: v0.2.5)
    git checkout v0.2.5
    
  3. 환경 설정:
    • server/.env 파일을 환경에 맞게 생성(DB 정보 등 입력).
    • server/public_key.pem 파일이 존재하는지 확인 (라이선스 검증용).
  4. 패키지 설치 및 빌드:
    # 전체 의존성 설치 및 프론트엔드 빌드
    npm install
    npm run build
    
    # 백엔드 의존성 설치
    cd server
    npm install
    
  5. 데이터베이스 초기화:
    # 처음 설치 시에만 수행
    node migrate_db.js
    
  6. PM2 프로세스 등록:
    pm2 start index.js --name "smartims-api"
    pm2 save
    pm2 startup
    

3. 업데이트 관리 (Update Management)

3.1. 기존 수동 업데이트 방법

수동으로 업데이트가 필요할 경우 다음 명령어를 조합하여 실행합니다.

git fetch --tags
git checkout [새로운_태그]
npm install
npm run build
pm2 reload smartims-api

3.2. 시스템 관리 메뉴를 통한 업데이트 (검토 중)

시스템의 "버전 정보" 화면에서 신규 버전을 감지하고 업데이트하는 기능을 검토 중입니다.

  • 동작 원리:

    1. 서버가 원격 저장소의 최신 Tag 리스트를 정기적으로 또는 요청 시 확인합니다.
    2. package.json의 현재 버전과 원격의 최신 Tag를 비교하여 업데이트 버튼을 활성화합니다.
    3. 업데이트 실행 시 서버 내부적으로 git checkout -> npm install -> npm run build -> pm2 reload 과정을 자동화된 스크립트로 수행합니다.
  • 기대 효과:

    • 터미널(SSH) 접속 없이 관리자 화면에서 즉시 최신 기능 반영 가능.
    • 버전 불일치 문제 예방 및 운영 편의성 증대.

4. 주의 사항 (Precautions)

  1. 보안: tools/ 폴더 및 개인키(private_key.pem)는 운영 서버에 절대로 포함되지 않도록 주의하십시오.
  2. 권한: 업데이트 자동화 스크립트 실행 시 파일 시스템 쓰기 권한 및 Git 접근 권한이 서버 프로세스에 부여되어 있어야 합니다.
  3. 백업: 업데이트 전에 데이터베이스 백업을 반드시 수행할 것을 권장합니다.

마지막 업데이트: 2026-01-24