설치 및 시작

설치 환경

1) 설치 디렉토리

  • agent: /home/assemble/agent

  • console(Assemble): /home/assemble/console

디렉토리
설명

logs

서비스 로그 디렉토리

로그는 assemble.log 형식으로 저장되며, 백업의 경우 gz 으로 자동 압축되어 처리된다.

upload

Assemble의 콘솔 화면을 통해 업로드 된 파일들이 위치하며, 해당 경로는 CJ.properties 파일에 명시되어 있어야 한다.

upload/images

admin 서버의 EJB / jsp /manager 디렉토리

upload/xls

발송대상 처리를 위한 excel 및 txt 파일 업로드 위치

sql

Assemble용 테이블 생성 쿼리

2) domain name

  • console 및 short url 도메인을 셋팅 합니다.

3) webApp name: commone

4) Startup & Shutdown Name: conestart.sh start/stop

5) service port(http / https): 80(application.properties 에서 수정 가능 - server.port=80) 80 포트 사용 시 root 권한이 필요하므로 다른 포트 사용을 권장합니다.

server jdk version: openjdk 1.8.x

6) 서비스 설치 대상 DB에 관련 테이블 생성용 sq을 이용하여 테이블 설치 후 서버에 관련 jar 및 설정 파일을 위치 시킵니다. 이후 과정은 ‘서비스 시작/종료’를 이용합니다.

7) 환경설정 파일

application.properties
# Server set
server.port=80
server.session.timeout=1800
# DataBase : MariaDB
spring.datasource.driverClassName=ENC(R1BK31eKv8JbbTfH44o42mEuLflIzjHWrKt19HMXSLFl4br2c/3vAXUw+M5kon17)
spring.datasource.url=ENC(SpLwFlBdP0O4IkYK8RzzAXrq+7/RPf5mvzcuphoDW6SmKieWOrTellXfYGCJf4O3iRb3da0QBOf6Ridk1+flVA==)
spring.datasource.username=ENC(ZjQ8fllbUqrSdyM4DwX8tiwTntbInHeWpDFuSWWLA+s=)
spring.datasource.password=ENC(qGk0TgUEsUBa8kyUEQ3suLUOx0Q8rQ9or9yizYOQTi2R1522fhItZVeWrmzNFQ2H)
# jasypt encryptor
jasypt.encryptor.bean=jasyptStringEncrptor
# jpa table 설정 대소분자 구분
spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
spring.jpa.properties.hibernate.enable_lazy_load_no_trans=true
# sql query 보기
#spring.jpa.show-sql=true
spring.jpa.properties.hibernate.format_sql=true
spring.jpa.properties.hibernate.jdbc.batch_size=1000
spring.jpa.hibernate.use-new-id-generator-mappings=false
# tomcat datasource
spring.datasource.tomcat.min-idle=30
spring.datasource.tomcat.max-idle=30
spring.datasource.tomcat.max-active=30
spring.datasource.tomcat.initial-size=30
spring.datasource.tomcat.test-while-idle=true    
spring.datasource.tomcat.time-between-eviction-runs-millis=3600000    
spring.datasource.tomcat.min-evictable-idle-time-millis=7200000    
spring.datasource.tomcat.testOnBorrow=true        
spring.datasource.tomcat.validationQuery=SELECT 1
# servlet multipart file size
spring.servlet.multipart.max-file-size=10485760
spring.servlet.multipart.max-request-size=10485760
#log
logging.level.org.springframework.web=DEBUG
logging.level.org.hibernate= ERROR
logging.file=./logs/assemble.log
#push statistics api
push.api.domain=https://api-v2.fingerpush.com
push.api.appReport=/rest/cjcaas/console_v1/getAppList.jsp
push.api.appInfo=/rest/cjcaas/console_v1/getAppReport.jsp
push.api.appTagList=/rest/cjcaas/console_v1/getDBAppTagList.jsp
push.api.appTagDel=/rest/cjcaas/console_v1/getDBAppTagDel.jsp
push.api.appUpdAKey=/rest/cjcaas/console_v1/setAndroidKey.jsp
push.api.appUpdIKey=/rest/cjcaas/console_v1/setAppP12.jsp
push.api.appSOD=/rest/cjcaas/console_v1/getDBAppSOD.jsp
push.api.activeDevice=/rest/cjcaas/console_v1/getDBActiveDeviceCont.jsp
push.api.appRtCont=/rest/cjcaas/console_v1/getDBAppRtCont.jsp
push.api.appInstallM=/rest/cjcaas/console_v1/getDBInstallM.jsp
push.api.appInstallH=/rest/cjcaas/console_v1/getDBInstallH.jsp
push.api.identityList=/rest/cjcaas/console_v1/getDBIdentityList.jsp
push.api.pushInfo=/rest/cjcaas/console_v1/getPushInfo.jsp
push.api.cancelPush=/rest/cjcaas/console_v1/cancelPush.jsp
push.api.pushSendList=/rest/cjcaas/console_v1/getPushSendList.jsp
push.api.instDataYear=/rest/cjcaas/console_v1/getInstDataYear.jsp
push.api.connDataYear=/rest/cjcaas/console_v1/getConnDataYear.jsp
push.api.activeDeviceStat=/rest/cjcaas/console_v1/getActiveDevice.jsp
push.api.deactiveDeviceStat=/rest/cjcaas/console_v1/getDeactiveDevice.jsp
push.api.installDevice=/rest/cjcaas/console_v1/getInstalledDevice.jsp
push.api.connectedDevice=/rest/cjcaas/console_v1/getConnectedDevice.jsp
push.api.statusByOs=/rest/cjcaas/console_v1/getStatusByOS.jsp
push.api.rtSendStatsJson=/rest/cjcaas/console_v1/getRTSendStatsJson.jsp
push.api.openedTimeList=/rest/cjcaas/console_v1/getOpenedTimeList.jsp
push.api.connTimeList=/rest/cjcaas/console_v1/getConnTimeList.jsp
push.api.uploadPushImg=/rest/cjcaas/console_v1/setPushImg.jsp
push.api.openTimeRate=/rest/cjcaas/console_v1/getOpenTimeRate.jsp
push.api.getDeviceCount=/rest/cjcaas/console_v1/getDeviceCount.jsp
#cj heartbeat api
cj.api.heartBeat=https://commone.cjmplace.com/heartbeat/v1
cj.api.account=https://commone.cjmplace.com/stl/v1
구분
설정값
내용

서버 설정

server.port

핑거푸시 어셈블 사용 포트

server.session.timeout

세션 타임아웃(초 단위)

database

spring.datasource.driverClassName

DB Class Name. 암호화됨. Enryption 프로그램을 이용하여 암호화 처리값 입력

spring.datasource.url

DB url(ip)

spring.datasource.username

DB 사용자명

spring.datasource.passwd

DB 비밀번호

jasypt encriptor

jasypt.encryptor.bean

DB 설정 정보 암호화 처리 모듈

jpa

spring.jpa.hibernate.naming.physical-strategy

JPA 테이블 설정 대소문자 구분

spring.jpa.properties.hibernate.enable_lazy_load_no_trans

lazy load를 적용하기 위한 설정

spring.jpa.show-sql

콘솔 sql query 조회

spring.jpa.proerties.hibernate.format-sql

형식화 된 sql 문을 보여준다.

spring.jpa.properties.hibernate.jdbc.batch_size

파일 parse insert 최대 개수

spring.jpa.hibernate.use-new-id-generator-mapping

DB Auto_increment 가능하게 하는 옵션

tomcat

spring.datasource.tomcat.min-idle

 

spring.datasource.tomcat.max-idle

spring.datasource.tomcat.max-active

spring.datasource.tomcat.initial-size

spring.datasource.tomcat.test-while-idle

spring.datasource.tomcat.time-between-eviction-runs-millis

spring.datasource.tomcat.min-evictable-idle-time-millis

spring.datasource.tomcat.testOnBorrow

spring.datasource.tomcat.validationQuery

log

logging.level.org.springframework.web

 

logging.level.org.hibernate

logging.file

로그 파일 저장 경로

push api

push.api.domain

푸시 서비스 도메인

push.api.appReport

소유 앱 정보 목록 조회

push.api.appInfo

특정 앱 정보 조회

push.api.appTagList

앱에 속한 태그 정보 조회

push.api.appTagDel

앱에 속한 태그 삭제 처리

push.api.appUpdKey

앱 인증키 및 인증서 교체

push.api.appSOD

앱의 월별 통계 조회

push.api.activeDevice

앱의 활성화 디바이스 정보 조회

push.api.appRtCont

앱 실시간 이용 카운트 조회

push.api.appInstallM

앱 설치 정보(월)

push.api.appInstallH

설치 정보(시간)

push.api.identityList

식별자 조회

push.api.pushInfo

푸시 메시지 기본정보 조회

push.api.cancelPush

푸시 메시지 취소

push.api.pushSendList

푸시 메시지 발송 목록 조회

push.api.instDataYear

연간 설치 정보

push.api.connDataYear

연간 접속 정보

push.api.activeDeviceStat

활성화 디바이스 통계

push.api.deactiveDeviceStat

비활성화 디바이스 통계

push.api.installDevice

설치 디바이스 통계

push.api.statusByOs

OS별 통계

push.api.rtSendStatsJson

실시간 발송 현황 조회

push.api.openedTimeList

푸시 오픈 시간별 정보

push.api.connTimeList

접속 시간별 정보

push.api.uploadPushImg

이미지 푸시 서버로 전송

push.api.oepnTimeRate

시간별 푸시 오픈 통계

push.api.getDeviceCount

발송 대상자 수 호출(전체 푸시)

cj api

cj.api.heartBeat

agent heart beat - 에러 발생 시 처리

cj.api.account

일일 정산 데이터 수집용

CJ.properties
excelFilePath=/home/cjcaas/console/upload/xls/
ImgFilePath=/home/cjcaas/console/upload/images/
tempFilePath=/home/cjcaas/console/upload/temp/
sampleFilePath=/home/cjcaas/console/upload/sample/
sampleFileName=assembleTestSample.zip
excelFileDelYn=Y
dayByBatchTerm=7,23
DomainURL=도메인주소
imgSizeLimit=400
xlsSizeLimit=10240
loginip=접근허용 ip
#short url
useShortUrl=Y
SHORT_URL=단축URL
#batch
isrunbatch=true
batch.fixedDelay.agmonitor=300000
batch.fixedDelay.sendcount=1800000
batch.fixedDelay.cmpnstep=600000
#agent use on
usepush=true
usemsg=true
usekko=true
usekkf=true
usemail=true
#agent monitor
daemonid=test
# admin sms
msg.callback=07046937281
# push api value
push.userid=푸시서비스아이디
push.customerkey=푸시서비스고객키
# cj api id value
cj.idat=
cj.idft=
cj.idmsg=
cj.idemail=
cj.idcommone=
# send cancel time
cancelDispatchTime=30
#send time
emgTime=5
reservTime=30
#dbtodb option
dbtodbCntLimit=1000000
dbtodbPageCnt=50000
isTestSkip=Y
isSmsAuth=Y,N
isNewDbtoDb=Y,N
isSpltSend=Y
version={version}
구분
설정값
내용

upload setting

excelFilePath

발송 대상 파일 업로드 경로

ImgFilePath

이미지 파일 업로드 경로(푸시/문자/카카오)

tempFilePath

엑셀파일 다운르도 임시 폴더

sampleFilePath

테스트용 샘플 파일 경로

sampleFileName

테스트용 샘플 파일명

excelFileDelYn

처리 완료 후 업로드 파일 삭제 여부

dayByBatchTerm

일별 배치 텀. 7,23: 현재일 기준 7일/매일 23시에 실행

DomainUrl

핑거푸시 어셈블 도메인

imageSizeLimit

이미지 파일 사이즈 한도(푸시/문자/카카오)

xlsSizeLimit

발송 대상 파일 업로드 사이즈 한도

loginip

핑거푸시 어셈블에 로그인 가능한 아이피

useShortUrl

단축 URL 서버 여부(로그인 페이지 불가 처리 여부)

SHORT_URL

단축 URL 사용 시 치환되는 URL 도메인

batch

isrunbatch

배치 사용 유무. 단축URL 전용 서버의 경우 해당 값은 false

batch.fixedDelay.agmonitor

agent heart beat 체크 시간

batch.fixedDelay.sendcount

금일 발송 통계 수집 배치 시간

batch.fixedDelay.cmpnstep

캠페인 상태 변경 배치 시간 텀

agent

usepush

agent heart beat 체크 여부( 푸시)

usemsg

agent heart beat 체크 여부( 문자)

usekko

agent heart beat 체크 여부( 알림톡)

usekkf

agent heart beat 체크 여부( 친구톡)

usemail

agent heart beat 체크 여부( 이메일)

daemoneid

agent daemon id

msg.callback

알림용(계정승인/캠페인 승인) 콜백번호

push

push.userid

푸시 서비스 계정

push.customerkey

푸시 서비스 고객번호(비밀번호 아님)

api id

cj.idat

알림톡 아이디 (Agent 설정값과 동일)

cj.idft

친구톡 아이디 (Agent 설정값과 동일)

cj.idmsg

문자 아이디 (Agent 설정값과 동일)

cj.idemail

이메일 아이디 (Agent 설정값과 동일)

cj.idcommone

핑거푸시 어셈블 아이디

발송 취소 설정

cancelDispatchTime

발송 취소 시간 설정(단위 분)

Send time

emgTime

긴급 발송 선택 시 발송 예약시간 (분)

reservTime

메시지 발송 취소 가능 시간(분)

DB불러오기 설정

dbtodbCntLimit

사용자 화면에서 DB불러오기 데이터 불러오기 최대값

dbtodbPageCnt

DB불러오기 데이터 처리(치환) 시 데이터 불러오기 한 번에 불러올 개

isTestSkip

테스트 발송 허용 여부 (Y, 고정)

로그인 보안 설정

isSmsAuth

문자 인증 콘솔화면 추가

신규 DB 불러오기 이용

isNewDbtoDb

DB 불러오기 신규적용 (v2.0.0 이하 N)

분할발송 이용

isSpltSend

분할발송 사용 여부 (Y, 고정)

Assemble 버전

version

어셈블 설치 버전 (v2.0.0 이상)

8) 접속 정보 설정 관련 내용은 암호화되어 있으며, DB 정보가 변경될 시 다음과 같이 변경된 내용을 적용할 수 있습니다.

# DataBase : MariaDB
spring.datasource.driverClassName=ENC(암호화된 값)
spring.datasource.url=ENC(암호화된 값)
spring.datasource.username=ENC(암호화된 값)
spring.datasource.password=ENC(암호화된 값)

보안을 위해 핑거푸시 어셈블의 프로퍼티 값 중 DB 접속 정보는 암호화되어 처리됩니다. 이와 관련하여 Encrtpion 폴더의 암호화 툴을 이용하여 평문을 암호화하여 접속정보를 적용할 수 있습니다.

i. Encrypter_Tomcat.bat

  • Encryption_Data-1.0.jar 와 같은 경로에 위치 시킬 것

  • 편집을 통해 Encryption_Data-1.0.jar의 경로를 변경할 수 있습니다.

  • 실행 시 내장된 톰캣 서버(port:9999)가 실행되고 10초 뒤 웹 브라우저를 실행시켜 localhost:9999 페이지를 띄웁니다.

ii. Encrypter_Console.bat

  • Encryption_CsData-1.0.jar 와 같은 경로에 위치 시킬 것

  • 편집을 통해 Encryption_CsData-1.0.jar의 경로를 변경할 수 있습니다.

  • 실행 시 DriverClass, Url, Username, Password를 입력 받고 암호화한 값을 출력합니다.

iii. Encrypter_Tomcat.sh

  • Encryption_Data-1.0.jar 와 같은 경로에 위치 시킬 것

  • PATH_TO_JAR 변수를 조작하여 Encryption_Data-1.0.jar의 경로를 변경할 수 있습니다. 실행 시 내장된 톰캣 서버(port:9999)가 실행됩니다.

  • 외부에서 http://xxx.xxx.xxx.xxx:9999 를 통해 encrypt 페이지에 접속할 수 있습니다. (xxx.xxx.xxx.xxx는 Encrypter_tomcat.sh가 실행된 서버의 ip)

  • 외부에서 접속하기 위해서는 아래의 명령을 통해 포트를 개방할 필요가 있습니다. #firewall-cmd --permanent --add-port=9999/tcp #firewall-cmd --reload

iv. Encrypter_Console.bat

  • Encryption_CsData-1.0.jar 와 같은 경로에 위치 시킬 것

  • PATH_TO_JAR 변수를 조작하여 Encryption_CsData-1.0.jar의 경로를 변경할 수 있습니다.

  • 실행 시 DriverClass, Url, Username, Password를 입력 받고 암호화한 값을 출력합니다.

[입력]

[결과]

운영 장비 환경

당 서비스는 고객별 환경 및 DB 종류에 유연하게 적용할 수 있는 서비스이나, 아래 항목에 대해서는 필수적으로 충족되어야 합니다.

1) Domain 사용

Short Url 등을 이용한 고객의 메시지 클릭률 수집 등을 위해, 고객이 입력한 full url이 치환될 도메인이 필수적으로 필요합니다. 또한, 해당 도메인 접속 트래픽을 고려하여 해당 서비스는 핑거푸시 어셈블 콘솔과 Short url 클릭 트래픽 전용 서버로 구성한다면, 각각 접속에 필요한 도메인을 셋팅 하는 것을 추천합니다.

2) Java Version

해당 서비스의 빌드 버전은 Java 1.8.x 버전 이므로 대상 서버는 해당 버전의 JDK 가 설치되어 있어야 합니다.

3) 외부 데이터 통신을 위해 Agent에서 사용하는 포트 이외에 다음 도메인에 대한 outbound 80, 443 포트가 개방되어 있어야 합니다.

  • https://commone.cjmplace.com

  • https://api-v2.fingerpush.com

서비스 시작과 정지

서버 OS에 따라, Shell(coneStart.sh) 혹은 Batch (coneStart.bat)로 실행할 수 있습니다.

1) 다음과 같이 실행합니다. (1024 포트 이하 사용 시 root 권한 실행)

./conestart.sh start

2) 서비스 종료 시 다음과 같이 입력합니다.

./conestart.sh stop

시스템 시작과 종료 방법

1) 사용자는 시스템 접속을 위해 웹 브라우저를 기동 시킨 후 주소란에 Assemble의 도메인을 입력합니다.

2) 시스템은 사용자 인증을 위해 Login 화면을 Display 하며, 이때 사용자는 본인의 ID 및 Password를 입력한 후 Login을 클릭합니다.

3) 시스템은 사용자 확인 후 Main화면을 Display합니다. 사용자는 Main 화면에서 작업할 단위 시스템 별 화면으로 이동하여 작업합니다.

4) 사용자는 단위 업무별 작업을 수행합니다.

  • 관리자(ADM): 모든 메뉴에 접근 가능

  • 사용자(USR): 계정 권한을 가진 메뉴에 접근 가능

5) 사용자가 작업을 마친 후 종료 시 화면 우측 상단의 계정을 클릭 후 로그아웃을 클릭합니다.

Last updated