2.2. 모듈 배포
배포 전에 다음과 같이 프로젝트별 배포파일을 준비해야 합니다.
준비 된 파일 경로는 임의 경로인 /tmp/ 에 있다고 가정하도록 하겠습니다.
1. frontend
* datahub-dataservice-userportal.war
* datahub-dataservice-adminportal.war
2. backend
* datahub-dataservice-portal.jar
* datahub-dataservice-notifier.jar
* datahub-dataservice-dataset-provider.jar
2.2.1. frontend
프로젝트 빌드 전 다음의 설정 파일들을 수정 하고 빌드 해야 합니다.
- globals.properties 파일
# 어떤 배포 Properties 를 로딩해야 하는지를 정의 하는 구분 값
resources\kr\co\smartcity\egovProps\globals.properties
# 아래는 globals.properties 파일 내용입니다.
#-----------------------------------------------------------------------
#
# Globals.division : 운영배포 환경에 따른 globals.{values}.properties 를 로딩한다.
#
#-----------------------------------------------------------------------
# local : 로컬 환경
# dev : 개발 환경
# prod : 운영 환경
# test : 품질 환경
#
#-----------------------------------------------------------------------
Globals.division=test
- globals.{values}.properties 파일
위의 Globals.division 에 해당 되는 환경 properties 파일을 열어 현재 배포 서버 정보에 맞게 업데이트를 해야 합니다.
resources\kr\co\smartcity\egovProps\globals.local.properties
resources\kr\co\smartcity\egovProps\globals.dev.properties
resources\kr\co\smartcity\egovProps\globals.prod.properties
resources\kr\co\smartcity\egovProps\globals.test.properties
2.2.1.1. datahub-dataservice-userportal
# [2.2.2. Apache Tomcat] 에 기 설치 했던 기존 압축 해제 된 폴더 경로로 이동
# 사용자 포탈 생성
$ cp -rf apache-tomcat-8.5.37 tomcat8-userportal
# 경로 이동
$ cd tomcat8-userportal/webapps/
# 기존 ROOT 폴더 삭제
tomcat8-userportal/webapps$ rm -rf ROOT
# 배포 준비 된 사용자포탈 war 파일을 ROOT.war 로 변경해서 복사
tomcat8-userportal/webapps$ cp /tmp/datahub-dataservice-userportal.war ROOT.war
# 설정 파일을 열어 포트 설정 (선택 사항)
tomcat8-userportal/webapps$ vi ../conf/server.xml
# 서버 구동
tomcat8-userportal/webapps$ ../bin/startup.sh
2.2.1.2. datahub-dataservice-adminportal
# [2.2.2. Apache Tomcat] 에 기 설치 했던 기존 압축 해제 된 폴더 경로로 이동
# 사용자 포탈 생성
$ cp -rf apache-tomcat-8.5.37 tomcat8-adminportal
# 경로 이동
$ cd tomcat8-adminportal/webapps/
# 기존 ROOT 폴더 삭제
tomcat8-adminportal/webapps$ rm -rf ROOT
# 배포 준비 된 사용자포탈 war 파일을 ROOT.war 로 변경해서 복사
tomcat8-adminportal/webapps$ cp /tmp/datahub-dataservice-adminportal.war ROOT.war
# 설정 파일을 열어 포트 설정 (선택 사항)
tomcat8-adminportal/webapps$ vi ../conf/server.xml
# 서버 구동
tomcat8-adminportal/webapps$ ../bin/startup.sh
2.2.2. backend
프로젝트 빌드 전 다음의 설정 파일들을 수정 하고 나서 빌드 해야 합니다.
- application.yml 파일
# Active 프로파일을 지정
resources\application.yml
# 필요한 정보 일부만 표시 한 내용입니다.
server:
port:7930
...
spring:
profiles:
active: dev
...
...
spring.profiles.active 설정 값에 구동 할 Active 프로파일 값을 설정 해야 합니다.
- application-env.yml
# 프로파일별 환경설정 값을 관리하는 파일입니다.
# application.yml 파일의 spring.profiles.active에 설정 된 값의 해당 하는 profile 정보를 업데이트 해주세요.
2.2.2.1. datahub-dataservice-portal.jar
포탈 기능 API를 담당 하는 백엔드서버입니다.
우선 데이터베이스 관련 설정을 한 뒤, 프로세스를 구동 해야 합니다.
아래 DB 관련 설정 값들은 프로젝트 yml 정보에 반영되어 jar로 빌드 되어 있어야 합니다.
절차는 다음과 같습니다.
- PostgreSQL 의 사용자, Database, Schema 를 생성합니다.
# psql 접속
$ sudo -i -u postgres psql
postgres=#
# portal api 전용 신규 계정 추가
postgres=# create user smartcity_portal PASSWORD '암호입력' SUPERUSER;
# portal api 전용 데이터베이스 생성
postgres=# create database PORTAL owner smartcity_portal;
# portal api 전용 스키마 생성
postgres=# create schema portal authorization smartcity_portal;
- 프로젝트 폴더 내의 DDL ( + 초기 데이터포함) 스크립트 파일을 실행하여 테이블을 생성 합니다.
# 프로젝트 파일 내 위치.
db\dump-postgres-portal-20210512.sql 파일을 설치 서버로 파일을 복사하여 위치 시킨다.
# 복사 된 서버의 파일 위치 (tmp로 가정)
# psql -U [database_user] -d [database_name] -a -f [sql file 절대경로]
$ psql -U postgres -d PORTAL -a -f /tmp/dump-postgres-portal-20210512.sql
- 배포 된 jar 파일을 실행합니다.
# jar파일 구동
$ java -jar datahub-dataservice-portal.jar
# spring 프로파일 지정 후 구동
$ java -Dspring.profiles.active=dev -jar datahub-dataservice-portal.jar
# background 실행 (예: 개발계(dev)로 배포 할 경우)
$ nohup java -Dspring.profiles.active=dev -jar datahub-dataservice-portal.jar &
# 실행 프로세스 확인
$ ps -ef |grep datahub-dataservice-portal
2.2.2.2. datahub-dataservice-notifier.jar
실시간 전송을 담당하는 notifier 모듈은 datahub-dataservice-dataset-provider 로 부터 Kafka 메시지를 수신 받아, 전송 대상자 들에게 3가지 유형의 프로토콜 (HTTP, Websocket, MQTT) 로 데이터를 송신 합니다. 데이터 베이스는 사용하지 않으며, 연동 대상 서버는 Kafka 서버, MQTT Broker 서버가 됩니다. 연결 설정 정보는 application-env.yml 내의 Active profiles 영역의 kafka, mqtt 서버 ip 프로퍼티값을 참조 하므로, 해당 값에 서버 정보를 업데이트 해야 합니다.
다음은 배포파일 실행 명령어 입니다.
# jar파일 구동
$ java -jar datahub-dataservice-notifier.jar
# spring 프로파일 지정 후 구동
$ java -Dspring.profiles.active=dev -jar datahub-dataservice-notifier.jar
# background 실행
$ nohup java -Dspring.profiles.active=dev -jar datahub-dataservice-notifier.jar &
# 실행 프로세스 확인
$ ps -ef |grep datahub-dataservice-notifier
2.2.2.3. datahub-dataservice-dataset-provider.jar
데이터셋 관련 기능 API를 담당 하는 백엔드서버입니다.
우선 데이터베이스 관련 설정을 한 뒤, 프로세스를 구동 해야 합니다.
아래 DB 관련 설정 값들은 프로젝트 yml 정보에 반영되어 jar로 빌드 되어 있어야 합니다.
절차는 다음과 같습니다.
- PostgreSQL 의 사용자, Database, Schema 를 생성합니다.
# psql 접속
$ sudo -i -u postgres psql
postgres=#
# dataset-provider api 전용 신규 계정 추가
postgres=# create user smartcity_data PASSWORD '암호입력' SUPERUSER;
# dataset-provider api 전용 데이터베이스 생성
postgres=# create database DATA owner smartcity_data;
# dataset-provider api 전용 스키마 생성
postgres=# create schema datapublish authorization smartcity_data;
- 프로젝트 폴더 내의 DDL 스크립트 파일을 실행하여 테이블을 생성 합니다.
# 프로젝트 파일 내 위치.
db\dump-datapublish.sql 파일을 설치 서버로 파일을 복사하여 위치 시킨다.
# 복사 된 서버의 파일 위치 (tmp로 가정)
# psql -U [database_user] -d [database_name] -a -f [sql file 절대경로]
$ psql -U postgres -d DATA -a -f /tmp/dump-datapublish.sql
- 배포 된 jar 파일을 실행합니다.
# jar파일 구동
$ java -jar datahub-dataservice-dataset-provider.jar
# spring 프로파일 지정 후 구동
$ java -Dspring.profiles.active=dev -jar datahub-dataservice-dataset-provider.jar
# background 실행 (예: 개발계(dev)로 배포 할 경우)
$ nohup java -Dspring.profiles.active=dev -jar datahub-dataservice-dataset-provider.jar &
# 실행 프로세스 확인
$ ps -ef |grep datahub-dataservice-dataset-provider