オープンソースのオブジェクト関係データベース管理システム (ORDBMS) である PostgreSQL は、CentOS の配布パッケージで利用できますが、PostgreSQL の開発サイトでも CentOS を含む Red Hat 系 Linux 向けに yum のリポジトリを公開しています [1]。
備忘録として、CentOS 8 に PostgreSQL のサイトが公開しているリポジトリを設定、最新の PostgreSQL をインストールする手順をまとめました。
OS | |||
CentOS Linux release 8.0.1905 (Core) | x86_64 |
OUTLINE
- PostgreSQL のインストール
- Modularity
- PostgreSQL モジュールの無効化
- PostgreSQL の Yum リポジトリをインストール
- リポジトリファイルの編集
- PostgreSQL のインストール
- PostgreSQL の起動と動作確認
- データベースクラスタの作成
- サービスの起動
- postgresql.conf と pg_hba.conf の設定
- postgres ユーザーのパスワード設定
- ファイアウォール設定
- pgAdmin でアクセス
- 参考サイト
PostgreSQL のインストール
CentOS に PostgreSQL のサイトのリポジトリを設定する手順は、参考サイト [2] に従って進めます。
Modularity
2018 年 5 月 1 日にリリースされた Fedora 28 に Modularity という概念が導入され、アプリケーションのライフサイクルを設定するための新しい仕組みが追加されました [3]。この仕組みは、その後にリリースされた Fedora や RHEL 8 / CentOS 8 に引き継がれています。BaseOS がベースリポジトリ、AppStream がいくつかのアプリケーションを Module として提供するリポジトリになります。
[bitwalk@centos-pc ~]$ sudo dnf list postgresql
[sudo] bitwalk のパスワード:
メタデータの期限切れの最終確認: 2:20:44 時間前の 2019年12月10日 04時44分59秒 に実施しました。
利用可能なパッケージ
postgresql.x86_64 10.6-1.module_el8.0.0+15+f57f353b AppStream
[bitwalk@centos-pc ~]$
PostgreSQL の Module 一覧を表示すると以下のようになります。
[bitwalk@centos-pc ~]$ sudo dnf module list postgresql
メタデータの期限切れの最終確認: 2:20:59 時間前の 2019年12月10日 04時44分59秒 に実施しました。
CentOS-8 - AppStream
Name Stream Profiles Summary
postgresql 10 [d] client, server [d] PostgreSQL server and client module
postgresql 9.6 client, server [d] PostgreSQL server and client module
Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled
[bitwalk@centos-pc ~]$
PostgreSQL モジュールの無効化
今回は CentOS が配布している PostgreSQL パッケージではなく、PostgreSQL の開発サイトが公開しているリポジトリを利用して最新の PostgreSQL をインストールしますので、CentOS の PostgreSQL モジュールを無効にしておきます。
[bitwalk@centos-pc ~]$ sudo dnf module disable postgresql メタデータの期限切れの最終確認: 0:00:43 時間前の 2019年12月10日 10時45分49秒 に実施しました。 依存関係が解決しました。 ================================================================================ パッケージ アーキテクチャー バージョン リポジトリ サイズ ================================================================================ Disabling module streams: postgresql トランザクションの概要 ================================================================================ これでよろしいですか? [y/N]: y 完了しました! [bitwalk@centos-pc ~]$
PostgreSQL の Yum リポジトリをインストール
参考サイト [4] から PostgreSQL の開発サイトが公開している yum リポジトリを設定するための rpm パッケージをダウンロードします。ここでは PostgreSQL 12 をインストールするため [12] をクリックします(下記)。
※ 現在のリポジトリファイルには、アクティブなバージョンの PostgreSQL リポジトリ情報が全て記載されているため、どのバージョンを選んでも大丈夫です。
すると Linux ディストロ毎にダウンロードするサイトが表示されます(下図)。ここでは RHEL/CentOS/ 'CentOS 8 - x86_64' をクリックして pgdg-redhat-repo-latest.noarch.rpm をダウンロードします。
ダウンロードした pgdg-redhat-repo-latest.noarch.rpm をインストールします。
[bitwalk@centos-pc ダウンロード]$ sudo dnf install pgdg-redhat-repo-latest.noarch.rpm [sudo] bitwalk のパスワード: CentOS-8 - AppStream 1.0 kB/s | 4.3 kB 00:04 CentOS-8 - Base 2.8 kB/s | 3.9 kB 00:01 ... (省略) ... 依存関係が解決しました。 ================================================================================ パッケージ アーキテクチャー バージョン リポジトリ サイズ ================================================================================ Installing: pgdg-redhat-repo noarch 42.0-5 @commandline 10 k トランザクションの概要 ================================================================================ インストール 1 パッケージ 合計サイズ: 10 k インストール済みのサイズ: 7.5 k これでよろしいですか? [y/N]: y パッケージのダウンロード中です: トランザクションの確認を実行中 トランザクションの確認に成功しました。 トランザクションのテストを実行中 トランザクションのテストに成功しました。 トランザクションを実行中 準備 : 1/1 Installing : pgdg-redhat-repo-42.0-5.noarch 1/1 検証 : pgdg-redhat-repo-42.0-5.noarch 1/1 インストール済み: pgdg-redhat-repo-42.0-5.noarch 完了しました! [bitwalk@centos-pc ダウンロード]$
リポジトリファイルの編集
インストールしたリポジトリファイルに一行追加します。
[bitwalk@centos-pc ~]$ ls /etc/yum.repos.d CentOS-AppStream.repo CentOS-PowerTools.repo epel-testing.repo CentOS-Base.repo CentOS-Sources.repo epel.repo CentOS-CR.repo CentOS-Vault.repo nginx.repo CentOS-Debuginfo.repo CentOS-centosplus.repo pgdg-redhat-all.repo CentOS-Extras.repo CentOS-fasttrack.repo CentOS-Media.repo epel-playground.repo [bitwalk@centos-pc ~]$ sudo vi /etc/yum.repos.d/pgdg-redhat-all.repo
下記、赤字の行を追加して保存します。なお、既に該当する行がある場合には編集の必要はありません。
# PGDG Red Hat Enterprise Linux / CentOS stable repositories: [pgdg12] name=PostgreSQL 12 for RHEL/CentOS $releasever - $basearch baseurl=https://download.postgresql.org/pub/repos/yum/12/redhat/rhel-$releasever-$basearch enabled=1 module_hotfixes=true gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-PGDG [pgdg11] name=PostgreSQL 11 for RHEL/CentOS $releasever - $basearch baseurl=https://download.postgresql.org/pub/repos/yum/11/redhat/rhel-$releasever-$basearch ... (以下省略)
PostgreSQL のインストール
PostgreSQL の開発サイトで公開している PostgreSQL のパッケージは、CentOS のモジュールと異なり、複数のバージョンを同じシステムにインストールできるようにするため、パッケージ名の命名ルールが異なります。そこでまず、インストール可能なパッケージ名を確認します。
[bitwalk@centos-pc ~]$ dnf list postgresql*-server
PostgreSQL 10 for RHEL/CentOS 8 - x86_64 138 kB/s | 647 kB 00:04
PostgreSQL 11 for RHEL/CentOS 8 - x86_64 145 kB/s | 758 kB 00:05
PostgreSQL 12 for RHEL/CentOS 8 - x86_64 111 kB/s | 620 kB 00:05
PostgreSQL 9.4 for RHEL/CentOS 8 - x86_64 85 kB/s | 415 kB 00:04
PostgreSQL 9.5 for RHEL/CentOS 8 - x86_64 124 kB/s | 523 kB 00:04
PostgreSQL 9.6 for RHEL/CentOS 8 - x86_64 107 kB/s | 620 kB 00:05
メタデータの期限切れの最終確認: 0:00:38 時間前の 2019年12月10日 15時36分23秒 に実施しました。
利用可能なパッケージ
postgresql10-server.x86_64 10.11-2PGDG.rhel8 pgdg10
postgresql11-server.x86_64 11.6-2PGDG.rhel8 pgdg11
postgresql12-server.x86_64 12.1-2PGDG.rhel8 pgdg12
postgresql94-server.x86_64 9.4.25-1PGDG.rhel8 pgdg12
postgresql94-server.x86_64 9.4.25-1PGDG.rhel8 pgdg94
postgresql95-server.x86_64 9.5.20-2PGDG.rhel8 pgdg95
postgresql96-server.x86_64 9.6.16-2PGDG.rhel8 pgdg96
[bitwalk@centos-pc ~]$
最新の postgresql12-server.x86_64 をインストールすることにします。
[bitwalk@centos-pc ~]$ sudo dnf install postgresql12-server ... (途中省略) ... PostgreSQL 11 for RHEL/CentOS 8 - x86_64 2.2 kB/s | 3.8 kB 00:01 PostgreSQL 12 for RHEL/CentOS 8 - x86_64 1.7 kB/s | 3.8 kB 00:02 PostgreSQL 9.4 for RHEL/CentOS 8 - x86_64 2.2 kB/s | 3.8 kB 00:01 PostgreSQL 9.5 for RHEL/CentOS 8 - x86_64 2.2 kB/s | 3.8 kB 00:01 PostgreSQL 9.6 for RHEL/CentOS 8 - x86_64 2.2 kB/s | 3.8 kB 00:01 依存関係が解決しました。 ================================================================================ パッケージ アーキテクチャー バージョン リポジトリ サイズ ================================================================================ Installing: postgresql12-server x86_64 12.1-2PGDG.rhel8 pgdg12 16 M 依存関係をインストール中: postgresql12 x86_64 12.1-2PGDG.rhel8 pgdg12 3.1 M postgresql12-libs x86_64 12.1-2PGDG.rhel8 pgdg12 854 k トランザクションの概要 ================================================================================ インストール 3 パッケージ ダウンロードサイズの合計: 19 M インストール済みのサイズ: 86 M これでよろしいですか? [y/N]: y パッケージのダウンロード中です: (1/3): postgresql12-libs-12.1-2PGDG.rhel8.x86_6 270 kB/s | 854 kB 00:03 (2/3): postgresql12-12.1-2PGDG.rhel8.x86_64.rpm 863 kB/s | 3.1 MB 00:03 (3/3): postgresql12-server-12.1-2PGDG.rhel8.x86 2.4 MB/s | 16 MB 00:06 -------------------------------------------------------------------------------- 合計 3.0 MB/s | 19 MB 00:06 警告: /var/cache/dnf/pgdg12-64e2194e85277659/packages/postgresql12-12.1-2PGDG.rhel8.x86_64.rpm: ヘッダー V4 DSA/SHA1 Signature、鍵 ID 442df0f8: NOKEY PostgreSQL 12 for RHEL/CentOS 8 - x86_64 1.6 MB/s | 1.7 kB 00:00 GPG 鍵 0x442DF0F8 をインポート中: Userid : "PostgreSQL RPM Building Project" Fingerprint: 68C9 E2B9 1A37 D136 FE74 D176 1F16 D2E1 442D F0F8 From : /etc/pki/rpm-gpg/RPM-GPG-KEY-PGDG これでよろしいですか? [y/N]: y 鍵のインポートに成功しました トランザクションの確認を実行中 ... (途中省略) ... 検証 : postgresql12-server-12.1-2PGDG.rhel8.x86_64 3/3 インストール済み: postgresql12-server-12.1-2PGDG.rhel8.x86_64 postgresql12-12.1-2PGDG.rhel8.x86_64 postgresql12-libs-12.1-2PGDG.rhel8.x86_64 完了しました! [bitwalk@centos-pc ~]$
PostgreSQL の起動と動作確認
PostgreSQL の詳細な設定はさておき、簡単な設定をして動作確認をしておきます。
データベースクラスタの作成
次のようにして、ディスク上にデータベース格納領域(データベースクラスタ)を初期化します。
[bitwalk@centos-pc ~]$ sudo /usr/pgsql-12/bin/postgresql-12-setup initdb
[sudo] bitwalk のパスワード:
Initializing database ... OK
[bitwalk@centos-pc ~]$
サービスの起動
データベース格納領域(データベースクラスタ)の初期化後、PostgreSQL のサービスが起動 (start) することを確認します。ついでに自動起動 (enable) の設定もしておきます。
[bitwalk@centos-pc ~]$ sudo systemctl list-unit-files | grep postgresql postgresql-12.service disabled [bitwalk@centos-pc ~]$ sudo systemctl start postgresql-12 [bitwalk@centos-pc ~]$ sudo systemctl enable postgresql-12 Created symlink /etc/systemd/system/multi-user.target.wants/postgresql-12.service → /usr/lib/systemd/system/postgresql-12.service. [bitwalk@centos-pc ~]$ sudo systemctl status postgresql-12 ● postgresql-12.service - PostgreSQL 12 database server Loaded: loaded (/usr/lib/systemd/system/postgresql-12.service; enabled; vend> Active: active (running) since Tue 2019-12-10 16:20:02 JST; 20s ago Docs: https://www.postgresql.org/docs/12/static/ Main PID: 27068 (postmaster) Tasks: 8 (limit: 26213) Memory: 17.9M CGroup: /system.slice/postgresql-12.service ├─27068 /usr/pgsql-12/bin/postmaster -D /var/lib/pgsql/12/data/ ├─27069 postgres: logger ├─27071 postgres: checkpointer ├─27072 postgres: background writer ├─27073 postgres: walwriter ├─27074 postgres: autovacuum launcher ├─27075 postgres: stats collector └─27076 postgres: logical replication launcher 12月 10 16:20:02 centos-pc systemd[1]: Starting PostgreSQL 12 database server... 12月 10 16:20:02 centos-pc postmaster[27068]: 2019-12-10 16:20:02.575 JST [2706> 12月 10 16:20:02 centos-pc postmaster[27068]: 2019-12-10 16:20:02.579 JST [2706> 12月 10 16:20:02 centos-pc postmaster[27068]: 2019-12-10 16:20:02.579 JST [2706> 12月 10 16:20:02 centos-pc postmaster[27068]: 2019-12-10 16:20:02.582 JST [2706> 12月 10 16:20:02 centos-pc postmaster[27068]: 2019-12-10 16:20:02.589 JST [2706> [bitwalk@centos-pc ~]$
postgresql.conf と pg_hba.conf の設定
データベースクラスターは /var/lib/pgsql/12/data に作成されています。
[bitwalk@centos-pc ~]$ sudo ls /var/lib/pgsql/12/data
PG_VERSION pg_dynshmem pg_notify pg_stat_tmp pg_xact
base pg_hba.conf pg_replslot pg_subtrans postgresql.auto.conf
global pg_ident.conf pg_serial pg_tblspc postgresql.conf
log pg_logical pg_snapshots pg_twophase
pg_commit_ts pg_multixact pg_stat pg_wal
[bitwalk@centos-pc ~]$
ルート権限で、postgresql.conf と pg_hba.conf を下記のように編集しました。
... #------------------------------------------------------------------------------ # CONNECTIONS AND AUTHENTICATION #------------------------------------------------------------------------------ # - Connection Settings - #listen_addresses = 'localhost' # what IP address(es) to listen on; # comma-separated list of addresses; # defaults to 'localhost'; use '*' for all listen_addresses = '*' # (change requires restart) port = 5432 # (change requires restart) max_connections = 100 # (change requires restart) ...
...
# TYPE DATABASE USER ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all peer
# IPv4 local connections:
host all all 127.0.0.1/32 ident
host all all 192.168.0.1/24 md5
# IPv6 local connections:
host all all ::1/128 ident
# Allow replication connections from localhost, by a user with the
# replication privilege.
local replication all peer
host replication all 127.0.0.1/32 ident
host replication all ::1/128 ident
編集後、サービスを再起動します。
[bitwalk@centos-pc ~]$ sudo systemctl restart postgresql-12
postgres ユーザーのパスワード設定
PostgreSQL のインストール時に作成された postgres アカウント(ユーザー)にパスワードを設定します。
[bitwalk@centos-pc ~]$ sudo passwd postgres
[sudo] bitwalk のパスワード:
ユーザー postgres のパスワードを変更。
新しいパスワード:
よくないパスワード: このパスワードには一部に何らかの形でユーザー名が含まれています。
新しいパスワードを再入力してください:
passwd: すべての認証トークンが正しく更新できました。
[bitwalk@centos-pc ~]$
postgres アカウント(ユーザー)に切り替えます。
[bitwalk@centos-pc ~]$ sudo su - postgres [postgres@centos-pc ~]$
psqlコマンドを実行して、PostgreSQL が管理するユーザーの postgres に対してもパスワードを設定します。
[postgres@centos-pc ~]$ psql psql (12.1) "help"でヘルプを表示します。 postgres=# alter role postgres with password 'postgres'; ALTER ROLE postgres-# \q [postgres@centos-pc ~]$
ファイアウォールの設定
下記のようにファイアウォールを設定しました。
[bitwalk@centos-pc ~]$ sudo firewall-cmd --add-service=postgresql --permanent [sudo] bitwalk のパスワード: success [bitwalk@centos-pc ~]$ sudo firewall-cmd --permanent --zone=public --add-port=5432/tcp success [bitwalk@centos-pc ~]$ sudo firewall-cmd --reload success [bitwalk@centos-pc ~]$
pgAdmin でアクセス
データベースのメンテナンス用に pgAdmin4 を LAN 内の Windows PC にインストールしてアクセスしてみました。
今のところ、SELinux からエラー出ていませんが、データベースの操作をしたときに出るかもしれません。とりあえず、エラーが出たときに対処していきます。
参考サイト
- PostgreSQL: Linux downloads (Red Hat family)
- Installing PostgreSQL on RHEL 8 | Devrim Gunduz's PostgreSQL Blog [2019-07-25]
- RHEL 8/Fedora 28で導入されたModularity - 赤帽エンジニアブログ [2018-12-14]
- PostgreSQL RPM Repository (with Yum)
0 件のコメント:
コメントを投稿