Ubuntu 22.04でサーバーモードでpgAdmin 4をインストールおよび設定する方法

以下の内容を日本語で原文を言い換えてください、1つの選択肢で十分です:
イントロダクション

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

このチュートリアルでは、Ubuntu 22.04サーバーに最新版のpgAdminをインストールして設定する方法、ウェブブラウザ経由でpgAdminにアクセスし、サーバー上のPostgreSQLデータベースに接続する手順を説明します。

前提条件

このチュートリアルを完了するためには、以下が必要です:

  • A server running Ubuntu 22.04. This server should have a non-root user with sudo privileges, as well as a firewall configured with ufw. For help with setting this up, follow our Initial Server Setup Guide for Ubuntu 22.04.
  • Nginx installed and configured as a reverse proxy for http://unix:/tmp/pgadmin4.sock, following Step 1 and 2 of How To Configure Nginx as a Reverse Proxy on Ubuntu 22.04.
  • PostgreSQL installed on your server. You can set this up by following our guide on How To Install and Use PostgreSQL on Ubuntu 22.04. As you follow this guide, be sure to create a new role and database, as you will need both to connect pgAdmin to your PostgreSQL instance.
  • Python 3 and venv installed on your server. Follow How To Install Python 3 and Set Up a Programming Environment on an Ubuntu 22.04 server to install these tools and set up a virtual environment.

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

この文章を日本語で言い換えると以下のようになります:

現時点では、最新のpgAdminのバージョンはpgAdmin 4ですが、公式のUbuntuリポジトリ経由で利用可能な最新のバージョンはpgAdmin 3です。しかし、pgAdmin 3はもはやサポートされておらず、プロジェクトのメンテナーはpgAdmin 4のインストールを推奨しています。この手順では、プロジェクトの開発チームが推奨する仮想環境内での最新バージョンのpgAdmin 4のインストール方法と、その依存関係のインストールについて説明します。

始めに、最近行っていない場合は、サーバーのパッケージインデックスをアップデートしてください。

  1. sudo apt update

 

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

  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

 

その後、これらのディレクトリの所有権を非ルートユーザーとグループに変更してください。現在はルートユーザーの所有ですが、pgAdminは非ルートユーザーが所有する仮想環境からインストールします。そして、インストールプロセスではこれらのディレクトリ内にいくつかのファイルを作成します。ただし、インストール後は所有権をwww-dataユーザーとグループに変更してウェブ上で提供できるようにします。

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

 

次に、仮想環境を開きます。プログラム環境が格納されているディレクトリに移動して、それをアクティベートしてください。Python 3の前提条件チュートリアルの命名規則に従い、環境ディレクトリに移動して、「my_env」という環境をアクティベートします。

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

 

仮想環境をアクティブにした後、システムに最新バージョンのpipがインストールされていることを確認することが賢明です。pipを最新バージョンにアップグレードするには、以下のコマンドを実行してください。

  1. python -m pip install -U pip

 

Pythonのパッケージ管理ツールである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がインストールされているものの、ウェブインターフェースを正しく提供するために必要な権限や設定がまだいくつかあります。

pgAdminのメインの設定ファイルであるconfig.pyは、他の設定ファイルよりも先に読み込まれます。その内容は、pgAdminの他の設定ファイルで指定できるさらなる設定の参考点として利用することができますが、予期しないエラーを回避するために、config.pyファイル自体を編集しない方が良いです。新しいファイルであるconfig_local.pyに、いくつかの設定変更を追加します。このファイルは、メインの設定ファイルの後に読み込まれます。

今すぐお好みのテキストエディタを使用して、このファイルを作成してください。ここでは、nanoを使用します。

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

 

あなたのエディタに以下のコンテンツを追加してください。 (Anata no edita ni ika no kontentsu o tsuikashite kudasai.)

以下の表現を日本語で言い換えます(一つのオプションのみ):
environments/my_env/lib/python3.10/site-packages/pgadmin4/config_local.py環境ディレクトリ/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: this defines the file in which pgAdmin’s logs will be stored.
  • SQLITE_PATH: pgAdmin stores user-related data in an SQLite database, and this directive points the pgAdmin software to this configuration database. Because this file is located under the persistent directory /var/lib/pgadmin4/, your user data will not be lost after you upgrade.
  • SESSION_DB_PATH: specifies which directory will be used to store session data.
  • STORAGE_DIR: defines where pgAdmin will store other data, like backups and security certificates.
  • SERVER_MODE: setting this directive to True tells pgAdmin to run in Server mode, as opposed to Desktop mode.

Step 1で作成したディレクトリは、それぞれのファイルパスが指していることに注意してください。

これらの行を追加した後、ファイルを保存して閉じてください。もしnanoを使用している場合は、CTRL + Xを押した後、Yを押してからENTERキーを押してください。

その設定が完了したら、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の設定ファイルには以下が含まれています。

以下の文を日本語で言い換えてください。
/etc/nginx/sites-available/your_domain
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

Note

以下の意味を日本語で表現すると、

注意:この方法でGunicornを実行するとプロセスがターミナルと紐付きます。より長期的な解決策として、Supervisorのようなプログラムを使用してGunicornを起動してください。UbuntuとDebian VPSにSupervisorをインストールおよび管理する方法については、このチュートリアルに従ってください。

Gunicornがアプリケーションサーバーとして動作し、Nginxのリバースプロキシを介してアクセスできるようになると、ウェブブラウザでpgAdminにアクセスする準備が整います。

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

ローカルマシンでお好みのウェブブラウザを開き、サーバーのIPアドレスに移動してください。

http://your_domain

日本語での正しい断り書きは次の通りです。「到着すると、以下のようなログイン画面が表示されます。」

pgAdmin login screen

ステップ2で定義したログイン情報を入力してください。そうすれば、pgAdminのウェルカム画面に移動します。

pgAdmin Welcome Page

pgAdminのインターフェースにアクセスできることが確認できたので、残るはpgAdminをPostgreSQLデータベースに接続することだけです。しかし、それを行う前に、PostgreSQLスーパーユーザーの設定を少し変更する必要があります。

ステップ5 — PostgreSQLユーザーの設定を行います。

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

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

Create Server context menu

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

一つの選択肢で日本語に言い換えると:
「一般タブで、このサーバーの名前を入力してください。何でも構いませんが、説明的な名前にすると便利かもしれません。この例では、サーバーの名前はSammy-server-1としています。」

Create Server - General tab

次に、接続タブをクリックしてください。pgAdminはPostgresデータベースと同じマシン上で動作しているため、Unixドメインソケットを使用して接続することができます。TCPソケット接続に比べて、Unixドメインソケットはより高いパフォーマンスを持ち、遅延が少なくなります。この方法では、パスワードの設定も不要です。ホスト名/アドレスのフィールドには、/var/run/postgresqlと入力してください。ポート番号はデフォルトで5432に設定されており、PostgreSQLで使用されるデフォルトのポートとして機能します。

メンテナンスデータベースのフィールドに、接続したいデータベースの名前を入力します。なお、このデータベースはサーバー上で既に作成されている必要があります。次に、事前に設定したPostgreSQLのユーザー名を入力します。ここでは、作成したデータベースが”サミー”であり、ユーザー名も”サミー”です。

Create Server - Connection tab

他のタブの空白欄はオプションであり、それらを埋める必要があるのは、それらが必要な特定の設定がある場合のみです。保存ボタンをクリックすると、データベースがブラウザメニューのサーバーの下に表示されます。

pgAdmin4をPostgreSQLデータベースに正常に接続しました。pgAdminのダッシュボードから、PostgreSQLプロンプトで行えるほとんどの作業を行うことができます。これを具体的に示すために、ウェブインターフェースを通じて例のテーブルを作成し、いくつかのサンプルデータを挿入します。

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

pgAdminのダッシュボードから、ウィンドウの左側にあるブラウザメニューを見つけてください。その中で、サーバーを展開するためのプラス記号(+)をクリックしてください。次に、前の手順で追加したサーバーの左にあるプラス記号をクリックし、その後に追加したデータベースの名前(例えば、sammy)とスキーマ(1)を展開してください。以下のようなツリーメニューが表示されるはずです。

Expanded Browser tree menu

テーブルのリストアイテムを右クリックし、カーソルを「作成」に合わせて、テーブルをクリックしてください。

Create Table context menu

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

Create Table - General tab

それから、Columnsタブに移動して、ウィンドウの右上隅にある+マークをクリックして、いくつかの列を追加してください。列を追加する際には、名前とデータタイプを指定する必要があります。また、選択したデータタイプによっては、長さを選択する必要があるかもしれません。

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

テーブルを作成するには保存ボタンをクリックしてください。

Create Table - Columns Tab with Primary Key turned on

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

INSERT script context menu

これにより、ダッシュボードに新しいパネルが開かれます。上部には、適切なテーブル名と列名が示された部分的に完成したINSERT文が表示されます。ダミーデータで「?」を置き換え、各列に選択したデータ型に合致するデータを追加してください。以下の例のように、カンマで区切られた新しいカッコセットごとにデータの複数の行も追加できることに注意してください。

もしよければ、この例のINSERTステートメントで一部未完成のINSERTスクリプトを置き換えても構いません。

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

「INSERT」文を実行するには、横向きの三角形アイコン(▶)をクリックしてください。なお、古いバージョンのpgAdminでは、実行アイコンは代わりに稲妻のボルト(⚡)です。

ブラウザメニューでテーブルおよびその中のすべてのデータを表示するには、テーブル名をもう一度右クリックし、カーソルをView/Edit Dataに合わせてからAll Rowsを選択してください。

View/Edit Data, All Rows context menu

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

View Data - example data output

それによって、pgAdminのウェブインターフェースを介してテーブルを作成し、データを入力しました。もちろん、これはpgAdminを使用してテーブルを作成するための一つの方法です。たとえば、この手順で説明されているGUIベースの方法ではなく、SQLを使用してテーブルを作成し、データを入力することも可能です。

結論

このガイドでは、Python仮想環境からpgAdmin 4をインストールし、設定、GunicornとNginxを使用してWebにサーブし、PostgreSQLデータベースに接続する方法を学びました。さらに、このガイドでは、テーブルを作成してデータを追加するために使用できる一つの方法を詳しく説明しましたが、pgAdminは単にテーブルの作成と編集だけでなく、さまざまな用途に活用することができます。

pgAdminのすべての機能を最大限に活用する方法に関する詳細情報については、プロジェクトのドキュメンテーションをご覧いただくことをおすすめします。また、PostgreSQLに関するコミュニティチュートリアルでもさらに詳しく学ぶことができます。

コメントを残す 0

Your email address will not be published. Required fields are marked *