본문으로 건너뛰기

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