RHEL 8 / CentOS 8におけるPostgreSQL 12のインストール手順を説明します。

前提条件

  • 作業は、root権限を持つユーザで実施します。
  • OSは、以下のバージョンで検証しています。
# cat /etc/redhat-release
CentOS Linux release 8.1.1911 (Core)
# uname -r
4.18.0-147.el8.x86_64

作業手順

パッケージのインストール

現在のAppStreamのPostgreSQLモジュールを確認します。

# dnf module list postgresql
CentOS-8 - AppStream
Name                Stream         Profiles                   Summary                                    
postgresql          9.6            client, server [d]         PostgreSQL server and client module        
postgresql          10 [d]         client, server [d]         PostgreSQL server and client module        
postgresql          12             client, server [d]         PostgreSQL server and client module        

ヒント: [d]efault, [e]nabled, [x]disabled, [i]nstalled

バージョン10がデフォルトのモジュールとして指定されているため、バージョン12を明示的に指定してPostgreSQLをインストールします。

# dnf -y module install postgresql:12
(略)
完了しました!

データベースクラスタの作成

PostgreSQLは、サービス起動前にデータベースクラスタを作成する必要があります。
デフォルト文字コードをUTF-8、デフォルトロケールをCとして、データベースクラスタを作成します。

# export PGSETUP_INITDB_OPTIONS="--encoding=UTF-8 --no-locale"
# postgresql-setup --initdb

サービスの起動

以下のコマンドを実行し、サービスの起動と自動起動設定を行います。

# systemctl start postgresql.service
# systemctl enable postgresql.service

以下のコマンドで、サービスの起動状態を確認できます。
Loaded:の列にloaded (<Unitファイル>; enabled; <自動起動の初期設定>)が表示されていれば、自動起動は有効化されています。
Active:の列にactive (running)が表示されていれば、サービスは起動中です。

# systemctl status --no-pager postgresql.service
● postgresql.service - PostgreSQL database server
   Loaded: loaded (/usr/lib/systemd/system/postgresql.service; enabled; vendor preset: disabled)
   Active: active (running) since Sat 2020-07-18 15:07:58 JST; 46s ago
(略)

参考情報

サービス停止、起動コマンド

パッケージのインストール後にサービスの停止、起動を行う場合は、以下のコマンドを実行します。

### サービス停止
# systemctl stop postgresql.service

### サービス起動
# systemctl stop postgresql.service

ファイアウォールの設定

OS上でfirewalldが有効になっている場合は、DB通信を許可する設定を行います。デフォルトのゾーン(public)以外を使用している場合は、publicの箇所に任意のゾーン名を指定します。

# firewall-cmd --permanent --zone=public --add-service=postgresql
# firewall-cmd --reload

インストールパッケージの一覧

PostgreSQLのインストールに必要なパッケージは以下の通りです。
オフライン環境のサーバにインストールを行う場合は、パッケージリポジトリから該当ファイルを取得して、作業対象のサーバに転送してください。

# dnf module install postgresql:12
=========================================================================================================
 パッケージ               Arch          バージョン                                リポジトリー     サイズ
=========================================================================================================
group/moduleパッケージをインストール:
 postgresql-server        x86_64        12.1-2.module_el8.1.0+273+979c16e6        AppStream        5.5 M
依存関係のインストール:
 libpq                    x86_64        12.1-3.el8                                AppStream        195 k
 postgresql               x86_64        12.1-2.module_el8.1.0+273+979c16e6        AppStream        1.4 M
 libicu                   x86_64        60.3-2.el8_1                              BaseOS           8.8 M
モジュールプロファイルのインストール:
 postgresql/server                                                                                      
モジュールストリームの有効化:
 postgresql                             12                                                              

トランザクションの概要
=========================================================================================================
インストール  4 パッケージ

ダウンロードサイズの合計: 16 M
インストール済みのサイズ: 62 M