개요

회사의 특정 서버에 postgresql을 설치할 일이 생겼다. Oracle Linux 6.7을 사용하고 인터넷망 사용이 불가능한 조건이다.
따라서 방법을 찾아보다 직접 소스를 빌드하여 postgresql을 설치하기로 했다. 이 방법을 정리해둔다.

postgres 직접 빌드하기

Redhat EPEL 사용이 여의치 않아 소스를 직접 다운받아 빌드하기로 한다.

소스 받기

https://www.postgresql.org/ftp/source/에서 원하는 버전의 소스를 받는다. 필자는 Centos 6용 9.5.6 버전을 받았다.

빌드

소스를 다운로드 받아 압축을 푼 뒤 디렉토리에서 아래의 명령어들을 실행한다.

$ ./configure
$ ./make
$ ./make install

그러면 /usr/local/pgsql/ 위치에 바이너리가 설치된다.

Postgres 구동하기

필자 회사에서는 /pghome으로 디스크가 마운트가 새로 되어 이 디렉토리를 데이터 저장용도로 쓰기로 하였다.
이를 염두해 두고 postgres 구동을 준비하고 실행하는 것을 진행해보자.

데이터 초기화

아래 명시한 환경변수를 읽어 postgres가 /pghome/data 위치에 기본 환경설정 파일을 포함하여 Init을 수행한다.

$ export PGDATA=/pghome/data
$ initdb --lc-collate=en_US.utf8 --lc-ctype=en_US.utf8 -E UTF8

데이터베이스 생성

아래와 같이 데이터베이스를 생성한다.

$ createdb -E UTF8 -T template0 --lc-collate=en_US.utf8 --lc-ctype=en_US.utf8 redash

Remote 접속을 위한 환경설정

설정파일 변경

다른 원격 장비에서도 DB에 접근하기 위해 아래의 환경설정을 진행한다.

/pghome/data/postgresql.conf

아래 내용을 추가한다.

listen_addresses = '*'

/pghome/data/pg_hba.conf

아래 내용 추가한다.

host  all  all 0.0.0.0/0 md5

데몬 구동

postgres는 root계정으로 실행을 할 수 없다. 따라서 postgres라는 계정을 만들어서 이를 통해 실행하자.

$ /usr/local/pgsql/bin/pg_ctl -D /pghome/data -l logfile start

반대로 데몬 종료는 아래와 같이 가능하다.

$ /usr/local/pgsql/bin/pg_ctl -D /pghome/data -l logfile stop

검증하기

아래 명령을 통해 postgres가 정상 실행됨을 확인 할 수 있다.

$ netstat -nlp | grep 5432

원격으로는 postgresql://ID:PW@IP/postgres 규격으로 접속할 수 있다.