본문으로 건너뛰기

2.1. 사전 구성

API 게이트웨이 모듈은 JAR 파일로 배포되며 Spring Boot의 Embedded Tomcat이 포함되어 있습니다.

API 게이트웨이 모듈의 실행 환경은 아래와 같습니다.

  • OS: CentOS 7.6
  • Java: JRE 11 (OpenJDK)
  • Maven: 3.2
  • DBMS: PostgreSQL 11

2.1.1. Java 설치

  1. 아래 명령어를 실행하여 Java JRE 11을 설치합니다.
# Java JRE 11 (OpenJDK) 설치
$ sudo yum -y install java-11-openjdk

# 기존 Java 버전 변경 -- 1단계
$ sudo update-alternatives --config java

There are 2 programs which provide 'java'.

Selection Command
-----------------------------------------------
1 java-11-openjdk.x86_64 (/usr/lib/jvm/java-11-openjdk-11.0.17.0.8-2.el7_9.x86_64/bin/java)
*+ 2 java-1.8.0-openjdk.x86_64 (/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.352.b08-2.el7_9.x86_64/jre/bin/java)

Enter to keep the current selection[+], or type selection number: 1

# 기존 Java 버전 변경 -- 2단계
$ sudo update-alternatives --config jre_openjdk

There are 2 programs which provide 'jre_openjdk'.

Selection Command
-----------------------------------------------
1 java-11-openjdk.x86_64 (/usr/lib/jvm/java-11-openjdk-11.0.17.0.8-2.el7_9.x86_64)
*+ 2 java-1.8.0-openjdk.x86_64 (/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.352.b08-2.el7_9.x86_64/jre)

Enter to keep the current selection[+], or type selection number: 1
  1. 아래 명령어를 실행하여 Java JRE 11이 올바르게 설치되었는지 확인합니다.
$ java -version
openjdk version "11.0.17" 2022-10-18 LTS
OpenJDK Runtime Environment (Red_Hat-11.0.17.0.8-2.el7_9) (build 11.0.17+8-LTS)
OpenJDK 64-Bit Server VM (Red_Hat-11.0.17.0.8-2.el7_9) (build 11.0.17+8-LTS, mixed mode, sharing)

2.1.2. Maven 설치

Apache Maven 다운로드 페이지 (링크)에서 제공하는 최신 Maven을 설치합니다(현 시점 기준 3.8.7 버전).

  1. 다운로드 페이지에서 .tar.gz 확장자로 제공되는 파일의 링크를 복사한 뒤, 아래 명령어를 실행합니다.
$ cd ~
$ wget https://dlcdn.apache.org/maven/maven-3/3.8.7/binaries/apache-maven-3.8.7-bin.tar.gz
--2023-01-18 14:57:46-- https://dlcdn.apache.org/maven/maven-3/3.8.7/binaries/apache-maven-3.8.7-bin.tar.gz
  1. 다운받은 파일(apache-maven-3.8.7-bin-tar.gz)를 /opt 폴더에 압축해제합니다.
$ sudo tar xf apache-maven-3.8.7-bin.tar.gz -C /opt
  1. Maven 버전 관리를 용이하게 하기 위해 심볼릭 링크를 생성합니다. 이후 Maven을 업그레이드 할 시 업그레이드 된 버전으로 링크만 변경하면 됩니다.
$ sudo ln -s /opt/apache-maven-3.8.7 /opt/maven
  1. Maven을 정상적으로 사용하기 위해 /etc/profile.d 디렉토리에 maven.sh를 생성하고 아래 내용을 입력합니다.
# Maven 환경변수 추가
$ sudo tee -a /etc/profile.d/maven.sh <<'END'
export JAVA_HOME=/usr/lib/jvm/jre-openjdk
export M2_HOME=/opt/apache-maven
export MAVEN_HOME=/opt/apache-maven
export PATH=${M2_HOME}/bin:${PATH}
END
  1. source 명령어를 사용하여 환경 변수를 불러옵니다.
$ source /etc/profile.d/maven.sh
  1. 아래 명령어를 실행하여 Apache Maven이 정상적으로 설치되었는지 확인합니다.
$ mvn -version
Apache Maven 3.8.7 (b89d5959fcde851dcb1c8946a785a163f14e1e29)
Maven home: /opt/apache-maven
Java version: 11.0.17, vendor: Red Hat, Inc., runtime: /usr/lib/jvm/java-11-openjdk-11.0.17.0.8-2.el7_9.x86_64
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "3.10.0-957.5.1.el7.x86_64", arch: "amd64", family: "unix"

2.1.3. PostgreSQL 설치

2.1.3.1. PostgreSQL 다운로드 및 설치

PostgreSQL은 API 게이트웨이 모듈(JAR 파일)을 실행하는 서버와 별도의 서버에 설치할 수 있습니다.

  1. PostgreSQL YUM Repository를 추가합니다.
$ sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
  1. PostgreSQL 11 서버 패키지를 설치합니다.
$ sudo yum install -y postgresql11-server
  1. PostgreSQL 서버 초기화를 한 뒤, 시작 서비스로 등록하여 부팅 시 자동 실행되도록 합니다.
$ sudo /usr/pgsql-11/bin/postgresql-11-setup initdb
$ sudo systemctl enable postgresql-11

2.1.3.2. PostgreSQL 설정

PostgreSQL을 설치한 서버 외부에서 PostgreSQL 서버에 접속하려면 별도 구성을 진행해야합니다. PostgreSQL을 설치한 서버에서 API 게이트웨이 모듈을 실행하는 경우 이 과정은 건너뛰어도 됩니다.

  1. 외부 접근이 가능하도록 postgresql.conf 파일을 수정합니다.
$ sudo su postgres
$ vi /var/lib/pgsql/11/data/postgresql.conf

postgresql.conf에서 listen_address를 수정하고 필요 시 port를 수정합니다. 이외 다른 설정의 경우 필요 시 수정합니다.

항목설명
listen_addresses접속 가능한 IP를 제한하는 설정입니다. 주석(#)을 제외하고 값으로 '*'를 입력합니다.
port접속 PORT를 수정하고자 할 시에는 주석을 삭제하고 다른 Port를 입력합니다.
  1. 외부에서 PostgreSQL 사용자로 인증할 수 있도록 pg_hba.conf 파일을 수정합니다.
$ sudo su postgres
$ vi /var/lib/pgsql/11/data/pg_hba.conf

ADDRESS는 IP/MASK로 구성하여 특정 IP 또는 IP 대역에 대한 접근을 제한합니다.

예시1) 192.168.0.1/32: 198.168.0.1 IP에서의 허용

예시2) 192.168.0.0/24: 192.168.0.1~255 대역의 IP에서의 접속 허용

METHOD는 유저 인증 방식으로 trust의 경우 별도의 인증을 필요하지 않으며, md5는 비밀번호의 md5 해시값을 통해 인증을 수행합니다.

2.1.3.3. PostgreSQL 서버 실행

설정이 완료되면 PostgreSQL 서버를 실행합니다.

$ sudo systemctl start postgresql-11

2.1.3.4. PostgreSQL 계정 비밀번호 설정

PostgreSQL 서버 설치 시 기본으로 생성되는 postgres 계정의 비밀번호를 설정합니다. 본 메뉴얼에서는 postgres 계정을 사용하는 것으로 가정합니다. 별도 계정을 사용할 경우 계정 생성과 권한 부여를 해야하며 본 메뉴얼에서는 다루지 않습니다.

# PostgreSQL CLI 접속
$ sudo -u postgres psql

# 기본 사용자(postgres) 비밀번호 변경.
# <newpassword>를 원하는 비밀번호로 설정합니다.
postgres=# ALTER USER postgres PASSWORD 'newpassword';

2.1.3.5. 방화벽 설정 (Optional)

설치 서버에 방화벽이 켜져 있을 경우 외부에서 접근할 수 있도록 PostgreSQL 서버의 접근 포트를 개방해야합니다.

postgresql.conf에서 port를 변경하였을 경우에는 해당 포트를 사용하여 명령어를 수행합니다.

$ sudo firewall-cmd --permanent --add-port=<postgresql.conf에서 설정한 port>/tcp
$ sudo firewall-cmd --reload