From 47b98622ada5c4337213a77c0fbaa0467d437811 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EB=B0=95=EC=84=B1=EC=98=81?= Date: Mon, 10 Nov 2025 11:36:24 +0900 Subject: [PATCH] =?UTF-8?q?=EC=9A=B4=EC=98=81=20=EC=84=A4=EC=A0=95=20?= =?UTF-8?q?=EA=B0=92=20=EC=B6=94=EA=B0=80=20=EB=B0=8F=20README=20=EC=97=85?= =?UTF-8?q?=EB=8D=B0=EC=9D=B4=ED=8A=B8=20(=ED=8F=AC=ED=8A=B8=20=EB=B0=8F?= =?UTF-8?q?=20=EC=8B=A4=ED=96=89=20=EA=B0=80=EC=9D=B4=EB=93=9C)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 151 ++++++++++++++++++++++++- src/main/resources/application-prd.yml | 10 +- 2 files changed, 152 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index 374e250..1f2947a 100644 --- a/README.md +++ b/README.md @@ -16,6 +16,10 @@ - 환경 프로파일 분리: `dev`, `prd` - GPKI 연계: 운영은 실서명(`RealGpkiService`), 개발은 `NoopGpkiService` - MyBatis + MariaDB를 통한 로깅 및 조회 이력 관리(기본사항) +- 추후 기능 개발 사항 + - request data[] 배열과 response data[] 배열을 별도로 처리하는 기능 추가, 현재 1건의 차량번호와 1건의 response 만 처리하도록 되어있음 + - response.getRecord().get(0); || response.getBody().getData().get(0); 으로 모두 처리함, 단건이 아닌 배열처리 기능 필요함 + - 배열에 따른 로깅기능도 같이 수정되어야함, 배열만큼 rows insert(그룹해줄수 있는 tx id 컬럼 추가) or 마스터->디테일 테이블 구조로 변경 --- @@ -52,7 +56,7 @@ ## 설정 파일 및 프로파일 - 기본 설정: `src/main/resources/application.yml` - - 서버 포트 기본값: `8080` + - 서버 포트 기본값: `8081` - 전역 DB 타입 변수: `Globals.DbType: maria` - 개발: `src/main/resources/application-dev.yml` - 운영: `src/main/resources/application-prd.yml` @@ -78,7 +82,7 @@ ### 권장 환경변수 매핑(예) - `SPRING_PROFILES_ACTIVE=dev` - `DB_URL`, `DB_USERNAME`, `DB_PASSWORD` -- `VMIS_SYSTEM_INFO_SYS_ID`, `VMIS_SYSTEM_INFO_SYS_IP`, `VMIS_SYSTEM_REGION_CODE` 등 +- `VMIS_SYSTEM_INFO_SYS_ID`, `VMIS_SYSTEM_INFO_SYS_IP`, `VMIS_SYSTEM_SIGUNGU_CODE` 등 - `VMIS_GPKI_ENABLED`, `VMIS_GPKI_ENV_PRIVATE_KEY_PASSWD`, `VMIS_GPKI_SIG_PRIVATE_KEY_PASSWD` - `VMIS_GOV_HOST`, `VMIS_GOV_SERVICES_BASIC_APIKEY`, `VMIS_GOV_SERVICES_LEDGER_APIKEY` @@ -105,17 +109,152 @@ cd VMIS-interface Windows PowerShell에서는 `./gradlew.bat` 사용 가능합니다. ### 3) 실행 + +#### 방법 1: Gradle bootRun 사용 (개발 권장) + +**개발 환경 (포트 8081)** +```bash +# Linux/Mac +./gradlew bootRun --args='--spring.profiles.active=dev' + +# Windows +gradlew.bat bootRun --args='--spring.profiles.active=dev' +``` + +**운영 환경 (포트 8080)** +```bash +# Linux/Mac +./gradlew bootRun --args='--spring.profiles.active=prd' + +# Windows +gradlew.bat bootRun --args='--spring.profiles.active=prd' ``` -# 개발 프로파일로 실행(기본 포트 8080) -java -jar build/libs/VMIS-interface-0.0.1-SNAPSHOT.jar -Dspring.profiles.active=dev -# 또는 환경변수로 +#### 방법 2: JAR 파일 실행 (배포 권장) + +**개발 환경** +```bash +# Linux/Mac +java -Dspring.profiles.active=dev -jar build/libs/VMIS-interface-0.0.1-SNAPSHOT.jar + +# Windows PowerShell +java -Dspring.profiles.active=dev -jar build/libs/VMIS-interface-0.0.1-SNAPSHOT.jar + +# 또는 환경변수 사용 (Windows PowerShell) $env:SPRING_PROFILES_ACTIVE = "dev" java -jar build/libs/VMIS-interface-0.0.1-SNAPSHOT.jar ``` +**운영 환경 (환경변수 포함)** +```bash +# Linux/Mac +export SPRING_PROFILES_ACTIVE=prd +export VMIS_SYSTEM_INFO_SYS_ID="41-345" +export VMIS_SYSTEM_SIGUNGU_CODE="41460" +java -jar build/libs/VMIS-interface-0.0.1-SNAPSHOT.jar + +# Windows PowerShell +$env:SPRING_PROFILES_ACTIVE = "prd" +$env:VMIS_SYSTEM_INFO_SYS_ID = "41-345" +$env:VMIS_SYSTEM_SIGUNGU_CODE = "41460" +java -jar build/libs/VMIS-interface-0.0.1-SNAPSHOT.jar +``` + +#### 백그라운드 실행 (Linux 서버) +```bash +# nohup 사용 (기본 java 경로, 콘솔 출력을 app.log에 저장) +nohup java -Dspring.profiles.active=prd -jar build/libs/VMIS-interface-0.0.1-SNAPSHOT.jar > app.log 2>&1 & + +# Java 경로를 직접 지정하는 방법 (Java 17 이상) +nohup /usr/bin/java -Dspring.profiles.active=prd -jar build/libs/VMIS-interface-0.0.1-SNAPSHOT.jar > app.log 2>&1 & + +# 또는 사용자 지정 Java 경로 사용 +nohup /opt/jdk-17/bin/java -Dspring.profiles.active=prd -jar build/libs/VMIS-interface-0.0.1-SNAPSHOT.jar > app.log 2>&1 & + +# 콘솔 출력을 남기지 않을 때 (애플리케이션 자체 로그는 logback-spring.xml 설정에 따라 별도 저장됨) +# 개발 환경 +nohup /usr/bin/java -Dspring.profiles.active=dev -jar build/libs/VMIS-interface-0.0.1-SNAPSHOT.jar > /dev/null 2>&1 & + +# 운영 환경 (애플리케이션 로그: d:/data/VMIS-interface/logs/vmis-interface.log) +nohup /usr/bin/java -Dspring.profiles.active=prd -jar build/libs/VMIS-interface-0.0.1-SNAPSHOT.jar > /dev/null 2>&1 & + +# Java 경로 확인 방법 +which java +# 또는 +readlink -f $(which java) + +# 프로세스 확인 +ps aux | grep VMIS-interface + +# 종료 +kill -9 +``` + +**참고:** `/dev/null` 사용 시 콘솔 출력만 버려지며, 애플리케이션 자체 로그는 `logging.file.path` 설정에 따라 정상적으로 기록됩니다. +- 개발: `d:/data/VMIS-interface/logs/vmis-interface.log` +- 운영: `d:/data/VMIS-interface/logs/vmis-interface.log` + +#### 백그라운드 실행 (Windows 서버) + +**PowerShell - 백그라운드 프로세스로 실행** +```powershell +# 개발 환경 (콘솔 출력을 app.log에 저장) +Start-Process -NoNewWindow -FilePath "java" -ArgumentList "-Dspring.profiles.active=dev","-jar","build\libs\VMIS-interface-0.0.1-SNAPSHOT.jar" -RedirectStandardOutput "app.log" -RedirectStandardError "app.log" + +# 운영 환경 (콘솔 출력을 app.log에 저장) +Start-Process -NoNewWindow -FilePath "java" -ArgumentList "-Dspring.profiles.active=prd","-jar","build\libs\VMIS-interface-0.0.1-SNAPSHOT.jar" -RedirectStandardOutput "app.log" -RedirectStandardError "app.log" + +# Java 경로를 직접 지정하는 방법 +Start-Process -NoNewWindow -FilePath "C:\Program Files\Java\jdk-17\bin\java.exe" -ArgumentList "-Dspring.profiles.active=prd","-jar","build\libs\VMIS-interface-0.0.1-SNAPSHOT.jar" -RedirectStandardOutput "app.log" -RedirectStandardError "app.log" + +# 콘솔 출력을 남기지 않을 때 (NUL로 리다이렉트) +Start-Process -NoNewWindow -FilePath "java" -ArgumentList "-Dspring.profiles.active=prd","-jar","build\libs\VMIS-interface-0.0.1-SNAPSHOT.jar" -RedirectStandardOutput "NUL" -RedirectStandardError "NUL" +``` + +**CMD - javaw 사용 (콘솔 창 없이 실행)** +```cmd +# 개발 환경 +start /B javaw -Dspring.profiles.active=dev -jar build\libs\VMIS-interface-0.0.1-SNAPSHOT.jar + +# 운영 환경 +start /B javaw -Dspring.profiles.active=prd -jar build\libs\VMIS-interface-0.0.1-SNAPSHOT.jar + +# Java 경로를 직접 지정 +start /B "C:\Program Files\Java\jdk-17\bin\javaw.exe" -Dspring.profiles.active=prd -jar build\libs\VMIS-interface-0.0.1-SNAPSHOT.jar +``` + +**프로세스 관리** +```powershell +# 프로세스 확인 +Get-Process | Where-Object {$_.ProcessName -like "*java*"} | Select-Object Id, ProcessName, Path + +# 또는 특정 포트로 확인 +netstat -ano | findstr :8080 + +# 프로세스 종료 (PID로) +Stop-Process -Id -Force + +# 또는 taskkill 사용 +taskkill /F /PID +``` + +**Java 경로 확인 (Windows)** +```powershell +# PowerShell +where.exe java + +# 또는 +(Get-Command java).Source + +# Java 버전 확인 +java -version +``` + +**참고:** Windows 환경에서도 콘솔 출력을 `NUL`로 리다이렉트하면, 애플리케이션 자체 로그는 `d:/data/VMIS-interface/logs/vmis-interface.log`에 정상적으로 기록됩니다. + ### 4) API 문서(Swagger UI) -- 실행 후: `http://localhost:8080/swagger-ui/index.html` +- 개발 환경: `http://localhost:8081/swagger-ui/index.html` +- 운영 환경: `http://localhost:8080/swagger-ui/index.html` --- diff --git a/src/main/resources/application-prd.yml b/src/main/resources/application-prd.yml index b437f74..c99476a 100644 --- a/src/main/resources/application-prd.yml +++ b/src/main/resources/application-prd.yml @@ -59,9 +59,13 @@ logging: # 주의: 실제 운영 키/호스트는 배포 환경 변수나 외부 설정(Secret)로 주입 권장 vmis: system: - infoSysId: "41-345" # 운영 실제값으로 교체 - sigunguCode: "" # 운영 실제값 - departmentCode: "" # 운영 실제값 + infoSysId: "41-345" + infoSysIp: "105.19.10.135" + sigunguCode: "41460" + departmentCode: "" + chargerId: "" + chargerIp: "" + chargerNm: "" gpki: enabled: "Y" useSign: true