사전점검 사항을 모두 확인하였다면, 아래의 절차를 확인하여 WorkCenter를 설치합니다. 본 문서는 WorkCenter의 표준 운영체제인 CentOS7을 기준으로 설명되어 있습니다.
설치 자원은 리눅스용 압축파일 (tgz) 또는 윈도우용 압축파일 (zip) 으로 제공됩니다.
예를 들면, aworks_workcenter_version.tgz 형태의 파일로 제공됩니다. WorkCenter를 실행하는데 필요한 소프트웨어는 오픈 소스로서 인터넷에서 다운로드 받을 수 있습니다.
설치 파일을 WorkCenter 설치 서버의 특정 디렉터리에 업로드 합니다.
설치 경로에 파일을 놓은 후 압축을 해제합니다.
설치 파일명이 aworks_workcenter_3.1.0.tgz 라고 가정하면
$ cd {awork.workcenter.home}
$ tar -zxvf aworks_workcenter_3.1.0.tgz
$ ls –al
아래와 같이 디렉토리 및 파일을 확인할 수 있습니다.
디렉토리 | 파 일 | 내 용 |
---|---|---|
/bin | /cmd/setenv | 환경변수 설정 |
/cmd/setjava | JVM 환경설정 | |
/pid/admin-[hostname].pid | Admin 모듈의 프로세스ID 저장 파일 | |
/pid/app-[hostname].pid | APP 모듈의 프로세스ID 저장 파일 | |
workcenter | WorkCenter 기동/정지 등 실행스크립트 | |
/cert | aworks_store.jks | 키 저장소 파일로서 SSL인증서 파일 * KeyStore: 비밀키, 관련된 인증서 혹은 인증서 체인을 가지고 있는 데이터베이스 |
aworks_store.ts | 인증서를 통해 Trust Store 를 생성 * TurstStore: 클라이언트가 신뢰할 수 있는 인증서만을 가지고 있으며, 보통 cacerts.jks 라는 파일명으로 TrustStore에 저장됨 | |
/conf | logback-admin.xml | logs/aadmin.log 파일에 대한 설정 정보 |
logback-app.xml | logs/app.log 파일에 대한 설정 정보 | |
logback-storage.xml | Logs/storage.log 파일에 대한 설정 정보 | |
workcenter_admin.yml | WorkCenter Instance 가 여러 개 구동될 경우 서버 상태 모니터링을 위해 사용되는 설정 정보 | |
workcenter-app.yml | WorkCenter 서비스, DB서버, SMTP서버, 패스워드, Web 어플리케이션 서비스에 관한 설정 정보 | |
workcenter-storage.yml | WorkCenter 파일 저장 서비스 설정 정보 | |
/data | /temp | WorkCenter 임시파일 저장 위치 |
/storage | WorkCenter Package 파일 저장 위치 | |
/lib | workcenter_admin-[version].jar | WorkCenter Admin 라이브러리 패키지 |
workcenter-app-[version].jar | WorkCenter APP 라이브러리 패키지 | |
workcenter-storage-[version].jar | WorkCenter Storage 라이브러리 패키지 | |
/logs | admin.log | WorkCenter Admin 실행 로그 |
app.log | WorkCenter App실행 로그 | |
storage.log | WorkCenter Storage 실행 로그 |
WorkCenter는 서블릿(Servlet) 엔진으로 undertow가 내장되어 있으며, Process Upload 등 파일 attach 작업 시 설치 위치 내의 /data/temp 디렉토리에 undertow 이름으로 임시 디렉토리가 생성되며, 임시 파일이 저장됩니다. WorkCenter 서버 인스턴스 기동 시 디렉토리가 생성되며, 인스턴스 종료 시 디렉토리가 삭제됩니다. 임시 디렉터리의 파일을 임의로 삭제해선 안됩니다. 해당 디렉토리가 삭제 되었다면 프로세스 업로드 또는 라이선스 키 임포트 시 Invalid Exception이 발생할 수 있습니다. 이런 경우 WorkCenter 프로세스 인스턴스 재기동을 하면 다시 생성됩니다.
예시)
$ls –la \~/data/temp/undertow\*
drwxr-xr-x 2 root root 6 11월 17 07:59 undertow-docbase.930296637316007654.8080
drwxr-xr-x 2 root root 6 11월 17 07:59 undertow.739996599905552347.8080
WorkCenter의 version 설정은 {WORKCENTER_HOME}/cmd/setenv 파일에서 WorkCenter 버전을 확인할 수 있습니다. “WORKCENTER_VER” 설정 값은 {WORKCENTER_HOME}/lib의 jar 파일 이름에 명시된 버전과 동일하게 수정합니다.
$cat {WORKCENTER_HOME}/cmd/setenv
#Application version
Export WORKCENTER_VER=3.1.0
Application 서비스와 관련된 설정은 {WORKCENTER_HOME}/conf/workcenter-app.yml 파일에서 할 수 있습니다.
YML 설정 파일 내의 IP address 는 localhost 대신 IP address 를 입력하는 것을 권장합니다. 간혹 공인IP와 사설IP간 변환 시 NAT(Network Address Translation) 설정에 따라 서버에 접속을 못하는 경우가 발생할 수 있습니다.
server:
port: 8080
error:
include-exception: true
ssl:
enabled: false
key-store: ../cert/aworks_store.jks
key-store-password: poscoict
key-password: poscoict
key-store-type: pkcs12
key-alias: aworks
trust-store: ../cert/aworks_store.ts
trust-store-password: poscoict
spring:
application:
name: A.WORKS WorkCenter Applicaton
<!-- workcenter-admin 서비스를 사용할 경우 -->
boot:
admin:
client:
url: http://127.0.0.1/8090
instance:
name: a.works WorkCenter (v 3.1)
prefer-ip: true
cache:
type: hazelcast
datasource: // MariaDB Server-Client JDBC 연결
url: jdbc:mariadb://127.0.0.1:3306/workcenter2?autoReconnection=true
username: uid
password: pwd
hikari:
connection-timeout: 5000
jmx:
enabled: true
jpa:
show-sql: false
hibernate:
naming:
physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
ddl-auto: validate
use-new-id-generator-mappings: false
properties:
hibernate:
format_sql: false
globally_quoted_identifiers: true
thymeleaf:
suffix: .html
mode: LEGACYHTML5
encoding: UTF-8
content-type: text/html
cache: false
rabbitmq: // RabbitMQ Server 연결
host: 127.0.0.1
port: 5672
username: mquser
password: 1234qwer
servlet:
multipart:
max-file-size: 1024MB
max-request-size: 1024MB
security:
oauth2:
client:
registration:
google:
client-id: google-client-id
client-secret: google-client-secret
redirect-uri: http://localhost:8080/login/oauth2/code/google
scope: profile, email
naver:
client-id: naver-client-id
client-secret: naver-client-secret
redirect-uri: http://localhost:8080/login/oauth2/code/naver
authorization-grant-type: authorization_code
scope: name, email
client-name: Naver
provider:
naver:
authorization_uri: https://nid.naver.com/oauth2.0/authorize
token_uri: https://nid.naver.com/oauth2.0/token
user-info-uri: https://openapi.naver.com/v1/nid/me
user_name_attribute: response
workcenter:
account:
lock:
failCount: 5
timeoutMinute: 30
password:
expireDay: 90
authExpireMinute: 60
onetime:
tokenTimeout: 1440
notAllowedNames: Admin, Administrator, Administration, root, system
cluster: // A.WORKS WorkCenter HA 설정
enable: false // HA 구성시 true 로 변경
members: // HA 연결 2개 이상 서버 주소 설정
- 127.0.0.1 // WorkCenter Cluster Server#1
- 128.0.0.1 // WorkCenter Cluster Server#2
domain:
name: aworks.com
description: This is the default domain
supervisor: super@aworks.com
webUrl: http://127.0.0.1:8080
mail: // SMTP 메일 연계
setting:
host: 127.0.0.1
port: 25
username:
password:
content:
sender: super@aworks.com
forgotSubject: "[A.WORKS] \ube44\ubc00\ubc88\ud638\uc7ac\uc124\uc815 >\uc548\ub0b4\uc785\ub2c8\ub2e"
schedule:
enable: true
period: 10
message:
providerName: com.aworks.workcenter.api.service.message.spi.FileMessageServiceProvider
multipart:
location: {awork.workcenter.home}/message
netty:
bossCount: 1
workerCount: 10
tcpPort: 9091
backlog: 100
oauth2:
tokenValidity:
access: 18000 # 1800 seconds, 30 minutes
refresh: 28800 # 28800 seconds, 8 hours
socialLoginEnabled: false
packageFile:
uploadPath: ../data/storage # recommend full path
useStorage: false
storage:
host: 127.0.0.1
port: 8090
purge:
## retention policy. use -> >= 1
alarm.month: 1
processReport.month: -1
queueMessage.month: -1
robotLog.month: 1
robotUsage.month: -1
scheduleLog.month: 1
userLog.month: 1
workReport.month: -1
rabbitmq:
managementUrl: http://127.0.0.1:15672/api
exchange: aworks.direct
flushCron: 0 0 0 * * SUN # recommend once of week, when be not using the queue
remoteDesktop:
proxyHost: 127.0.0.1
proxyPort: 4822
vncPort: 5900
scheduler:
autoStartup: true
jmxExport: true
exposeSchedulerInRepository: true
overwriteExistingJobs: true
waitForJobsToCompleteOnShutdown: true
jobStore:
className: org.quartz.impl.jdbcjobstore.JobStoreTX
driverDelegateClass: org.quartz.impl.jdbcjobstore.StdJDBCDelegate
useProperties: false
misfireThreshold: 60000
tablePrefix: QRTZ_
isClustered: false
clusterCheckinInterval: 10000
swagger:
title: A.WORKS WorkCenter Application
description: Cloud RPA A.WORKS WorkCenter Application
basePackage: com.aworks.workcenter.service
license:
licenseUrl:
termsOfServiceUrl:
tokenUrl: http://127.0.0.1:8080/oauth/token
threadpool:
nettyPoolSize: 10
threshold:
statusChange:
queueMessage: 0
springdoc:
packages-to-scan: com.aworks.workcenter.service
swagger-ui:
docExpansion: none
oauth:
clientId: cloudrpa-client1
clientSecret: 7aKTMjx9qkHHipSg
operationsSorter: method
tagsSorter: alpha
logging:
file: ../logs/app.log
management:
endpoints:
web:
exposure:
include: "*"
endpoint:
health:
show-details: always
hawtio:
authenticationEnabled: false
jasypt:
encryptor:
bean: jasyptStringEncryptor
Admin 서비스는 WorkCenter 서버의 상태를 모니터링 할 수 있는 부가 서비스입니다.
{WORKCENTER_HOME}/conf 에 workcenter_admin.yml 파일에 관련 정보입니다.
server:
port: 8090
spring:
application:
name: a.works WorkCenter Admin
boot:
admin:
ui:
brand: <img src="assets/img/aworks.png"><span>WorkCenter Admin</span>
title: WorkCenter Admin
favicon: assets/img/favicon.ico
Storage 서비스는 WorkCenter의 패키지 파일을 저장할 수 있는 부가 서비스 입니다. WorkCenter는 기본적으로 바이너리 파일(Process/Task/Library 등 스크립트)는 DB에 저장합니다. Studio 또는 Mini 설치 파일은 500MB 이상의 대용량이므로 디스크(디렉토리)에 저장하도록 되어 있습니다. 클러스터링 환경에서는 로컬디스크는 공유되지 않음으로 NAS(Network Attached Storage) 또는 SAN(Storage Area Network)에 저장하도록 권장하며, 해당 장비가 없을 때의 대안으로 Storage 서비스를 제공합니다.
server:
netty:
tcpPort: 8090
bossCount: 1
workerCount: 2
keepAlive: true
backlog: 100
storage:
location: ../data/storage
WorkCenter모듈을 시작 하기 위해, 설정한 포트에 대한 방화벽 예외 설정이 필요합니다. 아래의 명령을 커맨드 창에 입력합니다.
$> sudo firewall-cmd –permanent –zone=public –add-port=8080/tcp
$> sudo firewall-cmd –permanent –zone=public –add-port=8081/tcp
$> sudo firewall-cmd –permanent –zone=public –add-port=5672/tcp
$> sudo firewall-cmd –permanent –zone=public –add-port=8090/tcp //optional
$> sudo firewall-cmd –reload
WorkCenter 서비스 실행을 위해 {WORKCENTER_HOME}/bin 디렉터리로 이동합니다.
$> cd {WORKCENTER_HOME}/bin
“start” 옵션을 이용하여, WorkCenter APP 프로세스를 시작합니다.
$> sh workcenter start app
$> sh workcenter start admin // optional
$> sh workcenter start storage // optional
“status” 옵션을 이용하여, WorkCenter 서비스 상태를 확인합니다.
$> sh workcenter status app
$> sh workcenter status admin // optional
$> sh workcenter status storage // optional
정상적으로 실행 중이라면 아래와 같은 결과를 확인 할 수 있습니다.
“log” 옵션을 이용하여, WorkCenter 서버의 로그를 확인합니다.
$> sh workcenter log app
$> sh workcenter log admin //optional
$> sh workcenter log storage //optional
명령어의 실행결과는 아래와 같습니다.
“stop” 옵션을 사용하여 Work Center 서비스를 중지시킬 수 있습니다.
$> sh workcenter stop app
$> sh workcenter stop admin //optional
$> sh workcenter stop storage //optional