본 문서는 PostgreSQL을 Redhat 계열의 CentOS Linux, Debian 계열의 Ubuntu Linux, Windows Platform에 설치하는 방법을 설명합니다.
Linux Platform
Linux Platform에서는 3가지의 설치방법이 있습니다.
Package Manager를 통한 설치
설치되는 Package간의 의존성(Dependency)을 자동 해소 할 수 있는 CentOS의 yum(Yellodog Update Modified), Ubuntu의 apt(Advanced Packaging Tool)와 같은 Package Manager를 사용합니다. 이러한 Package Manager를 사용하기 위해서는 PostgreSQL Package Repository에 연결이 가능하도록 외부인터넷 사용이 가능해야 합니다. 이 방법은 PostgreSQL Major 버전의 최신 Minor 버전으로 설치됩니다.
개별 Package를 통한 설치
PostgreSQL 설치 Package를 직접 다운받아서 CentOS의 rpm(RedHat Package Manager), Ubuntu의 dpkg(Debian Package)를 사용하여 설치할 수 있습니다. PostgreSQL Package가 준비되어 있으면, 외부인터넷 사용이 불가능한 상황에서도 설치가 가능하며, PostgreSQL 버전을 선택하여 설치가 가능합니다. 단, Package간의 의존성(Dependency)을 사용자가 직접 해결해야 합니다.
PostgreSQL Source File을 통한 설치
PostgreSQL 커뮤니티(postgresql.org)에서 Source File을 다운받을 수 있습니다. Source File을 통해 PostgreSQL 설치를 위한 파일을 Build 할 수 있습니다. Build를 위한 Library만 준비되어 있으면, 의존성(Dependency)에 상관없이 PostgreSQL 버전을 선택하여 설치할 수 있습니다.
💡 CentOS등 RedHat 계열의 Linux는 배포 정책으로 인해 자동으로 PostgreSQL Database 초기화 및 서비스가 자동으로 시작되지 않기 때문에, Database 초기화 및 서비스 자동 시작을 수동으로 진행해야 합니다.
반면에 Ubuntu등 Debian 계열의 Linux는 PostgreSQL Install 시 PostgreSQL Database 초기화 및 서비스 자동 시작이 되므로 initdb을 수동으로 수행할 필요가 없습니다.
Windows Platform
Windows Platform에서는 2가지의 설치방법이 있습니다.
설치관리자를 통한 설치
설치하고자 하는 PostgreSQL 버전 설치파일을 설치관리자 GUI를 통해 몇 번의 클릭만으로 설치할 수 있습니다.
Binary File(Zip Archive)를 통한 설치
Linux Platform의 Source File과 비슷하지만, 설치 파일을 위한 Build는 필요없습니다. 단순히 Binary File을 압축 해제하여, Initialzation만 수행하는 것으로 PostgreSQL을 사용할 수 있습니다.
각 Platform별 최초 설치 시 특이사항을 정리하면 아래 표와 같습니다.
ㅤ
Linux
Linux
Linux
Linux
Windows
Windows
ㅤ
yum
apt
rpm/dpkg
Source File
설치관리자
Binary File
설치 Package
Repository
Repository
Repository
개별준비
개별준비
개별준비
개별준비
의존성
자동해결
자동해결
사용자해결
사용자해결
사용자해결
사용자해결
설치버전
Major별 최신 Minor
Major별 최신 Minor
선택
선택
선택
선택
Engine 경로
변경불가
변경불가
변경불가
변경가능
변경가능
변경가능
Data Directory 경로
변경가능
변경불가
변경가능
변경가능
변경가능
변경가능
특이사항
인터넷연결필수
인터넷연결필수
ㅤ
ㅤ
ㅤ
ㅤ
PostgreSQL 설치 시 Engine Directory, Data Directory는 기본 경로로 설치가 되며 기본 경로는 아래 표와 같이 Platform 별로 상이 합니다. Directory 경로에 표시되는 VERSION은 Major버전을 의미합니다.
기본 설치 시 Directory
ㅤ
CentOS
(Redhat 계열)
Ubuntu
(Debian 계열)
Windows
Engine
/usr/pgsql-{VERSION}
/usr/lib/postgresql/{VERSION}
C:\Program Files\PostgreSQL\{VERSION}
Data
/var/lib/pgsql/{VERSION}/data
/var/lib/postgresql/{VERSION}/main
C:\Program Files\PostgreSQL\{VERSION}\data
Configuration
/var/lib/pgsql/{VERSION}/data
/etc/postgresql/{VERSION}/main/postgresql.conf
C:\Program Files\PostgreSQL\{VERSION}\data
서비스명
postgresql-{VERSION}
postgresql@{VERSION}-main
postgresql-x64-{VERSION}
이 후 부터는 각 Platform 별로 PostgreSQL 설치 방법을 설명합니다. 설명하는데 사용되는 버전은 다음과 같으며, Linux는 Redhat계열과 Debian계열로 나누어 설명합니다.
OS : CentOS 7.9, Ubuntu 22.04, Windows 10
DB : PostgreSQL 14.5
Install PostgreSQL on Linux (CentOS - yum)
Redhat 계열 Linux에서는 PostgreSQL yum Repository에서 yum을 통해 PostgreSQL을 설치 할 수 있습니다. PostgreSQL yum Repository는 RedHat Enterprise Linux, Rocky Linux, CentOS(6 and 7 only), Oracle Linux, Redora에서만 사용이 가능합니다. yum으로 설치 시 Package 간의 의존성(Dependency)에 의해 여러 Pacakage가 설치됩니다.
Package 의존성(Dependency)에 의해 설치되는 Package 종류
Package명
설명
postgresql14-libs
모든 PostgreSQL Client 프로그램에서 필요한 공유 라이브러리
postgresql14
PostgreSQL Client 프로그램 및 라이브러리
postgresql14-server
PostgreSQL Server 생성 및 실행에 필요한 프로그램
libpq.so.5
PostgreSQL C언어 Client 라이브러리
추가 설치 가능한 PostgreSQL Package 종류
Package명
설명
postgresql14-contrib
PostgreSQL과 함께 배포되는 Source 및 바이너리
postgresql14-devel
PostgreSQL 개발 헤더 파일 과 라이브러리
postgresql14-docs
PostgreSQL에 대한 추가 문서
postgresql14-llvmjit
PostgreSQL에서 JIT(Just-in-time) 컴파일 지원
postgresql14-odbc
PostgreSQL ODBC 드라이버
postgresql14-plperl
PostgreSQL용 Perl 절차 언어(Procedural Language Perl)
postgresql14-plpython3
PostgreSQL용 Python3 절차 언어(Procedural Language Python3)
postgresql14-pltcl
PostgreSQL용 Tcl 절차 언어(Procedural Language Tcl)
postgresql14-tcl
PostgreSQL용 Tcl Client 라이브러리
postgresql14-test
PostgreSQL과 함께 배포되는 테스트 제품군
1. PostgreSQL yum Repository Install
실행결과
2. PostgreSQL Install
실행결과
3. PostgreSQL Initialization
기본 Data Directory 사용
실행결과
사용자 지정 Data Directory 사용
1) Data Directory 생성
💡 initdb 수행 시 postgres 계정 소유의 디렉토리 내에서는 Data Directory를 생성하지만, postgres 계정 소유가 아닌 디렉토리에는 Data Directory를 생성하지 못하고 Permission denied 에러가 발생합니다.
2) PostgreSQL Initialization
실행결과
3) PostgreSQL Service 파일 내용수정
4. PostgreSQL 기동
💡 ※ systemctl을 통한 PostgreSQL 기동제어
systemctl { enable | start | stop | status }{ PostgreSQL-Service-Name }
5. PostgreSQL 접속 및 확인
실행결과
Install PostgreSQL on Linux (CentOS - rpm)
인터넷 연결이 가능한 장비(PC)에서 PostgreSQL을 설치 하기 위한 rpm을 다운로드한 후 PostgreSQL을 설치 하고자 하는 Server로 옮겨 설치 작업을 할 수 있습니다. rpm으로 설치 시 Package간의 의존성(Dependency)을 주의해야 합니다. yum을 통해 설치하는 방법과는 파일 준비과정만 다릅니다.
1. PostgreSQL Package Download
PostgreSQL yum Repository(yum.postgresql.org/packages)에서 아래 표에 나열된 OS 버전에 맞는 Package를 다운로드하거나, 인터넷 연결이 가능한 Server에서 yum을 통해 Package를 다운로드할 수 있습니다.
실행결과
Package명
설명
postgresql14-libs
모든 PostgreSQL Client 프로그램에서 필요한 공유 라이브러리
postgresql14
PostgreSQL Client 프로그램 및 라이브러리
postgresql14-server
PostgreSQL Server 생성 및 실행에 필요한 프로그램
2. PostgreSQL Install
Package 설치 시 Package간의 의존성(Dependency) 문제로 인해 postgresql14-libs → postgresql14 → postgresql14-server 순으로 설치를 합니다.
실행결과
3. PostgreSQL Initialization
기본 Data Directory 사용
실행결과
Data Directory 사용자 지정
1) Data Directory 생성
💡 initdb 수행 시 postgres 계정 소유의 디렉토리 내에서는 Data Directory를 생성하지만, postgres 계정 소유가 아닌 디렉토리에는 Data Directory를 생성하지 못하고 Permission denied 에러가 발생합니다.
2) PostgreSQL Initialization
실행결과
3) PostgreSQL Service 파일 내용 수정
4. PostgreSQL 기동
💡※ systemctl을 통한 PostgreSQL 기동제어
systemctl { enable | start | stop | status }{ PostgreSQL-Service-Name }
5. PostgreSQL 접속 및 확인
실행결과
Install PostgreSQL on Linux (Ubuntu - apt)
Debian 계열 Linux에서는 PostgreSQL apt Repository에서 apt을 통해 PostgreSQL을 설치 할 수 있습니다.
Package 의존성(Dependency)에 의해 설치되는 Package 종류
Package명
설명
libpq5
PostgreSQL C언어 Client 라이브러리
libcommon-sense-perl
Perl 프로그램에 위한 모듈
libjson-perl
JSON 형식 Data를 조작하기 위한 모듈
pgdg-keyring
apt.postgresql.org Keyring
postgresql-client-common
PostgreSQL Clinet 버전 관리자
postgresql-client-14
PostgreSQL Client 프로그램 및 관리 프로그램 포함
libtypes-serialiser-perl
일반적인 질렬화 형식에 대한 간단한 데이터 유형을 제공하는 모듈
libjson-xs-perl
XML의 대안으로 사용되는 JSON::XS 형식 데이터를 조작하기 위한 모듈
libllvm14
PostgreSQL에서 JIT(Just-in-time) 컴파일 지원
postgresql-common
PostgreSQL Database Cluster Manager
postgresql-14
PostgreSQL Server 생성 및 실행에 필요한 프로그램
libsensors-config
lm-sensor 설정 파일(온도, 전압, 팬속도 등)
libsensors5
lm-sensor(온도,전압,팬 등)를 읽기 위한 라이브러리
ssl-cert
OepnSSL
sysstat
Linux용 시스템 성능 도구
1. PostgreSQL apt Repository Install
실행결과
2. PostgreSQL Install
실행결과
💡 Ubuntu의 경우 PostgreSQL Install 단계에서 initdb와 서비스 등록까지 수행되므로 PostgreSQL Initialization, PostgreSQL 서비스 기동 단계 수행이 필요 없습니다. 따라서 Data Directory를 변경하려면 설치 후 경로를 바꾸고 재기동하는 작업이 필요합니다.
3. PostgreSQL 접속 및 확인
실행결과
Install PostgreSQL on Linux (Ubuntu - dpkg)
rpm을 통한 설치와 마찬가지로 Debian 계열의 .deb Package 파일을 dpkg를 통해 PostgreSQL을 설치 할 수 있습니다. Package간의 의존성(Dependency)를 주의해야 하며, apt를 통해 설치하는 방법과는 파일 준비과정만 다릅니다.
1. PostgreSQL Package Download
PostgreSQL apt Repository(apt.postgresql.org/pub/repos/apt/pool/main/p/)에서 아래 표에 나열된 OS 버전에 맞는 Package를 다운로드하거나, 인터넷 연결이 가능한 Server에서 apt를 통해 Package를 다운로드할 수 있습니다.
실행결과
Package명
설명
pgdg-keyring
apt.postgresql.org Keyring
postgresql-client-common
PostgreSQL Clinet 버전 관리자
postgresql-client-14
PostgreSQL Client 프로그램 및 관리 프로그램 포함
postgresql-common
PostgreSQL Database Cluster Manager
postgresql-14
PostgreSQL Server 생성 및 실행에 필요한 프로그램
2. PostgreSQL Install
Package간의 의존성(Dependency)에 따라 아래 나열된 순서로 Package를 설치합니다.
실행결과
3. PostgreSQL Initialization
기본 Data Directory 사용
Ubuntu의 경우 PostgreSQL Install 시 initdb와 서비스 등록이 같이 진행됩니다. postgresql-14 Package를 설치해야 initdb 응용프로그램이 생성되어 PostgreSQL Database Initialization을 할 수 있습니다. postgresql-14 Package는 libllvm14 Library를 필요로 하기 때문에, 먼저 libllvm14 Library Package를 설치합니다.
실행결과
위와 같이 PostgreSQL Configuration 기본 설정으로 postgresql-14 Package를 설치하면, 기본 Data Directory를 사용합니다. 기본 Data Directory는 /var/lib/postgresql/14/main입니다.
사용자 지정 Data Directory
아래 예시와 같이 PostgreSQL Configuration 설정을 변경한 후 postgresql-14 Package를 설치하면, Data Directory를 사용자가 지정하여 Database Initialization을 할 수 있습니다.
실행결과
4. PostgreSQL 접속 및 확인
실행결과
Install PostgreSQL on Linux (Source File)
Source File을 통해 설치 파일을 Build하여 PostgreSQL 설치를 할 수 있습니다. gcc, make, readline(생략가능), zlib(생략가능) 등 Build를 위해 필요한 OS Package가 우선 설치되어 있어야 합니다.
1. PostgreSQL Source File Download
PostgreSQL 다운로드센터(www.postgresql.org/ftp/source/)에서 PostgreSQL 버전별로 Source File을 다운받을 수 있습니다. 테스트에 사용된 Source File은 postgresql-14.5.tar.gz입니다.
2. PostgreSQL OS계정 생성
3. PostgreSQL Engine Directory 생성
4. PostgreSQL 설치파일 압축해제
5. PostgreSQL Install Configure 설정
PostgreSQL Install Configure 설정은 PostgreSQL Server 설치 시 필요한 내용을 Build하는 부분으로 이 단계에서 필요한 기능을 포함하여 Build 할 수 있습니다. 예를들어 JIT 기능을 포함하고자 할 경우 --with-llvm 옵션을 추가하고, LZ4압축기능을 포함하고자 할 경우 --with-lz4 옵션을 추가하여 Install File을 Build 할 수 있습니다. configure의 옵션은 configure --help로 확인 할 수 있습니다.
실행결과에러관련configure --help
6. PostgreSQL Server 설치
7. PostgreSQL Database Initialization
실행결과
8. PostgreSQL 기동
실행결과
9. PostgreSQL 접속 및 확인
실행결과
10. PostgreSQL Service 등록
서비스등록
서비스 기동제어
Install PostgreSQL on Windows (설치관리자)
Windows에 PostgreSQL 설치는 설치관리자를 통해 매우 쉽게 수행할 수 있습니다. 설치 프로그램으로 PostgreSQL Server, pgAdmin을 설치 할 수 있으며, PostgreSQL 도구 및 드라이버등을 다운로드하고 설치하는데 사용할 수 있는 StackBuilder도 설치할 수 있습니다. StackBuilder에는 Management, Integration, Migration, Replication, Geospatial, Connector등의 도구가 포함되어 있습니다.
1. 설치파일 준비
EDB(www.enterprisedb.com/downloads/postgres-postgresql-downloads)에서 PostgreSQL 14.5 설치파일을 다운로드 합니다.
Stack Builder : Management, integration, Migration, Replication, Geospatial 등 포함
Command Line Tools : psql, pg_dump, pg_restore와 같은 Command Line Interface 포함
Step 4. PostgreSQL Data Directory 지정 후 Next 버튼 클릭
Data 저장경로로, 기본값은 C:\Program Files\PostgreSQL\{VERSION}\data 입니다.
Step 5. Database Superuser인 postgres 계정의 비밀번호 지정 후 Next 버튼 클릭
Step 6. PostgreSQL Server에서 사용할 Port 지정 후 Next 버튼 클릭
Step 7. Database에서 사용하는 기본 Locale 선택 후 Next 버튼 클릭
PostgreSQL 사용 기본언어로 기본값은 Default locale이며, 이는 OS설정 값을 따릅니다.
Step 8. Step 2부터 Step 7까지설정 한 내용 확인 후 Next 버튼 클릭
Step 9. Next 버튼 클릭 하여 설치 실행
Step 10. Stack Builder를 실행 할지 여부 선택 후 Finish 버튼 클릭
PostgreSQL 접속 및 확인
pgAdmin이나 psql과 같은 Client 프로그램을 통해 설치한 PostgreSQL의 접속 및 버전을 확인합니다.
Install PostgreSQL on Windows (Binary File)
설치관리자를 통하지 않는 Binary File(Zip Archive)에 의한 PostgreSQL 설치는 Linux Platform의 Source File과 비슷하지만, 설치파일을 위한 Build는 필요 없습니다. 단순히 Binary File을 압축해제 하여, Initialzation만 수행하는 것으로 PostgreSQL을 사용할 수 있습니다.
설치 파일 준비
EDB(https://www.enterprisedb.com/download-postgresql-binaries)에서 PostgreSQL 14.4 Binary File을 다운로드 합니다.
PostgreSQL Install
아래 단계 순으로 PostgreSQL을 설치합니다.
Step 1. 다운받은 Binary File 압축 해제
Step 2. 압축 해제 된 폴더 하위에 있는 pgsql 폴더를 원하는 위치로 이동 및 폴더명 변경
Step 3. PostgreSQL Data Directory로 사용할 폴더 생성
Step 4. PostgreSQL Cluster 구성을 위한 초기화(initdb)
💡 “VCRUNTIME140.dll이(가) 없어 코드 실행을 진행할 수 없습니다. 프로그램을 다시 설치하면 이 문제가 해결될 수 있습니다.”
Microsoft Visual Studio 2015의 VC++ 런타임 라이브러리가 없을 경우 위와 같은 에러가 발생합니다. Microsoft 다운로드 센터(https://www.microsoft.com/ko-kr/download/details.aspx?id=48145)에서 Visual Studio 2015용 Visual C++ 재배포 가능 패키지를 다운로드받아 설치하면 해결됩니다.
Step 5. PostgreSQL 서비스 등록 및 서비스 실행(명령 프롬프트 관리자권한으로 실행)
PostgreSQL 접속 및 확인
pgAdmin이나 psql과 같은 Client 프로그램을 통해 설치한 PostgreSQL의 접속 및 버전을 확인합니다.
부록 1. 외부 접속을 위한 설정 파일 변경
PostgreSQL을 설치했다면, 기본적으로 외부 접속은 불가능하게 설정되어 있습니다. 즉, PostgreSQL Server가 설치된 Local에서만 접속이 가능합니다. 외부 접속을 가능하게 하기 위해서는 PostgreSQL Configuration 파일을 수정한 후 서비스를 재기동해야 합니다. Configuration File의 기본 위치는 아래와 같으며 Install Overview에 설명되어 있습니다.
CentOS : /var/lib/pgsql/{VERSION}/data
Ubuntu : /var/lib/postgresql/{VERSION}/main
Windows : C:\Program Files\PostgreSQL\{VERSION}\data
1. 방화벽(Firewalld) 개방
방화벽에서 PostgreSQL Server가 사용하는 Port를 개방합니다.
실행결과
2. 사용자(Role) 비밀번호 설정
실행결과
3. postgresql.conf 변경
💡 PostgreSQL 참고 자료 postgresql.conf(blog.ex-em.com/1649) 내용을 확인할 수 있습니다.
4. pg_hba.conf 변경
💡 PostgreSQL 참고 자료 pg_hba.conf(blog.ex-em.com/1650) 내용을 확인할 수 있습니다.
5. PostgreSQL 재기동
부록 2. Extension 사용을 위한 준비
본 부록에서는 pg_stat_statements와 pgcrypto Extension을 설치하는 과정을 설명합니다.
CentOS - PostgreSQL 설치 시 Extension 설치
1. PostgreSQL Contrib Package 설치
** yum을 통한 Contrib Package 설치
실행결과
** rpm을 통한 Contrib Package 설치
Contrib Package 다운로드
실행결과
Contrib Package 설치
실행결과
2. pg_stat_statements, pgcrypto Extension 설치
실행결과
3. Extension 설치확인
실행결과
Ubuntu - PostgreSQL 설치 시 Extension 설치
1. PostgreSQL Contrib Package 설치
** apt를 통한 Contrib Package 설치
실행결과
** dpkg를 통한 Contrib Package 설치
Contrib Package 다운로드
실행결과
Contrib Package 설치
실행결과
2. pg_stat_statements, pgcrypto Extension 설치
실행결과
3. Extension 설치확인
실행결과
Source File로 PostgreSQL 설치 시 Extension 설치
PostgreSQL을 Source File에는 PostgreSQL에서 기본으로 제공하는 Extension Source File이 같이 제공됩니다. PostgreSQL가 설치된 디렉토리 contrib 디렉토리에 Extension Source File이 존재합니다.
Makefile을 참조하여 Extension을 설치할 수 있습니다. Makefile은 각 디렉토리마다 존재합니다. contrib 디렉토리에 존재하는 Makefile을 참조하여 모든 Extension을 설치하거나, 각 Extension 디렉토리에 존재하는 Makefile을 참조하여 해당 Extension만 설치할 수 있습니다.
본 부록에서는 pg_stat_statements과 pgcrypto Extension을 설치하는 과정을 설명합니다.
1. pg_stat_statements Extension 준비
실행결과
2. pgcrypto Extension 준비
실행결과
3. pg_stat_statements, pgcrypto Extension 설치
실행결과
4. Extension 설치확인
실행결과
부록 3. Windows Stack Builder 설치
PostgreSQL 설치 마지막 단계 “Completing the PostgreSQL Setup Wizard”에서 Stack Builder 설치를 체크하고 종료하게 되면, Stack Builder에 포함된 추가모듈을 설치 할 수 있습니다.
Stack Builder로 설치 가능한 모듈
카테고리
선택가능항목
Add-ons, tools, and Utilities
- EDB Language Pack
- pgAgent(64bit) for PostgreSQL
- pgBouncer
Database Drivers
- Npgsql
- pgJDBC
- psqlODBC (32bit/64bit)
Database Server
32bit/64bit의 PostgreSQL Server (9.6~14버전까지의 최신 Minor 버전)
Registration-required and trial products
(EnterpriseDB Tools)