Comment on page
설치 및 시작
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을 클릭합니다.
.png?alt=media&token=fa6b8603-9eed-4257-bc4e-c4b05e3e8735)
3) 시스템은 사용자 확인 후 Main화면을 Display합니다.
사용자는 Main 화면에서 작업할 단위 시스템 별 화면으로 이동하여 작업합니다.
.png?alt=media&token=6c5362f9-3156-4a4e-be6c-c1004405cfb6)
4) 사용자는 단위 업무별 작업을 수행합니다.
- 관리자(ADM): 모든 메뉴에 접근 가능
- 사용자(USR): 계정 권한을 가진 메뉴에 접근 가능
5) 사용자가 작업을 마친 후 종료 시 화면 우측 상단의 계정을 클릭 후 로그아웃을 클릭합니다.
.png?alt=media&token=ef5e0193-24b7-4f7c-a681-6c59c7a51f88)
Last modified 21d ago