PostgreSQL のインストールと DB (データベース) の作成 (RHEL 9)

本ページでは、RHEL 9 で PostgreSQL 13 をインストールし、Atlassian 製品用のデータベースを作成する手順を説明します。




PostgreSQL のインストール

1. サーバのターミナルウィンドウを開く

PostgreSQL のインストール作業を実施するためには、root 権限が必要です。PostgreSQL をインストールするサーバに root か、sudo コマンドを実行できるユーザーでログインしてターミナルウィンドウを開いて下さい。以下のコマンドは、root 権限実行するものとします。root 以外のユーザーで実行する場合は、下記の様に sudo コマンドで実行して下さい。

例: 後続の PostgreSQLのリポジトリーをインストールするコマンドは下記の様になります。

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

2. リポジトリをインストールする

以下のコマンドを実行し、PostgreSQL のリポジトリをインストールします。

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

途中でインストールしてよいか確認されるので、内容に問題がなければ "y" を入力して Enter キーを押下してください。

出力される内容
読み込んだプラグイン:fastestmirror
pgdg-redhat-repo-latest.noarch.rpm


...
(中略)
...


合計容量: 10 k
インストール容量: 10 k
Is this ok [y/d/N]:     ← 問題なければ、"y" を入力し Enter を押下する。


3. PostgreSQL をインストールする

以下のコマンドを実行し、PostgreSQL をインストールします。

 yum install postgresql13-server


途中で GPG 鍵とパッケージをインストールしてよいか確認されるので、問題なければ "y" を入力して Enter キーを押下してください。

出力される内容
=========================================================================================================================================================================
パッケージ アーキテクチャー バージョン リポジトリー サイズ
=========================================================================================================================================================================
インストール:
postgresql13-server x86_64 13.16-2PGDG.rhel9 pgdg13 5.6 M
依存関係のインストール:
postgresql13 x86_64 13.16-2PGDG.rhel9 pgdg13 1.4 M
postgresql13-libs x86_64 13.16-2PGDG.rhel9 pgdg13 777 k

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

ダウンロードサイズの合計: 7.8 M
インストール後のサイズ: 32 M
これでよろしいですか? [y/N]: y
パッケージのダウンロード:
(1/3): postgresql13-13.16-2PGDG.rhel9.x86_64.rpm 205 kB/s | 1.4 MB 00:06
(2/3): postgresql13-libs-13.16-2PGDG.rhel9.x86_64.rpm 113 kB/s | 777 kB 00:06
(3/3): postgresql13-server-13.16-2PGDG.rhel9.x86_64.rpm 475 kB/s | 5.6 MB 00:12
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------
合計 655 kB/s | 7.8 MB 00:12


出力される内容
PostgreSQL 13 for RHEL / Rocky / AlmaLinux 9 - x86_64 2.4 MB/s | 2.4 kB 00:00
GPG 鍵 0x08B40D20 をインポート中:
Userid : "PostgreSQL RPM Repository <pgsql-pkg-yum@lists.postgresql.org>"
Fingerprint: D4BF 08AE 67A0 B4C7 A1DB CCD2 40BC A2B4 08B4 0D20
From : /etc/pki/rpm-gpg/PGDG-RPM-GPG-KEY-RHEL
これでよろしいですか? [y/N]: y
鍵のインポートに成功しました
トランザクションを確認しています
トランザクションの確認に成功しました。
トランザクションをテストしています
トランザクションのテストに成功しました。
トランザクションを実行しています
準備中 : 1/1
インストール中 : postgresql13-libs-13.16-2PGDG.rhel9.x86_64 1/3
scriptletの実行中: postgresql13-libs-13.16-2PGDG.rhel9.x86_64 1/3
インストール中 : postgresql13-13.16-2PGDG.rhel9.x86_64 2/3
scriptletの実行中: postgresql13-13.16-2PGDG.rhel9.x86_64 2/3
scriptletの実行中: postgresql13-server-13.16-2PGDG.rhel9.x86_64 3/3
インストール中 : postgresql13-server-13.16-2PGDG.rhel9.x86_64 3/3
scriptletの実行中: postgresql13-server-13.16-2PGDG.rhel9.x86_64 3/3
検証中 : postgresql13-13.16-2PGDG.rhel9.x86_64 1/3
検証中 : postgresql13-libs-13.16-2PGDG.rhel9.x86_64 2/3
検証中 : postgresql13-server-13.16-2PGDG.rhel9.x86_64 3/3
インストール済みの製品が更新されています。

インストール済み:
postgresql13-13.16-2PGDG.rhel9.x86_64 postgresql13-libs-13.16-2PGDG.rhel9.x86_64 postgresql13-server-13.16-2PGDG.rhel9.x86_64

完了しました!

4. PostgreSQL のバージョンを確認する

以下のコマンドを実行し、インストールされた PostgreSQL のバージョンを確認します。

psql --version
出力される内容
psql (PostgreSQL) 13.13

データベース領域の初期化

1. 初期化ファイルを修正する

パフォーマンス悪化防止のため、初期化で使うコマンドのファイル (/usr/pgsql-13/bin/postgresql-13-setup) を修正し、initdb コマンドのオプションとして "--no-locale -E UTF-8" を追加します。

  1. 以下のコマンドを実行し、/usr/pgsql-13/bin/postgresql-13-setup ファイルをテキストエディタで開きます。

    vi /usr/pgsql-13/bin/postgresql-13-setup
  2. 下記の行を探します。

    initdbcmd="$PGENGINE/initdb --pgdata='$PGDATA' -A scram-sha-256 --auth-local=peer --pwfile /dev/zero"
    initdbcmd+=" $PGSETUP_INITDB_OPTIONS"

    の行を以下のように変更します。--no-locale の前には忘れずにスペースを挿入して下さい。

    initdbcmd="$PGENGINE/initdb --pgdata='$PGDATA' -A scram-sha-256 --auth-local=peer --no-locale -E UTF-8 --pwfile /dev/zero"
    initdbcmd+=" $PGSETUP_INITDB_OPTIONS"
  3. ファイルを保存して終了します。

2. データベース領域を初期化する

以下のコマンドを実行し、データベース領域を初期化します。

/usr/pgsql-13/bin/postgresql-13-setup initdb

下記の出力が出る事を確認します。

出力される内容
Initializing database ... OK

上記の出力がされない場合はエラーが発生している事が考えられますので、ログファイルを確認します。

出力される内容
cat /var/lib/pgsql/13/initdb.log

The files belonging to this database system will be owned by user "postgres".
This user must also own the server process.

The database cluster will be initialized with locale "C.UTF-8".
The default text search configuration will be set to "english".

Data page checksums are disabled.
initdb: error: could not open file "/dev/zero--no-locale" for reading: No such file or directory
The files belonging to this database system will be owned by user "postgres".
This user must also own the server process.


設定ファイルの修正

1. パフォーマンスを調整する

/var/lib/pgsql/13/data/postgresql.conf ファイル内の値を変更し、PostgreSQL のパフォーマンスを調整します。

  1. 以下のコマンドを実行し、/var/lib/pgsql/13/data/postgresql.conf ファイルをテキストエディタで開きます。

    vi /var/lib/pgsql/13/data/postgresql.conf
  2. 以下の行を見つけ、それぞれ変更していきます。

    1. shared_buffers の値を変更し、メモリバッファで使用するメモリ量を設定します。
      この値はご利用のサーバの環境にも左右されてしまいますが、今回は 512MB を指定します。

      変更前
      shared_buffers = 128MB
      変更後
      shared_buffers = 512MB
    2. work_mem のコメントアウトを解除し、ソート用のメモリバッファを指定します。

      変更前
      #work_mem = 4MB
      変更後
      work_mem = 4MB
    3. wal_buffers のコメントアウトを解除し、トランザクションログを書き出す際に使用されるメモリバッファを指定します。

      変更前
      #wal_buffers = -1
      変更後
      wal_buffers = 64kB
  3. ファイルを保存して終了します。


2. 接続クライアントを設定する

/var/lib/pgsql/13/data/postgresql.conf ファイルを編集し、localhost や特定の IP アドレスから接続できるように設定します。

  1. 以下のコマンドを実行し、/var/lib/pgsql/13/data/postgresql.conf ファイルをテキストエディタで開きます。

    vi /var/lib/pgsql/13/data/postgresql.conf


  2. listen_addresses の部分のコメントアウトを解除します。

    変更前
    #listen_addresses = 'localhost'
    変更後
    listen_addresses = 'localhost'


    localhost 以外からもアクセスが発生する場合は、以下のように接続を許可するインターフェースの IP アドレスをカンマ区切りで追加してください。

    変更後
    listen_addresses = 'localhost,192.168.0.1,192.168.0.2'
  3. ファイルを保存して終了します。

3. 認証方法を設定する

/var/lib/pgsql/13/data/pg_hba.conf ファイルを編集し、認証方法を指定します。
デフォルトでは ident 方式となっていますが、パスワード認証を行う md5 方式に変更します。

  1. 以下のコマンドを実行し、/var/lib/pgsql/13/data/pg_hba.conf ファイルをテキストエディタで開きます。

    vi /var/lib/pgsql/13/data/pg_hba.conf
  2. 以下の行を探します。

    変更前
    host    all             all             127.0.0.1/32            scram-sha-256

    の行を以下のように変更します。

    変更後
    host    all             all             127.0.0.1/32            md5


    localhost 以外からもアクセスが発生する場合は、以下のような接続元の IP アドレスの認証方法を指定した行を追加してください。

    変更後
    host    all             all             192.168.0.0/24            md5
  3. ファイルを保存して終了します。

設定ファイルを修正したら、以下のコマンドを実行し、PostgreSQL を起動します。

systemctl start postgresql-13



自動起動設定

以下のコマンドを実行し、サーバの起動時に PostgreSQL が自動的に起動するように設定します。

systemctl enable postgresql-13


確認として以下のコマンドを実行します。

systemctl is-enabled postgresql-13

下記の出力が出る事を確認します。

出力される内容
enabled




PostgreSQL の起動と停止は、以下のコマンドから行うことができます。

  • PostgreSQL の起動

    systemctl start postgresql-13
  • PostgreSQL の停止

    systemctl stop postgresql-13

ユーザとデータベースの作成

Jira や Confluence などの接続先 DB (データベース) として使用するため、専用のユーザとデータベースを用意します。


1. サーバのユーザを切り替える

以下のコマンドを実行し、サーバのユーザを postgres へ切り替えます。

su - postgres

postgres ユーザは、PostgreSQL のインストール時に作成されるユーザです。


2. PostgreSQL のターミナルへ切り替える

以下のコマンドを実行し、PostgreSQL を操作するターミナルへ切り替えます。

psql


3. ユーザを作成する

以下のコマンドを実行し、各アプリケーションで使用するユーザを作成します。

create role <username> password '<password>' createdb login;

<username> の部分は任意のユーザ名に、<password> の部分は安全なパスワードに置き換えてください。


4. データベースを作成する

以下のコマンドを実行し、各アプリケーションで使用するデータベースを作成します。

create database <database name> owner <username> encoding 'utf-8' lc_collate 'C' lc_ctype 'C' template template0;

<database name> の部分は任意のデータベース名に、<username> の部分はあらかじめ作成しておいたユーザの名前に置き換えてください。

Confluence では、照合順序を 'UTF-8' にすることが推奨されています。
以下のような内容でデータベースを作成してください。

create database <database name> owner <username> encoding 'utf-8' lc_collate 'ja_JP.UTF-8' lc_ctype 'ja_JP.UTF-8' template template0;

PostgreSQL を操作するターミナルを終了するには、"\q" コマンドを実行してください。

ポートの開放

localhost 以外からもアクセスが発生する場合は、以下のように ポート番号 5432 を開放して外部からアクセスする事を可能にします。

firewall-cmd --permanent --zon=public  --add-service=postgresql
firewall-cmd --reload


以上で、PostgreSQL のインストールからデータベースの作成までは完了です。

リックソフト株式会社 は、日本でトップレベルのAtlassian Platinum Solution Partnerです。
大規模ユーザーへの対応実績が認められたEnterpriseの認定をうけ、高度なトレーニング要件をクリアし、小規模から大規模のお客様まで対応可能な実績を示したパートナー企業です。


Copyright © Ricksoft Co., Ltd. プライバシーポリシー お問い合わせ