# 운영 서버 배포 및 관리 가이드 (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. **소스 클론**: ```bash git clone [저장소_URL] smartims cd smartims ``` 2. **안정 버전(Tag) 전환**: ```bash git fetch --all --tags # 현재 배포 가능한 최신 태그로 전환 (예: v0.2.5) git checkout v0.2.5 ``` 3. **환경 설정**: * `server/.env` 파일을 환경에 맞게 생성(DB 정보 등 입력). * `server/public_key.pem` 파일이 존재하는지 확인 (라이선스 검증용). 4. **패키지 설치 및 빌드**: ```bash # 전체 의존성 설치 및 프론트엔드 빌드 npm install npm run build # 백엔드 의존성 설치 cd server npm install ``` 5. **데이터베이스 초기화**: ```bash # 처음 설치 시에만 수행 node migrate_db.js ``` 6. **PM2 프로세스 등록**: ```bash pm2 start index.js --name "smartims-api" pm2 save pm2 startup ``` --- ## 3. 업데이트 관리 (Update Management) ### 3.1. 기존 수동 업데이트 방법 수동으로 업데이트가 필요할 경우 다음 명령어를 조합하여 실행합니다. ```bash 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