본문 바로가기
데이터베이스/Postgresql

[PostgreSql] 리눅스 postgresql 소스 컴파일 설치

by cbwstar 2021. 12. 14.
728x90
반응형

https://www.postgresql.org/ftp/source/v13.4/

 

PostgreSQL: File Browser

 

www.postgresql.org

postgresql 버전 13.4 centos 에 소스 컴파일 설치

리눅스에서 postgresql 설치할 사용자 계정을 root에서 생성한다.

adduser passdata

사용자 암호생성

passwd passdata

새암호:

새암호 재입력:

 

postgresql 사이트에서 다운받은 postgresql-13.4.tar.gz 파일을 생성된 사용자 계정 홈디렉토리에 전송한다.

 

압축을 푼다 : tar -zxvf postgresql-13.4.tar.gz

cd postgresql-13.4

 

■ 설치할 디렉토리 생성

mkdir -p /apps/postgresql-13.4

mkdir -p /passdata1/pgdata

소유권 변경

cd /passdata1

chown -R passdata:passdata ./pgdata

■ configure 옵션

기본적인 소스 컴파일 옵션은 다음과 같습니다.

--prefix : PostgreSQL 설치할 디렉토리

--sysconfdir :  환경파일 위치. 기본값은 prefix밑의 etc디렉토리.

--datarootdir : 다양한 유형의 읽기 전용 데이터 파일에 대한 루트 디렉토리를 설정합니다. 다음 옵션  일부에 대해서만 기본값을 설정합니다. 기본값은 PREFIX / share입니다.

--datadir : 설치된 프로그램에서 사용하는 읽기 전용 데이터 파일의 디렉토리를 설정합니다. 기본값은 DATAROOTDIR입니다. 이것은 데이터베이스 파일이 설치될 위치와는 아무 관련이 없습니다.

--with-perl : perl 사용할  있도록 합니다.

--with-python : 파이선을 사용할  있도록 합니다

--with-openssl : SSL통신을 사용할  있도록 합니다.

--with-segsize : 세그먼트 크기 (GB) 설정합니다.  테이블은 각각 세그먼트 크기와 동일한 크기의 여러 운영 체제 파일로 나뉩니다. 이렇게하면 많은 플랫폼에 존재하는 파일 크기 제한 문제를 방지   있습니다. 기본 세그먼트 크기  1GB 지원되는 모든 플랫폼에서 안전합니다. 운영 체제에 "largefile"지원이있는 경우 (요즘 대부분 지원)   세그먼트 크기를 사용할  있습니다. 이는 매우  테이블로 작업   사용되는 파일 설명자 수를 줄이는  도움이   있습니다. 그러나 플랫폼  사용하려는 파일 시스템에서 지원하는 것보다  값을 선택하지 않도록주의하십시오. tar 같이 사용할 수있는 다른 도구도 사용 가능한 파일 크기에 대한 제한을 설정할  있습니다. 절대적으로 필요한 것은 아니지만이 값은 2 거듭 제곱이되는 것이 좋습니다. 값을 변경하려면 initdb 필요합니다.

--with-block-size : 블록 크기 (KB) 설정합니다. 이것은 테이블 내의 스토리지  I / O 단위입니다. 기본값  8KB 대부분의 상황에 적합합니다. 그러나 특별한 경우에는 다른 값이 유용   있습니다. 값은 1에서 32 (킬로바이트) 사이의 2 제곱이어야합니다.  값을 변경하려면 initdb 필요합니다.

--with-wal-blocksize :WAL 블록 크기를 KB 단위로 설정합니다. 이것은 WAL 로그 내의 스토리지  I / O 단위입니다. 기본값  8KB 대부분의 상황에 적합합니다. 그러나 특별한 경우에는 다른 값이 유용   있습니다. 값은 1에서 64 (킬로바이트) 사이의 2 거듭 제곱이어야합니다.  값을 변경하려면 initdb 필요합니다.

--enable-nls : 사용자가 원하는 메세지로 번역되게 합니다. 서버의 로케일 동작은 클라이언트 환경이 아니라 서버에서 표시되는 한경 변수에서 결정됩니다.

--with-systemd : CentOS 7이상에서 지원하는 systemd  사용하여 PostgreSQL시작  중지를 합니다.

 

■ 사전 설치 패키지 설치
yum install readline readline-devel 
yum install zlib zlib-devel
yum install openssl openssl-devel
yum install python3 python3-devel
yum install perl systemd-devel
yum install gcc gcc-c++ 
yum install systemd systemd-devel 
yum install gettext gettext-devel autoconf wget flex

 

■ 소스 컴파일 및 설치

./configure --prefix=//apps/postgresql-13.4 --with-python --with-openssl --sysconfdir=/apps/postgresql-13.4/conf

컴파일을 진행합니다. 컴파일 방법은 2가지가 있습니다.

1. 일반설치 : configure에서 설정했던 기능을 설정

make
make check
make install

 

2. 전체 설치 : 문서를 포함하여 모든 기능을 빌드 (확장팩도 같이 설치된다.)

make world
make check
make install-docs
make install-world

 

■ 실행 환경 설정

소유권 변경 :

cd /apps

chown -R passdata:passdata ./postgresql-13.4

계정 전환 : 

su - passdata

계정 환경 설정

vi .bash_profile

 

LANG=ko_KR.UTF-8

 

PGHOME=/apps/postgresql-13.4

PGDATA=/passdata1/pgdata

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

 클러스터 생성

postgresql 실행하려면 클러스터를 생성해야 합니다.  클러스터를 생성해야 비로소 Database 사용할  있습니다.

클러스터 생성  postgresql이라는 데이터베이스가 생성되는데 이것이 기본 catalog database입니다.

 데이터베이스 안에는 postgresql 유저정보, Database정보, 스키마 정보등 모든 정보들이 포함되어 있습니다.

postgresql DB 생성합니다. passdata정으로 변경  실행합니다.

 

- initdb 명령을 이용하는 방법

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

postgresql 기동 명령어

1. 실행 : pg_ctl start

2. 상태확인 : pg_ctl status

3.  종료 : pg_ctl stop

프로세스 확인

ps -ef|grep postgres

config 환경설정

외부에서 접속을 하기 위해서는 허용 아이피 대역을 추가해야 한다.

db설치 경로에 가서

cd /passdata1/pgdata

vi pg_hba.conf 

아래에 접속허용 아이피 추가

host   all              all             192.168.2.0/24          md5

 

동시접속 커넥선 설정

vi postgresql.conf

max_connections = 500    

변경후 db서버 재기동

 

외부접속 허용 설정

postgresql.conf 파일 열어서

#listen_addresses = 'localhost'  로 주석되어 있는 부분을 아래와 같이 수정하여 저장후 재기동한다.

listen_addresses = '*'

728x90
반응형

댓글



"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."

loading