ウェブサイト検索

Ubuntu 22.04 のサーバー モードで pgAdmin 4 をインストールして構成する方法


序章

pgAdmin は、PostgreSQL とそれに関連するデータベース管理システム用のオープンソースの管理および開発プラットフォームです。 Python と jQuery で書かれており、PostgreSQL にあるすべての機能をサポートしています。 pgAdmin を使用して、基本的な SQL クエリの作成からデータベースの監視、高度なデータベース アーキテクチャの構成まで、あらゆることを実行できます。

このチュートリアルでは、最新バージョンの pgAdmin を Ubuntu 22.04 サーバーにインストールして構成し、Web ブラウザーを介して pgAdmin にアクセスし、サーバー上の PostgreSQL データベースに接続するプロセスについて説明します。

前提条件

このチュートリアルを完了するには、次のものが必要です。

  • Ubuntu 22.04 を実行しているサーバー。このサーバーには、sudo 権限を持つ root 以外のユーザーと、ufw で構成されたファイアウォールが必要です。この設定については、Ubuntu 22.04 の初期サーバー設定ガイドに従ってください。
  • Ubuntu 22.04 で Nginx をリバース プロキシとして構成する方法の手順 1 と 2 に従って、Nginx をインストールし、http://unix:/tmp/pgadmin4.sock のリバース プロキシとして構成します。
  • PostgreSQL がサーバーにインストールされている。これを設定するには、Ubuntu 22.04 で PostgreSQL をインストールして使用する方法に関するガイドに従ってください。このガイドに従って、pgAdmin を PostgreSQL インスタンスに接続するために両方が必要になるため、必ず新しいロールとデータベースを作成してください。
  • Python 3 と venv がサーバーにインストールされている。 Ubuntu 22.04 サーバーに Python 3 をインストールしてプログラミング環境をセットアップする方法に従って、これらのツールをインストールし、仮想環境をセットアップします。

ステップ1-pgAdminとその依存関係のインストール

この記事の執筆時点で、pgAdmin の最新バージョンは pgAdmin 4 ですが、公式の Ubuntu リポジトリから入手できる最新バージョンは pgAdmin 3 です。ただし、pgAdmin 3 はサポートされなくなり、プロジェクトのメンテナーは pgAdmin 4 のインストールを推奨しています。この手順では、仮想環境内に pgAdmin 4 の最新バージョンをインストールするプロセス (プロジェクトの開発チームの推奨に従って) と、apt を使用してその依存関係をインストールするプロセスについて説明します。

まず、サーバーのパッケージ インデックスを更新していない場合は更新します。

  1. sudo apt update

次に、次の依存関係をインストールします。これらには、多精度演算ライブラリである libgmp3-dev が含まれます。 libpq-dev には、ヘッダー ファイルと、PostgreSQL バックエンドとの通信を支援する静的ライブラリが含まれています。

  1. sudo apt install libgmp3-dev libpq-dev

これに続いて、pgAdmin がセッション データ、ストレージ データ、およびログを保存するディレクトリをいくつか作成します。

  1. sudo mkdir -p /var/lib/pgadmin4/sessions
  2. sudo mkdir /var/lib/pgadmin4/storage
  3. sudo mkdir /var/log/pgadmin4

次に、これらのディレクトリの所有権を root 以外のユーザーおよびグループに変更します。これらは現在 root ユーザーによって所有されているため必要ですが、非 root ユーザーが所有する仮想環境から pgAdmin をインストールし、インストール プロセスではこれらのディレクトリ内にいくつかのファイルを作成する必要があります。ただし、インストール後、所有権を www-data ユーザーとグループに変更して、Web に提供できるようにします。

  1. sudo chown -R sammy:sammy /var/lib/pgadmin4
  2. sudo chown -R sammy:sammy /var/log/pgadmin4

次に、仮想環境を開きます。プログラミング環境があるディレクトリに移動し、アクティブ化します。前提条件の Python 3 チュートリアルの命名規則に従って、environments ディレクトリに移動し、my_env 環境を有効にします。

  1. cd environments/
  2. source my_env/bin/activate

仮想環境をアクティブ化したら、システムに最新バージョンの pip がインストールされていることを確認することをお勧めします。 pip を最新バージョンにアップグレードするには、次のコマンドを実行します。

  1. python -m pip install -U pip

pip を使用して pgadmin4 をインストールします。

  1. python -m pip install pgadmin4==6.10

次に、チュートリアルの後半で pgadmin Web インターフェイスを提供するために Nginx で使用される Python WSGI サーバーである Gunicorn をインストールします。

  1. python -m pip install gunicorn

これにより、pgAdmin とその依存関係がインストールされます。ただし、データベースに接続する前に、プログラムの構成にいくつか変更を加える必要があります。

ステップ2-pgAdmin 4の構成

pgAdmin はサーバーにインストールされていますが、Web インターフェイスを正しく提供するために必要なアクセス許可と構成が含まれていることを確認するために、まだいくつかの手順を実行する必要があります。

pgAdmin のメイン構成ファイル config.py は、他のどの構成ファイルよりも先に読み込まれます。その内容は、pgAdmin の他の構成ファイルで指定できるその他の構成設定の参照点として使用できますが、予期しないエラーを回避するために、config.py ファイル自体を編集しないでください。 config_local.py という名前の新しいファイルにいくつかの構成変更を追加します。このファイルは、プライマリ ファイルの後に読み込まれます。

好みのテキスト エディターを使用して、このファイルを作成します。ここでは nano を使用します:

  1. nano my_env/lib/python3.10/site-packages/pgadmin4/config_local.py

エディターで、次のコンテンツを追加します。

LOG_FILE = '/var/log/pgadmin4/pgadmin4.log'
SQLITE_PATH = '/var/lib/pgadmin4/pgadmin4.db'
SESSION_DB_PATH = '/var/lib/pgadmin4/sessions'
STORAGE_DIR = '/var/lib/pgadmin4/storage'
SERVER_MODE = True

これら 5 つのディレクティブの機能は次のとおりです。

  • LOG_FILE: pgAdmin のログが保存されるファイルを定義します。
  • SQLITE_PATH: pgAdmin はユーザー関連のデータを SQLite データベースに格納し、このディレクティブは pgAdmin ソフトウェアをこの構成データベースにポイントします。このファイルは永続ディレクトリ /var/lib/pgadmin4/ の下にあるため、アップグレード後にユーザー データが失われることはありません。
  • SESSION_DB_PATH: セッション データの保存に使用するディレクトリを指定します。
  • STORAGE_DIR: pgAdmin がバックアップやセキュリティ証明書などの他のデータを保存する場所を定義します。
  • SERVER_MODE: このディレクティブを True に設定すると、pgAdmin がデスクトップ モードではなくサーバー モードで実行されるようになります。

これらの各ファイル パスは、手順 1 で作成したディレクトリを指していることに注意してください。

これらの行を追加したら、ファイルを保存して閉じます。 nano を使用した場合は、CTRL + XYENTER の順に押します。

これらの構成が整ったら、pgAdmin セットアップ スクリプトを実行して、ログイン資格情報を設定します。

  1. python my_env/lib/python3.10/site-packages/pgadmin4/setup.py

このコマンドを実行すると、メール アドレスとパスワードの入力を求めるプロンプトが表示されます。これらは、後でpgAdminにアクセスするときにログイン資格情報として機能するため、ここに入力した内容を覚えておくかメモしてください。

Output
. . . Enter the email address and password to use for the initial pgAdmin user account: Email address: sammy@example.com Password: Retype password:

以上で、pgAdmin の設定は完了です。ただし、プログラムはまだサーバーから提供されていないため、アクセスできないままです.これを解決するために、Gunicorn と Nginx が pgAdmin を提供するように構成し、Web ブラウザーからそのユーザー インターフェイスにアクセスできるようにします。

ステップ3-Gunicornの起動とNginxの構成

Gunicorn を使用して、pgAdmin を Web アプリケーションとして提供します。ただし、アプリケーション サーバーとして Gunicorn はローカルでのみ利用でき、インターネット経由ではアクセスできません。リモートで利用できるようにするには、Nginx をリバース プロキシとして使用する必要があります。

Nginx をリバース プロキシとして設定するための前提条件を完了すると、Nginx 構成ファイルには次のものが含まれます。

server {
    listen 80;
    listen [::]:80;

    server_name your_domain www.your_domain;
        
    location / {
        proxy_pass http://unix:/tmp/pgadmin4.sock;
        include proxy_params;
    }
}

このリバース プロキシ構成により、ローカル ブラウザーで Gunicorn サーバーにアクセスできるようになります。 pgAdmin アプリケーションを使用して Gunicorn サーバーを起動します。

  1. gunicorn --bind unix:/tmp/pgadmin4.sock --workers=1 --threads=25 --chdir ~/environments/my_env/lib/python3.10/site-packages/pgadmin4 pgAdmin4:app
Output
[2022-08-29 00:19:11 +0000] [7134] [INFO] Starting gunicorn 20.1.0 [2022-08-29 00:19:11 +0000] [7134] [INFO] Listening at: unix:/tmp/pgadmin4.sock (7134) [2022-08-29 00:19:11 +0000] [7134] [INFO] Using worker: gthread [2022-08-29 00:19:11 +0000] [7135] [INFO] Booting worker with pid: 7135

注: この方法で Gunicorn を呼び出すと、プロセスが端末に関連付けられます。より長期的な解決策として、Supervisor などのプログラムで Gunicorn を呼び出します。 Ubuntu および Debian VPS に Supervisor をインストールして管理する方法については、このチュートリアルに従うことができます。

Gunicorn がアプリケーション サーバーとして機能し、Nginx リバース プロキシからアクセスできるようになると、Web ブラウザーで pgAdmin にアクセスする準備が整います。

ステップ4-pgAdminへのアクセス

ローカル マシンで、好みの Web ブラウザーを開き、サーバーの IP アドレスに移動します。

http://your_domain

そこにアクセスすると、次のようなログイン画面が表示されます。

ステップ 2 で定義したログイン資格情報を入力すると、pgAdmin のようこそ画面が表示されます。

pgAdmin インターフェイスにアクセスできることを確認したので、あとは pgAdmin を PostgreSQL データベースに接続するだけです。ただし、その前に、PostgreSQL スーパーユーザーの構成に小さな変更を 1 つ加える必要があります。

ステップ 5 — PostgreSQL ユーザーの設定

前提条件の PostgreSQL チュートリアルに従った場合は、サーバーに PostgreSQL がインストールされ、新しいスーパーユーザー ロールとデータベースが設定されているはずです。

次に、ブラウザの pgAdmin 4 インターフェイスに戻り、左側にある [ブラウザ] メニューを見つけます。 [サーバー] を右クリックしてコンテキスト メニューを開き、マウスを [作成] の上に置いて、[サーバー…] をクリックします。

これにより、サーバー、役割、およびデータベースに関する情報を入力するウィンドウがブラウザーにポップアップ表示されます。

[全般] タブで、このサーバーの名前を入力します。これは何でもかまいませんが、わかりやすいものにすると役立つ場合があります。この例では、サーバーの名前は Sammy-server-1 です。

次に、[接続] タブをクリックします。 pgAdmin は Postgres データベースと同じマシンで実行されているため、Unix ドメイン ソケットを使用して接続できます。 TCP ソケット接続と比較して、Unix ドメイン ソケットははるかにパフォーマンスが高く、待ち時間が短くなります。この方法では、パスワードを設定する必要もありません。 [ホスト名/アドレス] フィールドに、/var/run/postgresql と入力します。ポートはデフォルトで 5432 に設定する必要があります。これは、PostgreSQL で使用されるデフォルトのポートであるため、このセットアップで機能します。

[メンテナンス データベース] フィールドに、接続するデータベースの名前を入力します。このデータベースは、サーバー上にすでに作成されている必要があることに注意してください。次に、前に構成した PostgreSQL ユーザー名を入力します。ここで、作成したデータベースは sammy で、ユーザー名は sammy です。

他のタブの空のフィールドはオプションであり、それらが必要な特定の設定を念頭に置いている場合にのみ入力する必要があります. [保存] ボタンをクリックすると、データベースが [ブラウザ] メニューの [サーバー] の下に表示されます。

pgAdmin4 を PostgreSQL データベースに正常に接続しました。 pgAdmin ダッシュボードからは、PostgreSQL プロンプトから行うのとほとんど同じことができます。これを説明するために、サンプル テーブルを作成し、Web インターフェースを介していくつかのサンプル データを入力します。

ステップ 6 — pgAdmin ダッシュボードでテーブルを作成する

pgAdmin ダッシュボードから、ウィンドウの左側にある [ブラウザ] メニューを見つけます。 Servers (1) の横にあるプラス記号 (+) をクリックして、ツリー メニューを展開します。次に、前の手順で追加したサーバー (この例では Sammy-server-1) の左側にあるプラス記号をクリックし、追加したデータベースの名前 (この例では sammy) である [データベース] を展開します。スキーマ (1)。次のようなツリー メニューが表示されます。

[テーブル] リスト アイテムを右クリックし、カーソルを [作成] の上に置いて [テーブル…] をクリックします。

これにより、Create-Table ウィンドウが開きます。このウィンドウの [全般] タブで、テーブルの名前を入力します。これは何でも構いませんが、簡単にするために、table-01 と呼びます。

次に、[列] タブに移動し、ウィンドウの右上隅にある + 記号をクリックして列を追加します。列を追加するときは、名前とデータ型を指定する必要があります。選択したデータ型で必要な場合は、長さを選択する必要がある場合があります。

さらに、PostgreSQL の公式ドキュメントには、通常、テーブルに主キーを追加することがベスト プラクティスであると記載されています。 主キー は、テーブル内の行の特別な識別子として使用できる特定の列または列のセットを示す制約です。これは必須ではありませんが、1 つ以上の列を主キーとして設定する場合は、右端にあるスイッチを [いいえ] から [はい] に切り替えます。

[保存] ボタンをクリックして、テーブルを作成します。

この時点で、テーブルを作成し、いくつかの列を追加しました。ただし、列にはまだデータが含まれていません。新しいテーブルにデータを追加するには、[ブラウザー] メニューでテーブルの名前を右クリックし、カーソルを [スクリプト] の上に置いて、[スクリプトの挿入] をクリックします。

これにより、ダッシュボードに新しいパネルが開きます。上部に、部分的に完成した INSERT ステートメントと、適切なテーブル名と列名が表示されます。疑問符 (?) をダミー データに置き換えて、追加するデータが各列に選択したデータ型と一致することを確認します。次の例に示すように、各行を新しい括弧のセットに追加し、各括弧のセットをコンマで区切って、複数のデータ行を追加することもできます。

必要に応じて、部分的に完成した INSERT スクリプトを次の例の INSERT ステートメントに自由に置き換えてください。

INSERT INTO public."table-01"(
    col1, col2, col3)
    VALUES ('Juneau', 14, 337), ('Bismark', 90, 2334), ('Lansing', 51, 556);

横向きの三角形のアイコン (▶) をクリックして、INSERT ステートメントを実行します。古いバージョンの pgAdmin では、実行アイコンは代わりに稲妻 (⚡) であることに注意してください。

テーブルとその中のすべてのデータを表示するには、[ブラウザー] メニューでテーブルの名前をもう一度右クリックし、カーソルを [データの表示/編集] の上に置き、[すべての行] を選択します。

これにより別の新しいパネルが開き、その下にある下部パネルの [データ出力] タブで、そのテーブル内に保持されているすべてのデータを表示できます。

これで、テーブルが正常に作成され、pgAdmin Web インターフェイスを介していくつかのデータが入力されました。もちろん、これは pgAdmin を介してテーブルを作成するために使用できる 1 つの方法にすぎません。たとえば、この手順で説明した GUI ベースの方法ではなく、SQL を使用してテーブルを作成してデータを入力することができます。

結論

このガイドでは、Python 仮想環境から pgAdmin 4 をインストールして構成し、Gunicorn と Nginx を使用して Web に提供する方法と、PostgreSQL データベースに接続する方法を学びました。さらに、このガイドでは、テーブルの作成と入力に使用できる 1 つの方法について説明しましたが、pgAdmin はテーブルの作成と編集以外にも使用できます。

pgAdmin のすべての機能を最大限に活用する方法の詳細については、このテーマに関するコミュニティ チュートリアルを確認することをお勧めします。

関連記事: