Cook Server

Rocky 리눅스에 PostgreSQL을 설치하기

앤써니킴 2025. 5. 28. 09:04

Rocky Linux에 PostgreSQL을 설치하는 방법은 크게 두 가지가 있습니다.

  1. Rocky Linux 기본 저장소 (AppStream) 사용: 설치가 간편하지만, 제공되는 PostgreSQL 버전이 제한적일 수 있습니다.
  2. PostgreSQL 공식 Yum 저장소 사용: 다양한 버전의 PostgreSQL을 선택하여 설치할 수 있으며, 최신 버전을 사용하기에 용이합니다.

여기서는 PostgreSQL 공식 Yum 저장소를 사용하여 최신 또는 원하는 특정 버전을 설치하는 방법을 중점적으로, 그리고 자세하게 설명해 드리겠습니다. 


1단계: 시스템 업데이트 

먼저, 시스템 패키지를 최신 상태로 업데이트합니다.

sudo dnf update -y

2단계: PostgreSQL 공식 Yum 저장소 추가 

PostgreSQL 프로젝트에서 제공하는 공식 Yum 저장소를 시스템에 추가합니다.

  1. PostgreSQL Yum 저장소 RPM 설치
    PostgreSQL 공식 다운로드 페이지(https://www.postgresql.org/download/linux/redhat/)에서 Rocky Linux 버전에 맞는 명령어를 찾아 실행합니다. Rocky Linux 9의 경우 보통 다음과 같습니다.(만약 Rocky Linux 8을 사용 중이라면 EL-9 부분을 EL-8로 변경해야 할 수 있습니다.)

    sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-9-x86_64/pgdg-redhat-repo-latest.noarch.rpm

  2. (선택 사항) 기본 PostgreSQL 모듈 비활성화
    Rocky Linux 기본 저장소의 PostgreSQL 모듈과 충돌을 방지하기 위해 비활성화합니다.

    sudo dnf -qy module disable postgresql

3단계: PostgreSQL 서버 및 클라이언트 설치 

이제 공식 저장소에서 원하는 버전의 PostgreSQL 서버와 클라이언트 패키지를 설치합니다. (예: PostgreSQL 17)

sudo dnf install -y postgresql17-server postgresql17
  • postgresql17-server: PostgreSQL 서버 프로그램
  • postgresql17: PostgreSQL 클라이언트 프로그램 (psql 등) 및 라이브러리

(만약 16 버전을 원하면 postgresql16-server postgresql16와 같이 숫자를 변경합니다.)


4단계: 데이터베이스 클러스터 초기화 

PostgreSQL을 처음 설치한 후에는 데이터베이스 저장 공간(클러스터)을 초기화해야 합니다.

sudo /usr/pgsql-17/bin/postgresql-17-setup initdb
  • 이 명령어는 /var/lib/pgsql/17/data/ 디렉터리에 데이터베이스 클러스터를 생성하고 기본 설정 파일을 만듭니다.
  • 명령어 경로는 설치한 PostgreSQL 버전에 따라 달라집니다 (/usr/pgsql-<버전>/bin/...).

"Initializing database... OK" 메시지가 나오면 성공입니다.


5단계: PostgreSQL 서비스 시작 및 활성화 

PostgreSQL 서비스를 시작하고, 시스템 부팅 시 자동으로 시작되도록 활성화합니다.

  1. PostgreSQL 시작

    sudo systemctl start postgresql-17

  2. PostgreSQL 부팅 시 자동 시작 활성화
    sudo systemctl enable postgresql-17

  3. PostgreSQL 상태 확인:Active: active (running) 상태인지 확인합니다.

    sudo systemctl status postgresql-17

6단계: 초기 설정 및 접속 확인 

기본적으로 PostgreSQL은 postgres라는 시스템 사용자와 데이터베이스 관리자 사용자를 생성합니다. 초기 접속 및 비밀번호 설정을 진행합니다.

  1. postgres 시스템 사용자 계정으로 전환

    sudo su - postgres

  2. psql 클라이언트로 접속:이제 postgres=# 와 같은 프롬프트가 나타나면 성공적으로 접속된 것입니다.

    psql

  3. 데이터베이스 관리자(postgres) 비밀번호 설정
    보안을 위해 postgres 데이터베이스 사용자의 비밀번호를 설정합니다. psql 프롬프트에서 다음 명령어를 실행합니다. 새로운 비밀번호를 두 번 입력하라는 메시지가 나옵니다.

    \password postgres

  4. psql 종료: \q
  5. postgres 시스템 사용자 계정 로그아웃: exit

7단계: (선택 사항) 원격 접속 설정 

기본적으로 PostgreSQL은 로컬호스트(localhost)에서만 접속을 허용합니다. 만약 다른 서버나 PC에서 이 PostgreSQL 서버로 접속해야 한다면, 다음 두 파일을 수정해야 합니다.

1. pg_hba.conf 파일 수정 (인증 방식 설정)

이 파일은 어떤 호스트에서 어떤 사용자가 어떤 데이터베이스에 어떤 방식으로 인증할지를 제어합니다.

   sudo vi /var/lib/pgsql/17/data/pg_hba.conf


파일 하단에 접속을 허용할 IP 대역과 인증 방식을 추가합니다. 예를 들어, 192.168.1.0/24 대역에서 모든 사용자가 모든 데이터베이스에 scram-sha-256 (권장) 또는 md5 방식으로 접속하도록 허용하려면 다음 줄을 추가합니다.

   # TYPE  DATABASE        USER            ADDRESS                 METHOD
   host    all             all             192.168.1.0/24          scram-sha-256
  • METHODscram-sha-256 (PostgreSQL 10 이상 권장) 또는 md5로 설정해야 비밀번호 기반 인증이 가능합니다.
  • 모든 IP에서 접속을 허용하려면 0.0.0.0/0 (IPv4) 및 ::/0 (IPv6)를 사용하지만, 보안상 매우 위험하므로 특정 IP 대역만 허용하는 것이 좋습니다.

2. postgresql.conf 파일 수정 (리스닝 주소 설정)

이 파일은 PostgreSQL 서버의 동작 방식을 제어합니다. listen_addresses 설정을 변경하여 로컬호스트 이외의 IP에서도 연결을 수신하도록 해야 합니다.

   sudo vi /var/lib/pgsql/17/data/postgresql.conf


#listen_addresses = 'localhost' 부분을 찾아서 주석(#)을 제거하고 값을 '*' (모든 IP) 또는 특정 IP 주소로 변경합니다.

   listen_addresses = '*'


3. PostgreSQL 재시작

설정 파일을 변경한 후에는 반드시 PostgreSQL 서비스를 재시작하여 변경 사항을 적용합니다.

   sudo systemctl restart postgresql-16

8단계: 방화벽 설정 

만약 원격 접속을 허용했다면, 시스템 방화벽(firewalld)에서 PostgreSQL 기본 포트인 5432를 허용해야 합니다.

sudo firewall-cmd --permanent --add-port=5432/tcp
sudo firewall-cmd --reload

이제 Rocky Linux에 PostgreSQL 설치 및 기본 설정이 완료되었습니다. psql 또는 다른 데이터베이스 클라이언트 도구를 사용하여 접속하고 데이터베이스를 생성 및 관리할 수 있습니다.


네, PostgreSQL 16을 설치하셨으니 이제 pgvector 확장 기능을 설치하는 방법을 안내해 드리겠습니다. pgvector는 벡터 유사성 검색을 가능하게 해주는 PostgreSQL 확장 기능입니다.

PostgreSQL 공식 Yum 저장소를 사용하셨다면, 해당 저장소에서 pgvector 패키지도 함께 제공할 가능성이 높습니다.


1단계: pgvector 패키지 설치 📦

PostgreSQL 16 버전에 맞는 pgvector 패키지를 dnf를 사용하여 설치합니다. 패키지 이름은 보통 pgvector_<PostgreSQL 버전> 형식을 따릅니다.

  1. (선택 사항) 패키지 검색:
    정확한 패키지 이름을 확인하고 싶다면 다음 명령어로 검색할 수 있습니다. 출력 결과에서 pgvector_16과 같은 이름을 찾습니다.
  2. sudo dnf search pgvector
  3. 패키지 설치:
    PostgreSQL 16용 pgvector를 설치합니다. 만약 다른 버전의 PostgreSQL을 설치하셨다면 16 부분을 해당 버전으로 변경하십시오.
  4. sudo dnf install pgvector_16 -y

2단계: PostgreSQL 재시작 (권장) 🔄

새로운 확장 기능 파일을 시스템이 확실하게 인식하도록 PostgreSQL 서비스를 재시작하는 것이 좋습니다.

sudo systemctl restart postgresql-16

3단계: 데이터베이스 접속 🔑

pgvector 확장 기능은 데이터베이스 단위로 활성화해야 합니다. pgvector를 사용하려는 특정 데이터베이스에 접속해야 합니다.

  1. postgres 시스템 사용자로 전환:
  2. sudo su - postgres
  3. psql로 데이터베이스 접속:
    pgvector를 활성화할 데이터베이스 이름으로 접속합니다. 만약 아직 데이터베이스를 만들지 않았다면, postgres 데이터베이스에 먼저 설치하거나, createdb <새_데이터베이스_이름> 명령어로 새 데이터베이스를 만들고 접속할 수 있습니다. 여기서는 mydatabase라는 데이터베이스에 설치한다고 가정합니다.(만약 mydatabase가 없다면 psql -d postgres 등으로 접속)
  4. psql -d mydatabase

4단계: pgvector 확장 기능 활성화 ✨

psql 프롬프트에서 CREATE EXTENSION 명령어를 사용하여 pgvector를 활성화합니다.

CREATE EXTENSION vector;

중요: 확장 기능의 이름은 pgvector가 아니라 vector입니다.

성공적으로 실행되면 CREATE EXTENSION 메시지가 나타납니다. 만약 "permission denied" 오류가 발생하면, 데이터베이스 소유자나 슈퍼유저 권한으로 접속했는지 확인하십시오.


5단계: 설치 확인 ✅

pgvector 확장 기능이 성공적으로 설치되고 활성화되었는지 확인합니다. psql 프롬프트에서 다음 명령어를 실행합니다.

\dx


출력되는 확장 기능 목록에 vector가 포함되어 있으면 성공적으로 설치된 것입니다.


6단계: 종료 

psqlpostgres 사용자 세션을 종료합니다.

  1. psql 종료: \q
  2. postgres 사용자 로그아웃: exit


추가 설정 : pgvector

pgvector는 벡터 유사성 검색을 가능하게 해주는 PostgreSQL 확장 기능입니다.

 

1단계: pgvector 패키지 설치 

PostgreSQL 16 버전에 맞는 pgvector 패키지를 dnf를 사용하여 설치합니다. 패키지 이름은 보통 pgvector_<PostgreSQL 버전> 형식을 따릅니다.

  1. (선택 사항) 패키지 검색
    정확한 패키지 이름을 확인하고 싶다면 다음 명령어로 검색할 수 있습니다. 출력 결과에서 pgvector_17과 같은 이름을 찾습니다.

    sudo dnf search pgvector

  2. 패키지 설치
    PostgreSQL 17용 pgvector를 설치합니다. 만약 다른 버전의 PostgreSQL을 설치하셨다면 17 부분을 해당 버전으로 변경하십시오.

    sudo dnf install pgvector_17 -y

2단계: PostgreSQL 재시작 (권장) 

새로운 확장 기능 파일을 시스템이 확실하게 인식하도록 PostgreSQL 서비스를 재시작하는 것이 좋습니다.

sudo systemctl restart postgresql-17

3단계: 데이터베이스 접속 

pgvector 확장 기능은 데이터베이스 단위로 활성화해야 합니다. pgvector를 사용하려는 특정 데이터베이스에 접속해야 합니다.

  1. postgres 시스템 사용자로 전환

    sudo su - postgres

  2. psql로 데이터베이스 접속

    pgvector를 활성화할 데이터베이스 이름으로 접속합니다. 만약 아직 데이터베이스를 만들지 않았다면, postgres 데이터베이스에 먼저 설치하거나, createdb <새_데이터베이스_이름> 명령어로 새 데이터베이스를 만들고 접속할 수 있습니다. 여기서는 mydatabase라는 데이터베이스에 설치한다고 가정합니다.(만약 mydatabase가 없다면 psql -d postgres 등으로 접속)

    psql -d mydatabase

4단계: pgvector 확장 기능 활성화 

psql 프롬프트에서 CREATE EXTENSION 명령어를 사용하여 pgvector를 활성화합니다.

CREATE EXTENSION vector;


중요:
확장 기능의 이름은 pgvector가 아니라 vector입니다.

성공적으로 실행되면 CREATE EXTENSION 메시지가 나타납니다. 만약 "permission denied" 오류가 발생하면, 데이터베이스 소유자나 슈퍼유저 권한으로 접속했는지 확인하십시오.


5단계: 설치 확인 

pgvector 확장 기능이 성공적으로 설치되고 활성화되었는지 확인합니다. psql 프롬프트에서 다음 명령어를 실행합니다.

\dx

출력되는 확장 기능 목록에 vector가 포함되어 있으면 성공적으로 설치된 것입니다.


6단계: 종료 🚪

psqlpostgres 사용자 세션을 종료합니다.

  1. psql 종료:
  2. \q
  3. postgres 사용자 로그아웃:
  4. exit

이제 mydatabase (또는 지정한 데이터베이스)에서 vector 타입을 사용하고 인덱스를 생성하여 벡터 검색 기능을 활용할 수 있습니다.