본문 바로가기
서버 운영/Linux

Rocky Linux 8.X 에서 PostgreSQL 컴파일 설치

by Infralabs 2024. 3. 22.
반응형

PostgreSQL를 설치할 때, 운영 중인 서버가 외부 통신이 불가능한 경우 혹은 경로를 직접 지정해서 설치하고 싶은 경우에는 컴파일 설치를 진행하는 경우가 있습니다. 이 게시글에서는 Rocky Linux 8.X 환경의 서버에서 PostgreSQL 15.6의 컴파일 설치 과정을 설명합니다.

1. 설치 환경
- OS : Rocky Linux 8.8
- PostgreSQL 설치 버전 : 15.6

2. 경로
- 엔진 : /app/postgres
- 데이터 : /data/postgres
- 로그 : /log/postgres

 

 

1. 소스 파일 다운로드 및 파일 업로드

 

2. 압축 해제

$  tar xvzf postgresql-15.6.tar.gz
 

3. PostgreSQL 설치 계정 생성

# UID, GID : 3000 (임의)
# swadm : DB를 설치하고 운영할 계정 

$ groupadd -g 3000 swadm
$ useradd -u 3000 -g 3000 swadm

$ echo '{패스워드}' | passwd swadm --stdin
 

4. PostgreSQL 설치 디렉토리 생성 및 소유권 변경

# /app : 엔진 경로 
# /data : 데이터 경로 
# /log : 로그 경로 

$ mkdir /app/postgres
$ mkdir /data/postgres
$ mkdir /log/postgres

$ chown -R swadm:swadm /app/postgres
$ chown -R swadm:swadm /data/postgres
$ chown -R swadm:swadm /log/postgres
 

5. 사전 패키지 설치

$ yum install readline readline-devel zlib zlib-devel python3 python3-devel gcc gcc-c++ systemd systemd-devel gettext gettext-devel autoconf wget flex
 

6. configure 설정

./configure --prefix=/app/postgres \
--sysconfdir=/app/prosgres/conf \
--with-python \
--with-openssl \
--with-systemd

# prefix : PostgreSQL 엔진 설치 경로
# sysconfdir : 설정파일이 위치할 경로
 

7. 컴파일 실행 및 설치

$ make
$ make install
 

8. 설치 계정 환경 설정

$ vi .bash_profile

# User specific environment and startup programs
PGHOME=/app/postgres
PGDATA=/data/postgres
PATH=$PGHOME/bin:$PATH:$HOME/.local/bin:$HOME/bin
LD_LIBRARY_PATH=/$PGHOME/lib
PGDATABASE=postgres

export PGHOME
export PGDATA
export PATH
export LD_LIBRARY_PATH
export PGDATABASE

$ source .bash_profile
 

9. PostgreSQL 초기 데이터베이스 생성

  • postgres의 계정 정보, Database 정보, 스키마 정보 등이 포함된 기본 데이터베이스를 생성합니다.

$ initdb -D $PGDATA --encoding='utf8' --locale='ko_KR.UTF-8' --lc-collate='ko_KR.UTF-8' --lc-ctype='ko_KR.UTF-8'
 

10. 외부 접속 허용 IP 추가

  • pg_hba.conf 파일 하단에 허용 IP와 인증 방식을 추가합니다.
$ vi /data/postgres/pg_hba.conf

host    all             all             10.100.0.0/16           md5
 

11. 로그 설정

  • postgresql.conf 에서 아래 부분을 주석 해제 및 수정합니다.

$ vi /data/postgres/postgresql.conf

log_destination = 'stderr' 
logging_collector = on
log_directory = '/log/postgres'
log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log'
log_file_mode = 0600              
log_rotation_age = 1d               
log_rotation_size = 10MB               
log_truncate_on_rotation = on
 

12. PostgreSQL 서버 기동

# 기동
$ pg_ctl start

# 상태 확인
$ pg_ctl status 

# 중지
$ pg_ctl stop

 

반응형