docs(itms): 인수인계 문서 정리 — DB연결/설치런북/핸드오프 + 고객데이터 gitignore
- HANDOFF_STATUS.md: 현황·다음단계(완전 ur_itms_db 덤프 적재가 근본해결) - DB_CONNECTIONS.md: 도메인별 DB 프로파일 매핑(로컬/개발/운영/구버전) - ITMS_INSTALL_RUNBOOK.md: 전체 설치 런북(OpenSearch/배치/프로시저 포함) - .gitignore: 고객 실데이터(mms_data/MSS ddl)·설치노트·csv 커밋 차단(보안) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
parent
cc6542c7ed
commit
4fc2a0bf8d
7
.gitignore
vendored
7
.gitignore
vendored
@ -39,3 +39,10 @@ Thumbs.db
|
|||||||
|
|
||||||
# MCP 설정(API 키 포함 — 커밋 금지)
|
# MCP 설정(API 키 포함 — 커밋 금지)
|
||||||
.mcp.json
|
.mcp.json
|
||||||
|
|
||||||
|
# 고객 실데이터·DDL·설치노트·스크린샷 — 보안상 Gitea 커밋 금지(별도 안전경로 전송)
|
||||||
|
docs/mms_data/
|
||||||
|
docs/MSS ddl/
|
||||||
|
docs/설치관련/
|
||||||
|
docs/itsm_feature.txt
|
||||||
|
*.csv
|
||||||
|
|||||||
97
docs/DB_CONNECTIONS.md
Normal file
97
docs/DB_CONNECTIONS.md
Normal file
@ -0,0 +1,97 @@
|
|||||||
|
# ITMS DB 연결 정보 (환경·도메인별)
|
||||||
|
|
||||||
|
> 최종 갱신: 2026-07-19 | 분류: **대외비** — 무단 배포 금지
|
||||||
|
> **보안 불변**: 이 문서에는 **비밀번호·AES 암호문·NCP/카카오 키·Gmail 비번을 기재하지 않는다.** 실값은 서버 로컬(`/opt/itms/secrets/`, `/opt/itms/config/`) 또는 기관 프로파일 yml(AES-256 암호문)에만 존재. 계정/DB명·호스트·URL 템플릿·프로파일 매핑만 기록.
|
||||||
|
> **적용 방식(확정)**: **서버별 프로파일 고정** — 각 서버가 자기 프로파일을 `SPRING_PROFILES_ACTIVE`로 활성화. 도메인 = 서버 = 프로파일 = DB 가 1:1.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 1. 도메인 ↔ 서버 ↔ 프로파일 ↔ DB 매핑 (핵심)
|
||||||
|
|
||||||
|
| 환경 | 접속 도메인 | 서버 | 활성 프로파일 | Primary DB | 상태 |
|
||||||
|
|------|------------|------|--------------|-----------|------|
|
||||||
|
| **로컬** | localhost | 개발자 PC | `local` | 고객 내부망 MariaDB(192.168.8.131) | 소스 기본값 |
|
||||||
|
| **개발** | itms.zioinfo.co.kr | 101.79.17.164 | `zio-dev` (외부 config) | dev MariaDB `ur_itms_db`@localhost | **LIVE (로그인·업무 실동작)** |
|
||||||
|
| **운영** | itms.wise.ai.kr | 211.37.173.197 | `zio-prod` (외부 config) | prod DB(프로비저닝 대기) | front-only(RAM 게이트) |
|
||||||
|
| **기관(16종)** | 기관별 도메인 | 기관 서버 | `keiti_prod`·`kic_rel`·`nowon`·… | 기관 망 MariaDB/Oracle | 고객 배포 환경 |
|
||||||
|
|
||||||
|
- 프로파일 활성: 서버의 `/etc/itms/itms-<모듈>.env` 또는 systemd `SPRING_PROFILES_ACTIVE=<프로파일>`.
|
||||||
|
- **16기관 원본 yml 불변** 원칙: dev/prod 전용값은 원본 프로파일을 고치지 않고 **외부 config**(`-Dspring.config.additional-location=/opt/itms/config/application-<프로파일>.yml`)로 오버레이.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 2. 데이터소스 상세 (논리 DB별)
|
||||||
|
|
||||||
|
각 모듈이 참조하는 논리 DB. 계정/비번 실값은 **AES-256 암호문(프로파일 내)** 또는 서버 시크릿 — 아래는 논리명·엔진·URL 템플릿만.
|
||||||
|
|
||||||
|
| 논리 DB | 엔진 | 용도 | 사용 모듈 | URL 템플릿(호스트·포트·DB) |
|
||||||
|
|---------|------|------|----------|---------------------------|
|
||||||
|
| `primarydb` | MariaDB | ITMS 본체(업무·인증·메뉴) `ur_itms_db` | api·batch | `jdbc:mariadb://<HOST>:3306/ur_itms_db?characterEncoding=UTF-8&serverTimezone=Asia/Seoul&rewriteBatchedStatements=true` |
|
||||||
|
| `kicinsadb` | Oracle XE | KIC 인사 연동 | batch | `jdbc:oracle:thin:@<HOST>:1521:XE` |
|
||||||
|
| `ncmsdb` | MySQL | NCMS(kccfnova) 데이터 변환 | datatrans | `jdbc:mysql://<HOST>:3307/kccfnova?characterEncoding=UTF-8&serverTimezone=Asia/Seoul` |
|
||||||
|
| `iamsdb` | MySQL | IAMS(uac_cltr_db) 수집 연동 | datatrans | `jdbc:mysql://<HOST>:3307/uac_cltr_db?characterEncoding=UTF-8&serverTimezone=Asia/Seoul` |
|
||||||
|
| (검색) | OpenSearch | 검색 색인(배치 중개) | api·batch | `http://<HOST>:48381` (연동 서버) |
|
||||||
|
|
||||||
|
- 공통 드라이버 래퍼: `net.sf.log4jdbc.sql.jdbcapi.DriverSpy`(log4jdbc, SQL 로깅). 실드라이버: mariadb-java-client·ojdbc·mysql-connector.
|
||||||
|
- Hikari 풀: maximumPoolSize 35 / minimumIdle 2 (개발서버는 RAM 절감을 위해 축소 오버레이 가능).
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 3. 환경별 접속 (호스트)
|
||||||
|
|
||||||
|
### 3-1. 로컬 (`local` 프로파일) — 고객 내부망 지향
|
||||||
|
- primarydb: `192.168.8.131:3306/ur_itms_db` (대체: 192.168.8.138)
|
||||||
|
- kicinsadb(Oracle): `192.168.8.132:1521:XE`
|
||||||
|
- ncmsdb/iamsdb(MySQL): `192.168.8.138:3307`
|
||||||
|
- 검색: `192.168.8.138:48381`
|
||||||
|
- ※ 개발자 PC에서 고객 내부망 VPN/터널 필요. 계정/비번 = 프로파일 AES 암호문(복호는 `UrpSysKeyMng` keystore).
|
||||||
|
|
||||||
|
### 3-2. 개발 (`zio-dev`) — GUARDiA 인프라
|
||||||
|
- 서버: 101.79.17.164 / 도메인: itms.zioinfo.co.kr
|
||||||
|
- primarydb: `127.0.0.1:3306/ur_itms_db` (MariaDB 10.11, 서버 로컬)
|
||||||
|
- 계정: `itms_zio` (비번 = 서버 시크릿, 문서 미기재)
|
||||||
|
- 실 스키마: CM_*(고객 dump 49테이블) + 포털계층(COMVNUSERMASTER·TB_*·oauth 역설계)
|
||||||
|
- Oracle/NCMS/IAMS: 미연결(batch/datatrans 부분 보류) · 검색(OpenSearch): 디스크 게이트로 보류
|
||||||
|
- 외부 config: `/opt/itms/config/application-zio-dev.yml` (원본 16기관 yml 불변)
|
||||||
|
|
||||||
|
### 3-3. 운영 (`zio-prod`) — wise.ai.kr
|
||||||
|
- 서버: 211.37.173.197 / 도메인: itms.wise.ai.kr
|
||||||
|
- 현재: **front-only**(DB 미기동, RAM ~500MB 게이트). primarydb 프로비저닝은 RAM 증설 후.
|
||||||
|
- 외부 config: `/opt/itms/config/application-zio-prod.yml` (프로비저닝 시 작성)
|
||||||
|
|
||||||
|
### 3-4. 구버전(레거시 원본 고객 시스템)
|
||||||
|
> ITMS 통합 전 원본 시스템. 실 스키마·데이터 출처(2026-07-19 소유자 제공 덤프).
|
||||||
|
|
||||||
|
| 항목 | 값 |
|
||||||
|
|------|-----|
|
||||||
|
| DB명 | `mmsdb` (MariaDB) — 업무 스키마 CM_*(IN_/VC_/TX_/DT_ 접두), MyISAM/utf8mb3 |
|
||||||
|
| 계정 | root (비번 = 서버 시크릿, 문서 미기재) |
|
||||||
|
| 인사 연동 | Oracle XE (KIC 인사) |
|
||||||
|
| 변환 대상 | NCMS `kccfnova` · IAMS `uac_cltr_db` (MySQL 3307) |
|
||||||
|
| 프로시저/함수 | `PROC_APPROVAL`·`PROC_REJECT`·`PROC_REQ_APPROVAL`·`FUNC_HOLIDAYS` (+트리거·5번째 프로시저는 덤프 미포함) |
|
||||||
|
| 구 점검 시스템 | `user_info`·`equipment_info` 등(MSS ddl/schema.sql) — 현행 api 미참조 |
|
||||||
|
| 덤프 위치 | `C:\urITSM\wise-ai-platform\urITSM\{mms_data, MSS ddl}` |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 4. 프로파일 활성 절차 (서버별 고정)
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 개발서버(101.79.17.164)
|
||||||
|
/etc/itms/itms-api.env: SPRING_PROFILES_ACTIVE=zio-dev
|
||||||
|
# 운영서버(211.37.173.197)
|
||||||
|
/etc/itms/itms-front.env: SPRING_PROFILES_ACTIVE=zio-prod
|
||||||
|
# 기동 시 외부 config 로드
|
||||||
|
-Dspring.config.additional-location=/opt/itms/config/application-${PROFILE}.yml
|
||||||
|
```
|
||||||
|
- 각 서버는 **자기 프로파일만** 활성 → 도메인 접속 시 해당 서버의 DB로 자동 연결(도메인=서버=프로파일=DB 1:1).
|
||||||
|
- 원본 16기관 프로파일 파일은 수정하지 않음(classpath 상주, 기관 배포용).
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 5. 보안 주의 (필독)
|
||||||
|
|
||||||
|
- **이 문서·로그·커밋에 비밀번호/AES 암호문/NCP·카카오 키/Gmail 비번 기재 금지.** 실값은 서버 시크릿·AES 암호문에만.
|
||||||
|
- ★**기존 노출 경고(로테이션 권고)**: `batch`/`datatrans`의 `application-local.yml` 에 카카오 알림톡 NCP `accessKey`/`secretKey`·Gmail 비번이 **평문 커밋** 상태. 키 교체(rotation) + 프로파일 암호문화 권고.
|
||||||
|
- 내부 IP(192.168.8.x)는 기존 프로파일에 이미 커밋된 값이라 본 문서에 표기(신규 노출 아님). 외부 배포 금지.
|
||||||
|
- env·keystore 권한 600, 소유자 서비스계정(itms).
|
||||||
52
docs/HANDOFF_STATUS.md
Normal file
52
docs/HANDOFF_STATUS.md
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
# ITMS 작업 인수인계 (핸드오프)
|
||||||
|
|
||||||
|
> 최종 갱신: 2026-07-20 | 다른 PC에서 이어서 작업하기 위한 현황·다음단계 정리
|
||||||
|
> 관련 문서: `CICD_PIPELINE.md`(배포) · `DB_CONNECTIONS.md`(DB 매핑) · `ITMS_INSTALL_RUNBOOK.md`(설치) · `SR_BACKLOG_20260708.md`/`SR_CHANGES_20260719.md`(고객 SR)
|
||||||
|
|
||||||
|
## 1. 지금까지 완료 (LIVE)
|
||||||
|
|
||||||
|
- **CI/CD 파이프라인**: `git push` → 개발(itms.zioinfo.co.kr) 빌드·배포 → 헬스게이트 → 운영(itms.wise.ai.kr) 자동 승격. push 자동연쇄 검증 완료.
|
||||||
|
- **개발서버(itms.zioinfo.co.kr) 실동작**: 로그인 → 메인 → 서비스데스크/자산/보고서 조회·검색 → **SR 신청 등록**(DB insert) → **결재 승인/반려**(프로시저) → **검색**(OpenSearch 9201 색인). 실 고객 데이터.
|
||||||
|
- **운영서버(itms.wise.ai.kr)**: front-only(데모). 로그인 등 풀스택은 RAM 게이트.
|
||||||
|
- **고객 SR 40건**: 23건 완료·배포(로그인 잠금·서비스데스크 권한/검증·용어통일·브랜딩 F12·결재). 조치결과 엑셀+diff 문서 산출.
|
||||||
|
- **모바일 앱**: Expo 12화면 + APK v1.0.0 게시(/mobile-app QR, dev·prod).
|
||||||
|
- **도메인별 프로파일 고정**: zio-dev(개발)·zio-prod(운영), 16기관 yml 불변.
|
||||||
|
|
||||||
|
## 2. ★ 최우선 다음 단계 — 완전한 ur_itms_db 덤프 적재 (근본 해결)
|
||||||
|
|
||||||
|
**핵심 발견**: 받은 덤프(`mms_data`/`MSS ddl`)에는 **`cm_*` 업무 데이터만** 있고, 배포된 ITMS(urpsys/eGov)가 메뉴·화면을 읽는 **포털계층 테이블(TB_MENU_INFO·TB_PGM_LIST·TB_PORTLET·COMVNUSERMASTER·권한/사용자)이 0개**. → 그 테이블들을 역설계 빈 껍데기로 때워왔고, 그래서 **메뉴 URL 없음·서브메뉴 안 뜸·일부 페이지 500** 이 반복됨.
|
||||||
|
|
||||||
|
**소유자 확인(2026-07-20): 완전한 ur_itms_db 덤프 제공 가능.** 이걸 받으면:
|
||||||
|
```
|
||||||
|
# 원본 서버에서 (프로시저·트리거 포함)
|
||||||
|
mysqldump -u root -p --routines --triggers --single-transaction --default-character-set=utf8mb4 ur_itms_db > ur_itms_db_full.sql
|
||||||
|
```
|
||||||
|
→ 개발서버 **격리 DB**(ur_itms_db)에 적재 → zio-dev 연결 → **역설계 포털 테이블 전량 대체** → 메뉴·URL·서브메뉴·페이지가 **원본대로** 동작. 지금까지의 역설계 땜질(09_menu.sql 등)은 이 덤프가 대체.
|
||||||
|
|
||||||
|
**대안(방법 B)**: 원본 DB 직접 연결 — 단 ①개발서버(101.79.17.164)에서 네트워크 도달 가능해야 하고(내부망 192.168.8.x면 VPN/터널 필요) ②테스트 쓰기가 원본 운영 데이터를 오염시키므로 복제본/읽기전용 권장. → **격리 덤프 적재(방법 A)가 안전.**
|
||||||
|
|
||||||
|
**진행 중이던 역설계(메뉴 페이지 드리프트)는 이 덤프 도착 시 중단·대체** — 헛수고 방지를 위해 보류 상태.
|
||||||
|
|
||||||
|
## 3. 잔여 (외부자원 게이트 — 소프트웨어는 완료)
|
||||||
|
|
||||||
|
| 항목 | 게이트 | 비고 |
|
||||||
|
|------|--------|------|
|
||||||
|
| 관리자 백오피스 페이지 500 | (2)의 완전 덤프로 대부분 해소 예상 | 포털계층 테이블 부재가 원인 |
|
||||||
|
| 운영서버 풀스택 로그인 | RAM 증설/서버 분리 | prod 가용 ~466MB, WISE/CAMP 상용 보호 |
|
||||||
|
| batch JVM 상시기동 | Oracle 인사망+NCP키+Quartz 잡설정 | 검색 색인은 어댑터로 대체 완성 |
|
||||||
|
| URP 검색 마이크로서비스 정품 | 운영 배포본 | 현재 dev 어댑터가 대체(계약 동일) |
|
||||||
|
| Stitch UI 시안(#6) | 새 세션에서 MCP 로드 | `.mcp.json` 등록됨 |
|
||||||
|
|
||||||
|
## 4. 다른 PC에서 이어가기
|
||||||
|
|
||||||
|
1. **clone**: `git clone <Gitea>/ythong/itms` (또는 pull). 소스·docs 최신(이 커밋 포함).
|
||||||
|
2. **고객 데이터는 Gitea에 없음**(보안). `mms_data`·`MSS ddl`·완전 덤프는 **별도 안전 경로**(USB/직접전송)로 가져올 것 — 커밋 금지.
|
||||||
|
3. **Stitch MCP**: `workspace/itms/.mcp.json`(gitignore됨, 로컬 전용) 재생성 필요 시 키 재등록.
|
||||||
|
4. **서버 접근**: 개발 101.79.17.164 / 운영 211.37.173.197(ssh :9271). 자격증명은 서버 시크릿(`/opt/itms/secrets/`)·로컬 관리, 문서 미기재.
|
||||||
|
5. **작업 재개 지점**: §2 완전 덤프 적재부터. 덤프 확보 → 개발서버 ur_itms_db에 적재 → zio-dev 검증(로그인→메뉴→서브메뉴→페이지 전수) → 회귀 확인.
|
||||||
|
|
||||||
|
## 5. 서버·배포 요약
|
||||||
|
|
||||||
|
- 개발: 101.79.17.164 — front:11020·auth:11000·api:11010, MariaDB(ur_itms_db)·OpenSearch(9201)·검색어댑터(48381). systemd `itms-*`.
|
||||||
|
- 운영: 211.37.173.197 — itms-front(zio-prod). nginx Host 기반 vhost.
|
||||||
|
- 배포: Gitea webhook → deploy_server itms 블록(dev 빌드→헬스→prod 승격). deploy_server 수정 시 서버 `/opt/zioinfo/` 사본 반영+재시작 필수.
|
||||||
104
docs/ITMS_INSTALL_RUNBOOK.md
Normal file
104
docs/ITMS_INSTALL_RUNBOOK.md
Normal file
@ -0,0 +1,104 @@
|
|||||||
|
# ITMS 설치 실전 런북 (전체 스택)
|
||||||
|
|
||||||
|
> 최종 갱신: 2026-07-19 | 정본 = 이 문서 + `install/`(스크립트) + `docs/ITMS_서버설치가이드.docx`(기본 4-WAR 절차)
|
||||||
|
> 이 런북은 설치가이드(4-WAR)에 **실전 운영 절차**(OpenSearch 검색·Docker·배치/Quartz·프로시저/트리거·업로드 경로·방화벽·통합 테스트)를 합친 것이다. 소유자 제공 설치 노트(2026-07-19) 반영.
|
||||||
|
> 보안: 접속정보·비밀번호·keystore 비번·연동 키를 로그/문서/커밋에 노출 금지. env·keystore 권한 600, 소유자 서비스계정.
|
||||||
|
|
||||||
|
## 0. 시스템 구성 (실전 파악)
|
||||||
|
|
||||||
|
ITMS 는 4-WAR(auth:11000·api:11010·front:11020·batch:11030) + datatrans 데몬 + **검색엔진(OpenSearch)** 으로 구성된다.
|
||||||
|
- **검색 경유**: 목록/조회 검색은 OpenSearch 색인을 탄다. **배치(Quartz)가 DB ↔ OpenSearch 색인을 중개**한다("검색이 되면 배치도 도는 것" = 배치가 색인을 갱신하므로 검색 성공 = 배치 정상). api ↔ 배치 ↔ 검색 간 데이터가 오간다.
|
||||||
|
- **DB 프로시저/함수/트리거**: 결재·업무 로직 일부가 DB 프로시저/함수/트리거로 구현(`PROC_APPROVAL`·`PROC_REJECT`·`PROC_REQ_APPROVAL`·`FUNC_HOLIDAYS` 등 5개 + 트리거). 스키마 적재만으로 부족 — 반드시 등록.
|
||||||
|
- **Docker**: OpenSearch(및 부속)를 Docker 로 기동. 디스크 부족 시 Docker 루트 디렉터리 이전 필요.
|
||||||
|
|
||||||
|
## 1. 사전 요구 (Feasibility Gate — 설치 전 실측)
|
||||||
|
|
||||||
|
| 항목 | 요구 | 미충족 시 |
|
||||||
|
|------|------|----------|
|
||||||
|
| OS/systemd | Linux | — |
|
||||||
|
| JDK17 | 빌드·런타임 공통 (Boot 2.6.2 Java21 미지원) | apt `openjdk-17-jdk` / dnf `java-17-openjdk-devel` |
|
||||||
|
| 메모리 | **4GB+ 권장** (4 WAR + 데몬 + **OpenSearch 1~2GB**) | ★게이트: 부족 시 모듈 축소 기동 or 서버 분리 |
|
||||||
|
| 디스크 | 빌드·아티팩트·로그·**OpenSearch 인덱스·Docker 이미지** 여유 | ★Docker 루트 이전(§4) |
|
||||||
|
| MariaDB | `ur_itms_db` (api/batch 필수) | 설치·적재(§3) |
|
||||||
|
| Oracle XE | batch 인사 연동 | 미도달 시 batch 부분 보류 |
|
||||||
|
| **OpenSearch** | 검색 백엔드(Docker) | 미기동 시 검색·배치 검증 불가 |
|
||||||
|
| JDBC 드라이버 | **Oracle ojdbc 등은 Maven 미제공 → 설치 파일로 동봉·수동 배치** | 빌드/기동 실패 |
|
||||||
|
| 네트워크 | 11000/11010/11020/11030 + OpenSearch 포트 개방 | §9 방화벽 |
|
||||||
|
| 시크릿 | 기관 `application-<기관>.yml` · keystore(UrpSystem/UrpSysKeyMng) | 사전 확보 |
|
||||||
|
|
||||||
|
## 2. 패키지·계정·디렉터리·systemd
|
||||||
|
|
||||||
|
```bash
|
||||||
|
tar xzf itms-install-*.tar.gz && cd itms-install
|
||||||
|
sudo bash preflight.sh # JDK17·DB 도달·디스크 점검
|
||||||
|
sudo dnf install -y java-17-openjdk-devel # (미설치 시)
|
||||||
|
sudo bash install.sh # itms 계정·/opt/itms·/etc/itms·systemd 유닛(멱등). start 안 함
|
||||||
|
```
|
||||||
|
|
||||||
|
## 3. DB 준비 (MariaDB `ur_itms_db`)
|
||||||
|
|
||||||
|
1. **스키마 적재**: 실제 고객 스키마 `mmsdb` CM_* DDL(`note1.txt`) → `ur_itms_db`. charset utf8(mb3/mb4) 한글 정합.
|
||||||
|
2. **데이터 적재**: `mms_data/*.csv` (테이블명_날짜.csv) → 대응 테이블(LOAD DATA/mysqlimport, 인코딩·NULL 확인).
|
||||||
|
3. **프로시저/함수 5개** (DBeaver 또는 mysql): `note3.txt` 의 `PROC_APPROVAL`·`PROC_REJECT`·`PROC_REQ_APPROVAL`·`FUNC_HOLIDAYS`(+잔여 1) — **함수명/DELIMITER 정확히**.
|
||||||
|
4. **트리거 생성**: **테이블명·함수명 정확히 매칭**하여 트리거 등록(DBeaver: 테이블 좌클릭 → 트리거 생성). note/DDL의 트리거 정의 기준.
|
||||||
|
5. **업로드 파일 경로**: 첨부/업로드 저장 경로를 DB 설정에 반영(파일 저장 루트를 서버 실제 경로로).
|
||||||
|
6. 인덱스(`note2.txt`/`index.sql`) 적용.
|
||||||
|
7. 로그인 계층(포털: COMVNUSERMASTER·TB_*·oauth)은 실 dump에 없으면 역설계본 유지(로그인 동작 보존). CM_*가 실 dump 권위.
|
||||||
|
|
||||||
|
## 4. Docker + OpenSearch (검색)
|
||||||
|
|
||||||
|
1. Docker 설치·기동. **디스크 부족 시 Docker 루트 디렉터리 이전**:
|
||||||
|
- `/etc/docker/daemon.json` 에 `{"data-root": "/data/docker"}` → `systemctl restart docker` (기존 이미지 이전 or 재pull).
|
||||||
|
2. OpenSearch 컨테이너 기동(메모리 `-Xms/-Xmx` 서버 여유 내로 제한, 예 512m~1g). 보안플러그인/포트 설정.
|
||||||
|
3. **Dev Tools 테스트**: OpenSearch Dashboards Dev Tools 진입 → 쿼리 입력 후 **Ctrl+Enter** 로 실행, 인덱스/검색 응답 확인.
|
||||||
|
|
||||||
|
## 5. 아티팩트 빌드 (온라인 필요)
|
||||||
|
|
||||||
|
- **컴파일 시 온라인**(gradle 배포판·의존성 다운로드 — 콜드 빌드 1회 워밍). CI(방법 B) 또는 `deploy/build.sh`(JDK17).
|
||||||
|
- **JDBC 드라이버**: Oracle ojdbc 등 Maven 미제공 드라이버는 **설치 파일로 동봉**해 빌드 classpath/lib 에 배치.
|
||||||
|
- 산출물 `*/build/libs/itms-<모듈>.war` → `/opt/itms/artifacts/current/`.
|
||||||
|
|
||||||
|
## 6. 설정 파일 수정 (폴더·IP·Yaml·Quartz)
|
||||||
|
|
||||||
|
1. **폴더·IP 정합**: 각 `application-<기관>.yml` 및 설정의 경로/호스트를 **대상 서버 폴더·IP 로 정확히 수정**.
|
||||||
|
2. **Quartz property**: 배치 스케줄러 property(잡·데이터소스·색인 대상) 값 변경.
|
||||||
|
3. **설치 정보 파일** 수정(설치 메타/버전/경로).
|
||||||
|
4. **프로파일 파일명 쉘 반영**: §6-1에서 수정한 프로파일 파일명을 기동 쉘/env `SPRING_PROFILES_ACTIVE` 에 동일하게 반영(파일명↔쉘 불일치 시 미기동).
|
||||||
|
|
||||||
|
## 7. 기동 (순서 준수)
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# /etc/itms/itms-<모듈>.env: SPRING_PROFILES_ACTIVE=<기관>, JAVA_OPTS=-Xms256m -Xmx512m
|
||||||
|
sudo systemctl daemon-reload
|
||||||
|
# 순서대로 올리고 각 단계 프로세스 확인
|
||||||
|
for m in auth api front batch datatrans; do sudo systemctl enable --now itms-$m; sleep 3; systemctl is-active itms-$m; done
|
||||||
|
```
|
||||||
|
|
||||||
|
## 8. 방화벽 (Linux)
|
||||||
|
|
||||||
|
- 내부 포트 11000/11010/11020/11030 + OpenSearch 포트 개방(firewalld/ufw). 외부는 리버스 프록시(HTTPS)만 노출.
|
||||||
|
|
||||||
|
## 9. 최종 점검 (통합 테스트)
|
||||||
|
|
||||||
|
| # | 항목 | 기대 |
|
||||||
|
|---|------|------|
|
||||||
|
| 1 | **down/start 쉘 동작** | 중지·기동 쉘 정상, 프로세스 up/down 반영 |
|
||||||
|
| 2 | 헬스 | 11000/11010/11020 200, batch/datatrans 로그 라이브 |
|
||||||
|
| 3 | **SR 신청 1건** | 등록 성공(DB insert 확인) |
|
||||||
|
| 4 | **검색** | SR/자산 검색 결과 노출 = **배치 색인 정상**(검색되면 배치도 도는 것) |
|
||||||
|
| 5 | **통합 테스트** | 로그인→메인→SR 등록→결재(프로시저)→검색→보고서 흐름 |
|
||||||
|
| 6 | **자산 대용량 처리** | 대량 자산 조회/색인 성능·오류 확인 |
|
||||||
|
| 7 | 배치 중개 | 배치가 DB↔검색(AP) 데이터 왕복 정상 |
|
||||||
|
|
||||||
|
## 10. 테스트 자격
|
||||||
|
|
||||||
|
- MariaDB root, 테스트 계정 `admin` — 값은 서버 로컬/시크릿 저장소에서만 조달, 이 문서·로그·커밋에 미기재.
|
||||||
|
|
||||||
|
## 11. 트러블슈팅
|
||||||
|
|
||||||
|
- 기동 즉시 종료 → `journalctl -u itms-<모듈>` (DB 미도달/프로파일 오류).
|
||||||
|
- `gradlew` 127 → CRLF: `sed -i 's/\r$//' gradlew`.
|
||||||
|
- front 빌드 실패 → egov `spring-modules-validation`(artifact-only 저장소) 배선 확인.
|
||||||
|
- webhook 미동작 → url localhost·secret 일치·ALLOWED_HOST_LIST loopback + deploy_server 서버 사본 반영·재시작.
|
||||||
|
- Docker 디스크 부족 → data-root 이전(§4-1).
|
||||||
|
- 검색 무결과 → 배치 색인 잡 확인(Quartz property·OpenSearch 도달).
|
||||||
Loading…
Reference in New Issue
Block a user