• 개발 서버 아키텍처
    • AWS Resource List
      • EC2 #01 (Amazon Linux2)
      • EC2 #02 (RHEL8)
      • EC2 #03 (RHEL8)
      • RDS #01 (PostgreSQL 13.7)




  • PostgreSQL 13 버전 설치

### Repository 설치
$ sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm


### Repository Enable
$ sudo yum repolist -y enabled

# PostgreSQL 서버 설치
$ sudo yum install -y postgresql13-server

### 설치 확인
$ ls /usr/pgsql-13
$ id postgres
uid=26(postgres) gid=26(postgres) groups=26(postgres)

### postgres 유저 패스워드 설정
$ sudo passwd postgres
Changing password for user postgres.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.

>> '올빼미3883' 으로 설정

### initdb
$ sudo /usr/pgsql-13/bin/postgresql-13-setup initdb
$ sudo cat /var/lib/pgsql/13/initdb.log
... (중략)
syncing data to disk ... ok
Success. You can now start the database server using:
/usr/pgsql-13/bin/pg_ctl -D /var/lib/pgsql/13/data/ -l logfile start

### PostgreSQL 접속 환경 설정 (pg_hba.conf, postgresql.conf)
$ cd /var/lib/pgsql/13/data/
$ vi pg_hba.conf
-INSERT-
... 중략 ...
# IPv4 local connections:
host all all 0.0.0.0/0 trust
:wq

$ vi postgresql.conf
-INSERT-
... 중략 ...
# - Connection Settings -
listen_addresses = '*' # what IP address(es) to listen on;
# comma-separated list of addresses;
# defaults to 'localhost'; use '*' for all
# (change requires restart)
#port = 5432
:wq


### Database 시작 / 중지
$ /usr/pgsql-13/bin/pg_ctl -D /var/lib/pgsql/13/data/ -l logfile start
$ /usr/pgsql-13/bin/pg_ctl -D /var/lib/pgsql/13/data/ -m immediate stop
-> 쉘 스크립트로 만들어 관리

## 방화벽 끄기 & 상태확인

$ systemctl disable firewalld && systemctl stop firewalld
$ systemctl status firewalld





  • Docker 설치

### STEP1. old version 도커 제거

$ sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine


### STEP2. Set up Repository

$ sudo yum install -y yum-utils
$ sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo



### STEP3. Install Docker Engine && Start Docker

$ yum update -y && yum install -y docker-ce docker-ce-cli containerd.io
$ systemctl restart docker && systemctl enable --now docker


  • Docker 설치 확인 & Amazon Linux 이미지 Pull

$ sudo systemctl status docker
$ sudo docker version

## Amazon Linux 이미지 Pull
$ docker pull amazonlinux

## 다운로드 된 Image 확인
$ docker iamges

REPOSITORY TAG IMAGE ID CREATED SIZE
amazonlinux latest 01bdb519be20 12 days ago 164MB



$ sudo docker run -it -d --privileged -p 8056:8056 -p 18080:18080 -p 5543:5543 -p 19000:19000 --name TEST
amazonlinux:latest /bin/bash

$ sudo docker ps -al

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
5e64f4f43be4 amazonlinux:latest "/bin/bash" 5 seconds ago Up 5 seconds 0.0.0.0:5543->5543/tcp, 0.0.0.0:8056->8056/tcp, 0.0.0.0:18080->18080/tcp, 0.0.0.0:19000->19000/tcp TEST

## Container 실행 확인
$ sudo docker exec -it --user root {CONTAINER ID} /bin/bash
예시 > sudo docker exec -it --user root 5e64f4f43be4 /bin/bash

$ mkdir /app

$ exit


  • 컨테이너 내부로 Install 파일 전송 & 확인

$ docker cp /{installfile_dir}/* {container_id}:/app

예시> docker cp /install/{파일명} 5e64f4f43be4:/app

$ sudo docker exec -it --user root {CONTAINER ID} /bin/bash
예시 > sudo docker exec -it --user root 5e64f4f43be4 /bin/bash


  • 설치파일 압축 해제
    • 기본 이미지에 tar, xz, gzip 패키지 없음 (설치 필요) - yum install -y tar xz gzip

$ cd /app
$ tar -xvzf apiportal.tgz (API Portal 압축파일)
$ tar -xvzf weasym-server.tgz (weasyM 압축파일)


/app/apiportal/dbschema/dbschema.txt 필요




  • API Portal 설정
    • /app/apiportal/tomcat/webapps/ROOT/WEB-INF/classes/ 디렉토리 아래 위치
      • application.properties : SMTP 서버 ip 정보

      • databasesource.properties : DB 서버 정보

      • logback.xml : /logs 절대 경로 정보

      • schedulejob.properties : GW 서버 ip 주소 필요
-> 이외 세부 설정은 관리자 가이드 참고 (HMM_API API_Portal_v1.1.docx)

    • API Portal bash_profile 환경변수 설정

# JAVA
export JAVA_HOME=/app/apiportal/jdk <<< 수정 필요 (apiportal 압축파일을 푼 절대경로로 수정)
export CLASSPATH=.:$JAVA_HOME/lib/tools.jar
export PATH=$JAVA_HOME/bin:$PATH
export CATALINA_OUT=/dev/null
export CATALINA_OPTS="-Djava.library.path=/sw/aprlib"
export JAVA_OPTS=" -Xms4096m -Xmx4096m "
export JAVA_OPTS=" -Djava.net.preferIPv4Stack=true ${JAVA_OPTS} "
export LOG4J_FORMAT_MSG_NO_LOOKUPS=true
export LD_LIBRARY_PATH=/sw/aprlib:$LD_LIBRARY_PATH
# alias
alias gotomcat='cd /app/apiportal/tomcat' <<< 수정 필요
alias goclasses='cd /app/apiportal/tomcat/webapps/ROOT/WEB-INF/classes' <<< 수정 필요


    • API Portal DB 설정 (현 Oracle -> PostgreSQL 필요)
      • /{install_dir}/apiportal/dbschema 아래 dbschema.txt 파일 백업 (Oracle DDL문)


  • weasyM 설정
    • OS 커널 파라미터 수정

$ cd /etc/secutiry
$ vi limits.conf
… 중략 …
* soft nofile 65536
* hard nofile 65536
* soft nproc 131072
* hard nproc 131072

$ cd /etc
$ vi sysctl.conf
… 중략 …
fs.file-max = 6815744
kernel.sem = 250 32000 100 128
kernel.shmmni = 4096
kernel.shmall = 1073741824
kernel.shmmax = 4398046511104
kernel.panic_on_oops = 1
net.core.rmem_default = 104857600
net.core.rmem_max = 33554432
net.core.wmem_default = 104857600
net.core.wmem_max = 33554432
net.ipv4.conf.all.rp_filter = 2
net.ipv4.conf.default.rp_filter = 2
fs.aio-max-nr = 1048576
net.ipv4.ip_local_port_range = 9000 65500
net.ipv4.conf.all.arp_notify = 1
net.ipv4.tcp_rmem = 4096 8388608 33554432
net.ipv4.tcp_wmem = 4096 8388608 33554432
net.ipv4.tcp_window_scaling = 1
net.ipv4.tcp_moderate_rcvbuf = 1
net.ipv4.tcp_sack = 1
net.ipv4.tcp_max_syn_backlog = 30000


$ system -p


    • weasyM 설정 파일 수정
      • {Install_dir}/weasym-server/conf 아래 위치
      • sysconf.properties 수정


      • {install_dir}/weasym-server/haproxy 설정파일 수정


    • DB 연결 수정 (PostgreSQL)
      • {install_dir}/weasym-server/lib/weasym-server.jar 다운로드 후 반디집으로 열기
      • application.properties 우클릭 편집 DB 연결 부분 수정 후 저장

    • DB Dump 파일 백업
      • {설치 dir}/weasym-server/packages 아래 public.dump 백업

    • DB Object 생성 및 기초 데이터 로드 (PostgreSQL 13 설치 된 VM - RDS 에서 실행)

## pg_restore 명령을 통해 데이터와 DB Object를 로드

$ /usr/pgsql-14/bin/pg_restore --verbose --clean --no-acl --no-owner -h 10.68.239.212 -U postgres -d postgres public.dump







  • weasyM 패키지와 weasyMAgent 폴더는 각 EC2 instance #02 / #03에 설치 및 업로드
    • 가이드 참고