1 実習環境の構築(解説)

サイト: LinuC Open Network
コース: 井上先生用コース
ブック: 1 実習環境の構築(解説)
印刷者: ゲストユーザ
日付: 2024年 09月 17日(火曜日) 05:07

説明

この章では、実習環境の構築方法を説明します。実習環境は以下の手順で構築します。

1.1 PostgreSQLのインストールと初期設定(AlmaLinuxの場合)
1.2 PostgreSQLのインストールと初期設定(Ubuntuの場合)
1.3 実習用データベースの作成
参考 作成した実習環境を消去する方法

なお、ここでは実習環境を構築するための基本的な手順を示すに留め、コマンド等の詳しい使用方法については後の章で改めて説明します。

1.1 PostgreSQLのインストールと初期設定(AlmaLinuxの場合)

PostgreSQLは、クライアント・サーバ構成のデータベースシステムです。AlmaLinuxで初めてPostgreSQLを使用する際には、以下の手順でインストールと初期設定を行います。なお、この手順はOS管理者(rootユーザ)、またはOS管理者権限(sudoコマンド)を行使できるユーザで行う必要があります。

(1) postgresユーザの作成
(2) PostgreSQLパッケージのインストール
(3) データベースクラスタの初期化
(4) データベースサーバの起動

(1) postgresユーザの作成

PostgreSQLを動作させる場合、通常はOS管理者とは別にPostgreSQL専用のDB管理者を作成します。DB管理者のユーザ名は、慣例的に 'postgres' を使用します。postgresユーザは、PostgreSQLのインストール時に自動的に作成することができますが、ファイルの保存場所としてホームディレクトリがあった方が便利なので、手動で作成しておきます。

useraddコマンドでpostgresユーザとホームディレクトリ '/home/postgres' を同時に作成します。

sudo useradd postgres

この後、postgresユーザでログインできるようにするために、passwdコマンドでパスワードを設定します。

sudo passwd postgres

なお、OSの管理者権限があれば以下の例のようにsudoコマンドでpostgresユーザにログインできるので、パスワードの設定は省略しても構いません。

[admin@host1 ~]$ sudo -iu postgres
[postgres@host1 ~]$ pwd
/home/postgres
[postgres@host1 ~]$ exit
ログアウト
[admin@host1 ~]$

(2) PostgreSQLパッケージのインストール

PostgreSQLのリリースサイクルは、毎年1回のバージョンアップを含むメジャーリリースと、その後5年間のメンテナンスのマイナーリリースがあります。OSのディストリビューションに標準で含まれるバージョンは最新ではない可能性がありますが、この資料の実習環境としては全く問題ないため、標準のバージョンをインストールします。AlamLinux 9.3においてdnfコマンドで 'postgresql-server' をインストールすると、PostgreSQL 13のサーバとクライアントプログラム、および依存関係のあるライブラリがインストールされます。

sudo dnf install postgresql-server

以下の例は、実際にインストールされるパッケージを示しています。

[admin@host1 ~]$ [admin@host1 ~]$ sudo dnf install postgresql-server
AlmaLinux 9 - AppStream                         452 kB/s | 8.3 MB     00:18
AlmaLinux 9 - BaseOS                            497 kB/s | 3.5 MB     00:07
AlmaLinux 9 - Extras                             21 kB/s |  17 kB     00:00
依存関係が解決しました。
================================================================================
 パッケージ                  Arch       バージョン          リポジトリー  サイズ
================================================================================
インストール:
 postgresql-server           x86_64     13.14-1.el9_3       appstream     5.7 M
依存関係のインストール:
 postgresql                  x86_64     13.14-1.el9_3       appstream     1.5 M
 postgresql-private-libs     x86_64     13.14-1.el9_3       appstream     132 k

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

なお、PostgreSQLの別のバージョンをインストールする方法については、以下の公式サイトを参照してください。

Linux downloads (Red Hat family)

(3) データベースクラスタの初期化

インストールが完了したらデータベースクラスタを初期化します。データベースクラスタとはPostgreSQLサーバが管理するデータベースの格納エリアで、サーバの起動前に初期化しておく必要があります。以下のコマンドを実行することにより、postgresユーザの権限でデータベースクラスタを初期化します。

sudo -u postgres postgresql-setup --initdb

以下の例のように、データベースクラスタは '/var/lib/pgsql/data' ディレクトリにpostgresqlユーザ所有のファイルとして作成されます。

[admin@host1 ~]$ sudo -u postgres postgresql-setup --initdb
 * Initializing database in '/var/lib/pgsql/data'
 * Initialized, logs are in /var/lib/pgsql/initdb_postgresql.log
[admin@host1 ~]$

(4) データベースサーバの起動

PostgreSQLインストール後の初期設定ができたので、systemctlコマンドでデータベースサーバを起動します。

sudo systemctl start postgresql

サーバの起動状態は、以下のコマンドで確認できます。

sudo systemctl status postgresql

以下の例のように、サーバの状態が Active: active (running) になっていればサーバの起動は成功です。

[admin@host1 ~]$ sudo systemctl status postgresql
● postgresql.service - PostgreSQL database server
     Loaded: loaded (/usr/lib/systemd/system/postgresql.service; disabled; pres>
     Active: active (running) since Tue 2024-05-14 14:37:02 JST; 10s ago
    Process: 33963 ExecStartPre=/usr/libexec/postgresql-check-db-dir postgresql>
   Main PID: 33965 (postmaster)
以下省略

なお、以下のコマンドを実行しておくと、OSを再起動したときにデータベースサーバを自動的に再起動できます。

sudo systemctl enable postgresql

1.2 PostgreSQLのインストールと初期設定(Ubuntuの場合)

PostgreSQLは、クライアント・サーバ構成のデータベースシステムです。Ubuntuで初めてPostgreSQLを使用する際には、以下の手順でインストールと初期設定を行います。なお、この手順はOS管理者(rootユーザ)、またはOS管理者権限(sudoコマンド)を行使できるユーザで行う必要があります。

(1) postgresユーザの作成
(2) PostgreSQLパッケージのインストール
(3) データベースサーバの起動確認

(1) postgresユーザの作成

PostgreSQLを動作させる場合、通常はOS管理者とは別にPostgreSQL専用のDB管理者を作成します。DB管理者のユーザ名は、慣例的に 'postgres' を使用します。postgresユーザは、PostgreSQLのインストール時に自動的に作成することができますが、ファイルの保存場所としてホームディレクトリがあった方が便利なので、手動で作成しておきます。

adduserコマンドでpostgresユーザとホームディレクトリ '/home/postgres' を同時に作成します。

sudo adduser postgres

なお、OSの管理者権限があれば以下の例のようにsudoコマンドでpostgresユーザにログインできます。

ubuntu@host1:~$ sudo -iu postgres
postgres@host1:~$ pwd
/home/postgres
postgres@host1:~$ exit
ログアウト
ubuntu@host1:~$

(2) PostgreSQLパッケージのインストール

PostgreSQLのリリースサイクルは、毎年1回のバージョンアップを含むメジャーリリースと、その後5年間のメンテナンスのマイナーリリースがあります。OSのディストリビューションに標準で含まれるバージョンは最新ではない可能性がありますが、この資料の実習環境としては全く問題ないため、標準のバージョンをインストールします。Ubuntu 24.04においてaptコマンドで 'postgresql' をインストールすると、PostgreSQL 16のサーバとクライアントプログラム、および依存関係のあるライブラリがインストールされます。

sudo apt install postgresql

以下の例は、実際にインストールされるパッケージを示しています。

ubuntu@host1:~$ sudo apt install postgresql
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています... 完了
状態情報を読み取っています... 完了
以下の追加パッケージがインストールされます:
  libcommon-sense-perl libjson-perl libjson-xs-perl libllvm17t64 libpq5
  libtypes-serialiser-perl postgresql-16 postgresql-client-16
  postgresql-client-common postgresql-common ssl-cert
提案パッケージ:
  postgresql-doc postgresql-doc-16
以下のパッケージが新たにインストールされます:
  libcommon-sense-perl libjson-perl libjson-xs-perl libllvm17t64 libpq5
  libtypes-serialiser-perl postgresql postgresql-16 postgresql-client-16
  postgresql-client-common postgresql-common ssl-cert
アップグレード: 0 個、新規インストール: 12 個、削除: 0 個、保留: 0 個。
43.5 MB のアーカイブを取得する必要があります。
この操作後に追加で 175 MB のディスク容量が消費されます。

なお、PostgreSQLの別のバージョンをインストールする方法については、以下の公式サイトを参照してください。

Linux downloads (Ubuntu)

(3) データベースサーバの起動確認

インストーラによって、データベースクラスタは '/var/lib/postgresql/16/main' ディレクトリにpostgresqlユーザ所有のファイルとして作成され、データベースサーバが起動します。

サーバの起動状態は、systemctlコマンドで確認できます。

sudo systemctl status postgresql

以下の例のように、サーバの状態が Active: active になっていればサーバの起動は成功です。

ubuntu@host1:~$ sudo systemctl status postgresql
● postgresql.service - PostgreSQL RDBMS
     Loaded: loaded (/usr/lib/systemd/system/postgresql.service; enabled; prese>
     Active: active (exited) since Thu 2024-08-08 21:53:49 JST; 1min 7s ago
   Main PID: 2378 (code=exited, status=0/SUCCESS)
        CPU: 1ms
以下省略

なお、OSを再起動したときにはデータベースサーバも自動的に再起動されます。

1.3 実習用データベースの作成

PostgreSQLのデータベースサーバが起動した状態で、以下の手順で本教材実習用のOSSDBデータベースを作成します。これ以降はデータベース管理者(postgresユーザ)で行います。

データベースの作成

データベースクラスタを初期化した状態では、postgres, template0, template1 の3つのデータベースが存在します。これらのデータベースはPostgreSQLサーバの動作を制御するために必要なものであり、ユーザのデータを格納するのには適していません。そこで、以下のコマンドにより、postgresユーザでログインした後、createdbコマンドで新しいデータベース 'ossdb' を作成します。

sudo -iu postgres
createdb ossdb

作成したデータベースは、次に説明するpsqlコマンドで確認できます。

psqlコマンド

psqlは、PostgreSQL標準の対話型クライアントアプリケーションです。postgresユーザがpsqlコマンドをパラメータなしで起動するとpostgresデータベースに接続します。通常は、接続するデータベース名を指定して起動します。例えば以下のように指定すると、ossdbデータベースに接続します。

psql ossdb

以下の例は、psqlを起動した状態を示しています。

[postgres@host1 ~]$ psql ossdb
psql (13.14)
"help"でヘルプを表示します。

ossdb=#

psqlのプロンプト 'ossdb=#' の最初の部分は現在接続しているデータベース名で、最後のハッシュ記号(#)はデータベース管理者で接続していることを表します。 psqlは、SQL文とメタコマンドを受け付けます。SQL文は複数行にわたって入力可能であり、最後にセミコロン(;)またはバックスラッシュ(\)g を入力すると、データベースサーバで実行されます。なお、SQL文が2行目以降に続く場合はpsqlのプロンプトが 'ossdb-# ' のように変化します。メタコマンドは先頭がバックスラッシュ(\)で始まる1行のコマンドで、基本的にpsql内部で処理が行われます。

psqlメタコマンド

利用頻度が高いと思われるメタコマンドを以下に示します。

メタコマンド パラメータ 機能
\l または \list データベース名 データベースの情報を表示する
\c または \connect データベース名 データベースに接続する
\conninfo   現在のデータベース接続情報を出力する
\d テーブル名 テーブルの情報を表示する
\g   SQL文を実行する
\h または \help SQL文 SQL文のヘルプを表示する
\? メタコマンド psqlメタコマンドのヘルプを表示する
\q または \quit   psqlを終了する


例えば、psql中でデータベースの一覧を表示するには、以下の例のようにメタコマンドの \l を入力します。

ossdb=# \l
                                         データベース一覧
   名前    |  所有者  | エンコーディング |  照合順序   | Ctype(変換演算子) |
 アクセス権限
-----------+----------+------------------+-------------+-------------------+----
-------------------
 ossdb     | postgres | UTF8             | ja_JP.UTF-8 | ja_JP.UTF-8       |
 postgres  | postgres | UTF8             | ja_JP.UTF-8 | ja_JP.UTF-8       |
 template0 | postgres | UTF8             | ja_JP.UTF-8 | ja_JP.UTF-8       | =c/
postgres          +
           |          |                  |             |                   | pos
tgres=CTc/postgres
 template1 | postgres | UTF8             | ja_JP.UTF-8 | ja_JP.UTF-8       | =c/
postgres          +
           |          |                  |             |                   | pos
tgres=CTc/postgres
(4 行)

ossdb=#

参考 作成した実習環境を消去する方法

これまで作成してきた実習環境をすべて消去したい場合には、OS管理者権限で以下の手順でコマンドを実行します。なお、Ubuntuの場合はコマンドおよびパスを適宜読み替えてください。

ossdbデータベースの削除

sudo -u postgres dropdb ossdb

PostgreSQLサーバの停止

sudo systemctl stop postgresql

PostgreSQLのアンインストール

sudo dnf remove postgresql-server

データベースクラスタの削除

sudo rm -r /var/lib/pgsql/data

postgresユーザの削除

sudo userdel postgres

postgresユーザのホームディレクトリの削除

sudo rm -r /home/postgres