본문 바로가기

학습/DataBase

Rocky9에 PostgreSQL, PostGIS, QGIS 설치 방법

작업 명령어

# Install the repository RPM:
sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rpm

# Disable the built-in PostgreSQL module:
sudo dnf -qy module disable postgresql

# 패키지 목록 확인
sudo dnf list postgresql16-server

# 패키지 의존성 확인
sudo dnf deplist postgresql16-server-16.4

# 패키지 및 의존성 다운로드
sudo dnf download postgresql16-server-16.4 --resolve

# 다운로드한 패키지 설치
sudo dnf install -y postgresql16-16.4-1PGDG.rhel8.x86_64.rpm postgresql16-libs-16.4-1PGDG.rhel8.x86_64.rpm postgresql16-server-16.4-1PGDG.rhel8.x86_64.rpm



# Optionally initialize the database and enable automatic start:
sudo /usr/pgsql-16/bin/postgresql-16-setup initdb
sudo systemctl enable postgresql-16
sudo systemctl start postgresql-16

# 기본 계정 설정
sudo -u postgres psql
 alter user postgres password 'postgres';
\q

# postgis 설치
# Install EPEL repo RPM:
dnf -y install epel-release

# Enable PowerTools repo (required for some of the dependencies):
# dnf -y config-manager --set-enabled PowerTools
# [root@localhost 다운로드]# dnf -y config-manager --set-enabled PowerTools
# 오류: 수정할 일치하는 Repo가 없습니다. PowerTools.

# you might need to do this instead for the Rockys
# dnf config-manager --enable crb
# [root@localhost 다운로드]# dnf config-manager --enable crb
# 오류: 수정할 일치하는 Repo가 없습니다. crb.

# for Rocky 8 and above might need to do this as well
crb enable

결과:
[root@localhost 다운로드]# crb enable
Enabling CRB repo
CRB repo is enabled and named: powertools
[root@localhost 다운로드]#


# Now, you can finally install PostGIS
# Select the right PostGIS and PostgreSQL versions
# dnf -y install postgis34_16

# 패키지 목록 확인
sudo dnf list postgis34_16-3.4.2-3PGDG.rhel8.x86_64

# 패키지 의존성 확인
sudo dnf deplist postgis34_16-3.4.2-3PGDG.rhel8.x86_64

# 패키지 및 의존성 다운로드
sudo dnf download postgis34_16-3.4.2-3PGDG.rhel8.x86_64 --resolve

# 다운로드한 패키지 설치
sudo dnf install -y ./*.rpm

# postgresql 재실행
systemctl restart postgresql-16

# 방화벽 확인
sudo firewall-cmd --list-all

# 방화벽 허용
sudo firewall-cmd --permanent --add-service=postgresql
sudo firewall-cmd --reload
또는
sudo firewall-cmd --permanent --add-port=5432/tcp
sudo firewall-cmd --reload

# postgresql 외부 접속 허용 설정 수정
nano /var/lib/pgsql/16/data/postgresql.conf

# 최하단에 모든 ip 허용
listen_addresses = '*'

# 접속 권한 설정
nano /var/lib/pgsql/16/data/pg_hba.conf
# 최하단에 모든 권한은 모든 ip로 접근 허용
host    all             all             0.0.0.0/0               scram-sha-256

# Enable PostGIS
sudo -u postgres psql
CREATE EXTENSION postgis;

# Enable check
SELECT PostGIS_Full_Version();
\q

# postgresql 재실행
systemctl restart postgresql-16

 

 

 

 

 

#########################################

패키지 설치에 필요한 모든 파일들을 다운로드 후 로컬 저장소를 구성해서 설치하는 방식을 계획했다.

패키지 설치에 필요한 모든 파일을 바로 설치하는 방식으로 변경해도 좋다.

패키지 설치에 필요한 모든 파일을 정확히 획득하는게 관건이다.(추가 작성 예정)

 


1.3. 폐쇄망 준비 : sudo dnf download --downloaddir=/home/ksson/offline_install/postgresql 패키지명 --resolve
sudo dnf download --downloaddir=/home/ksson/offline_install/postgresql postgresql16-server --resolve
sudo dnf download --downloaddir=/home/ksson/offline_install/postgresql postgis34_16 --resolve
sudo dnf download --downloaddir=/home/ksson/offline_install/postgresql epel-release --resolve

 

0. 패키지와 의존성 다운로드 및 실행 방법

패키지 목록 확인

sudo dnf list [패키지 이름]

 

패키지 의존성 확인
sudo dnf deplist [패키지 이름]

패키지 및 의존성 다운로드
sudo dnf download [패키지 이름] --resolve

다운로드한 패키지 설치
sudo dnf install ./*.rpm

1. 로컬 저장소 구성
오프라인 환경에서 사용할 로컬 디렉토리에 패키지를 옮긴 후 dnf가 이를 인식하도록 로컬 저장소를 설정합니다.
bash shell 명령어 :
# 오프라인 환경에서 로컬 저장소 디렉토리 생성
sudo mkdir -p /mnt/localrepo
sudo cp ~/offline_install/postgresql/*.rpm /mnt/localrepo/

# 로컬 저장소 구성 파일 생성
echo "[localrepo]
name=Local Repository
baseurl=file:///mnt/localrepo
enabled=1
gpgcheck=0" | sudo tee /etc/yum.repos.d/localrepo.repo

2. PostgreSQL 및 PostGIS 설치
다운로드한 .rpm 패키지를 오프라인 환경에서 설치합니다.

2.1. postgreSQL 설치 : 참고. https://www.postgresql.org/download/linux/redhat/
sudo dnf -qy module disable postgresql
sudo dnf install -y postgresql16-server
sudo /usr/pgsql-16/bin/postgresql-16-setup initdb
sudo systemctl enable postgresql-16
sudo systemctl start postgresql-16


[ksson@localhost mnt]$ sudo -u postgres psql
[sudo] ksson의 암호: 
psql (16.4)
도움말을 보려면 "help"를 입력하십시오.

postgres=# alter user postgres password 'postgres';
ALTER ROLE
postgres=# \q
[ksson@localhost mnt]$ 

2.2. postGIS 설치 : https://postgis.net/documentation/getting_started/install_red_hat/
# Install EPEL repo RPM:
sudo dnf -y install epel-release

# Enable PowerTools repo (required for some of the dependencies):
# sudo dnf -y config-manager --set-enabled PowerTools // 진행하지 않음

# you might need to do this instead for the Rockys
sudo dnf config-manager --enable crb

# for Rocky 8 and above might need to do this as well
sudo crb enable

# Now, you can finally install PostGIS
# Select the right PostGIS and PostgreSQL versions
sudo dnf -y install postgis34_16

sudo systemctl restart postgresql-16

sudo -u postgres psql -c "CREATE EXTENSION postgis;"

 

 

 

번외

QGIS 설치(rocky9) 출처 : https://www.qgis.org/resources/installation-guide/#qgis-ltr-long-term-release

sudo dnf install qgis python3-qgis qgis-grass qgis-server

sudo dnf copr enable dani/qgis-ltr

sudo dnf install qgis python3-qgis qgis-grass

sudo dnf install qgis-server python3-qgis

 

출처 :https://velog.io/@dailylifecoding/import-shp-data-with-postgresql-and-qgis

 

[PostGIS] PostgreSQL 에 shp 파일 import 하는 법

PostGIS 실습을 위해서는 데이터가 필요하다! 그리고 그 데이터들은 SHP 파일로 존재하는 경우가 다수다. 이런 shape file 데이터를 QGIS와 PostgreSQL 유틸을 사용해서 import 해보자.

velog.io

여기 것을 참고해도 좋다

 

 

추가1. rpm 이란 feat. ChatGPT 4o

**RPM**은 "Red Hat Package Manager"의 약자로, 주로 **레드햇 계열의 리눅스 배포판에서 사용하는 패키지 관리 시스템**입니다. Fedora, CentOS, Rocky Linux, Oracle Linux 같은 레드햇 계열 시스템이 RPM 패키지를 사용합니다.

### 주요 특징
- **RPM 패키지**는 `.rpm` 확장자를 가진 파일 형태로, 특정 소프트웨어나 라이브러리를 설치할 수 있게 해줍니다.
- RPM 패키지에는 설치되는 프로그램, 라이브러리 파일, 의존성 정보 등이 포함되어 있어 **쉽게 설치, 삭제, 업그레이드 및 관리**할 수 있습니다.
- 보통, `dnf`나 `yum`과 같은 패키지 관리 도구와 함께 사용됩니다. 이 도구들은 의존성을 자동으로 해결해주기 때문에 사용자 편의성이 높습니다.

### RPM 사용 예시
1. **설치**:
   ```bash
   sudo rpm -ivh package.rpm
   ```
2. **업데이트**:
   ```bash
   sudo rpm -Uvh package.rpm
   ```
3. **삭제**:
   ```bash
   sudo rpm -e package
   ```
4. **설치된 패키지 목록 확인**:
   ```bash
   rpm -qa
   ```

### 장점
- **의존성 관리**: RPM 패키지는 의존성 정보를 포함하고 있어 필요한 라이브러리가 있는지 확인합니다.
- **빠른 설치/업데이트**: 바이너리 형태의 프로그램이 포함되어 설치 속도가 빠릅니다.
- **일관성 유지**: 특정 배포판에 맞춘 패키지 형식이므로, 해당 시스템에서 일관된 설치와 구성이 가능합니다.

### DNF/YUM과의 관계
- `dnf`와 `yum`은 RPM 패키지를 다루는 상위 레벨의 패키지 관리 도구입니다. 이들은 의존성 문제를 자동으로 해결하고, 네트워크에서 직접 패키지를 다운로드하여 설치할 수 있는 기능을 제공합니다.

 

 

추가2.

Dbeaver에서 geometry 사용 설정
DBeaver에서 PostGIS와 같은 공간 데이터를 시각화하기 위해 Spatial Geometry 설정을 하는 방법을 안내드리겠습니다. 
이 작업은 PostGIS가 설치된 PostgreSQL 데이터베이스에 대해 수행합니다.

1. DBeaver에서 PostGIS 확장 설치된 데이터베이스에 연결
DBeaver를 열고 PostgreSQL 데이터베이스에 연결합니다.
만약 연결이 되어 있지 않다면, PostgreSQL 설정에서 spatial_ref_sys 및 geometry_columns 테이블이 있는지 확인하세요. 이는 PostGIS가 활성화되었음을 의미합니다.


2. Geometry Viewer 활성화
DBeaver에서 PostgreSQL 데이터베이스의 Tables 목록에서 공간 데이터를 포함하는 테이블을 선택합니다.
테이블에 공간 데이터가 포함된 컬럼(예: geometry 또는 geom)이 있는지 확인하세요.
해당 테이블의 데이터를 미리 보기 위해 Data 탭을 클릭합니다.
공간 데이터가 포함된 컬럼을 우클릭하고, View as Geometry 또는 Spatial Viewer 옵션을 선택합니다.
이렇게 하면 해당 컬럼이 지오메트리로 해석되어, 지도 위에 시각화됩니다.
만약 View as Geometry가 나타나지 않는다면, DBeaver 버전이 구형이거나, 데이터 유형이 올바르게 설정되지 않았을 수 있습니다.

geom에서 데이터 선택 후 Panels 선택
Spatial 선택 해서 전체 확인


3. 지오메트리 설정 확인 및 옵션 조정
Preferences > Editors > Data Editor > GIS Viewer로 이동하여 GIS Viewer에 대한 설정을 조정할 수 있습니다.
여기서 기본 좌표계, 기본 확대 수준 등 뷰어 관련 설정을 세부적으로 조정할 수 있습니다.


4. 데이터 유형이 인식되지 않을 때
만약 지오메트리 컬럼이 자동으로 인식되지 않는다면, 아래를 확인해 보세요:

PostgreSQL에서 해당 테이블의 컬럼이 geometry 타입인지 확인하세요.


SELECT PostGIS_Full_Version(); 쿼리를 실행해 PostGIS가 제대로 설치되었는지 확인합니다.