前書き

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

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

前提条件

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

  • Ubuntu 18.04を実行しているサーバー。 このサーバーには、sudo特権を持つ非rootユーザーと、「+ ufw +」で設定されたファイアウォールが必要です。 この設定のヘルプについては、https://www.digitalocean.com/community/tutorials/initial-server-setup-with-ubuntu-18-04 [Ubuntu 18.04の初期サーバーセットアップガイド]を参照してください。

  • サーバーにインストールされているApache Webサーバー。 Ubuntu 18.04にApache Webサーバーをインストールする方法マシンでこれを設定します。

  • サーバーにインストールされたPostgreSQL。 PostgreSQLをインストールして使用する方法のガイドに従って、これを設定できます。 Ubuntu 18.04で]。 このガイドに従って、pgAdminをPostgreSQLインスタンスに接続するために両方が必要になるため、新しいロールとデータベースを作成してください

  • サーバーにインストールされたPython 3と + venv +How [Ubuntu 18.04サーバーにPython 3をインストールしてプログラミング環境をセットアップするには]これらのツールをインストールして仮想環境をセットアップします。

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

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

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

sudo apt update

次に、次の依存関係をインストールします。 これらには、多精度算術ライブラリーである + libgmp3-dev +`が含まれます。 `+ libpq-dev +。ヘッダーファイルと、PostgreSQLバックエンドとの通信に役立つ静的ライブラリが含まれています。および + libapache2-mod-wsgi-py3 +、Apache内でPythonベースのWebアプリケーションをホストできるようにするApacheモジュール:

sudo apt install libgmp3-dev libpq-dev libapache2-mod-wsgi-py3

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

sudo mkdir -p /var/lib/pgadmin4/sessions
sudo mkdir /var/lib/pgadmin4/storage
sudo mkdir /var/log/pgadmin4

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

sudo chown -R : /var/lib/pgadmin4
sudo chown -R : /var/log/pgadmin4

次に、仮想環境を開きます。 プログラミング環境が存在するディレクトリに移動し、アクティブ化します。 https://www.digitalocean.com/community/tutorials/how-to-install-python-3-and-set-up-a-programming-environment-on-an-ubuntu-18-の命名規則に従う04-server [prerequisite Python 3 tutorial]、 `+ environments `ディレクトリに移動し、 ` my_env +`環境をアクティブにします。

cd environments/
source /bin/activate

これに続いて、pgAdmin 4ソースコードをマシンにダウンロードします。 ソースコードの最新バージョンを見つけるには、https://www.pgadmin.org/download/pgadmin-4-python-wheel/ [pgAdmin 4(Python Wheel)ダウンロードページ]に移動し、最新のリンクをクリックしてください。バージョン(v3.4、この記事の執筆時点)。 これにより、PostgreSQL Webサイトの*ダウンロード*ページに移動します。 そこに来たら、 `+ .whl `で終わるファイルリンクをコピーします。これはPythonディストリビューションに使用される標準の組み込みパッケージ形式です。 次に、ターミナルに戻り、次の ` wget `コマンドを実行します。リンクをPostgreSQLサイトからコピーしたものに置き換えてください。これにより、 ` .whl +`ファイルがサーバーにダウンロードされます。

wget https://ftp.postgresql.org/pub/pgadmin/pgadmin4/v/pip/pgadmin4--py2.py3-none-any.whl

次に、ホイールパッケージング標準のリファレンス実装である `+ wheel `パッケージをインストールします。 Pythonライブラリであるこのパッケージは、ホイールを構築するための拡張機能として機能し、 ` .whl +`ファイルを操作するためのコマンドラインツールを含みます。

python -m pip install wheel

次に、次のコマンドでpgAdmin 4パッケージをインストールします。

python -m pip install pgadmin4--py2.py3-none-any.whl

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

ステップ2-pgAdmin 4の構成

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

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

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

nano /lib/python3.6/site-packages/pgadmin4/config_local.py

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

environment / my_env / lib / python3.6 / 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で作成したディレクトリを指していることに注意してください。

これらの行を追加したら、ファイルを保存して閉じます( `+ CTRL + X `を押し、次に ` Y `を押し、次に ` ENTER +`を押します)。 これらの構成を設定したら、pgAdminセットアップスクリプトを実行してログイン認証情報を設定します。

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

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

Output. . .
Enter the email address and password to use for the initial pgAdmin user account:

Email address:
Password:
Retype password:

これに続いて、仮想環境を非アクティブ化します。

deactivate

`+ config_local.py +`ファイルで指定したファイルパスを思い出してください。 これらのファイルは、ステップ1で作成したディレクトリ内に保持されており、現在は非ルートユーザーが所有しています。 ただし、Webサーバーを実行しているユーザーとグループがアクセスできる必要があります。 Ubuntu 18.04のデフォルトでは、これらは* www-data ユーザーおよびグループであるため、次のディレクトリのアクセス許可を更新して、両方の www-data *所有権を付与します。

sudo chown -R www-data:www-data /var/lib/pgadmin4/
sudo chown -R www-data:www-data /var/log/pgadmin4/

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

ステップ3-Apacheの構成

Apache Webサーバーは_virtual hosts_を使用して構成の詳細をカプセル化し、単一のサーバーから複数のドメインをホストします。 前提条件のApacheチュートリアルに従った場合、「+ your_domain.conf +」という名前でサンプルの仮想ホストファイルを設定した可能性がありますが、このステップではpgAdmin Webインターフェースを提供できる新しいホストを作成します。

まず、ルートディレクトリにいることを確認します。

cd /

次に、 `+ pgadmin4.conf `という名前の新しいファイルを ` / sites-available / +`ディレクトリに作成します。 これは、サーバーの仮想ホストファイルになります。

sudo nano /etc/apache2/sites-available/pgadmin4.conf

以下のコンテンツをこのファイルに追加します。強調表示された部分を更新して、独自の構成に合わせてください。

/etc/apache2/sites-available/pgadmin4.conf

<VirtualHost *>
   ServerName

   WSGIDaemonProcess pgadmin processes=1 threads=25 python-home=/home///
   WSGIScriptAlias / /home////lib/python3.6/site-packages/pgadmin4/pgAdmin4.wsgi

   <Directory "/home////lib/python3.6/site-packages/pgadmin4/">
       WSGIProcessGroup pgadmin
       WSGIApplicationGroup %{GLOBAL}
       Require all granted
   </Directory>
</VirtualHost>

仮想ホストファイルを保存して閉じます。 次に、 `+ a2dissite `スクリプトを使用して、デフォルトの仮想ホストファイル ` 000-default.conf +`を無効にします。

sudo a2dissite 000-default.conf

次に、 `+ a2ensite `スクリプトを使用して、 ` pgadmin4.conf `仮想ホストファイルを有効にします。 これにより、 ` / sites-available / `ディレクトリの仮想ホストファイルから ` / sites-enabled / +`ディレクトリへのシンボリックリンクが作成されます。

sudo a2ensite pgadmin4.conf

これに続いて、構成ファイルの構文が正しいことをテストします。

apachectl configtest

設定ファイルがすべて正常な場合は、「構文OK +」が表示されます。 出力にエラーが表示される場合は、 ` pgadmin4.conf`ファイルを再度開き、IPアドレスとファイルパスがすべて正しいことを再確認してから、` + configtest`を再実行します。

出力に「+ Syntax OK +」が表示されたら、Apacheサービスを再起動して、新しい仮想ホストファイルを読み取ります。

sudo systemctl restart apache2

これでpgAdminが完全にインストールおよび構成されました。 次に、PostgreSQLデータベースに接続する前に、ブラウザーからpgAdminにアクセスする方法について説明します。

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

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

http://

表示されると、次のようなログイン画面が表示されます。

image:https://assets.digitalocean.com/articles/pgadmin/pgadmin_login_blank.png [pgAdminログイン画面]

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

image:https://assets.digitalocean.com/articles/pgadmin/pgadmin_welcome_page_1.png [pgAdmin Welcome Page]

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

ステップ5-PostgreSQLユーザーの構成

https://www.digitalocean.com/community/tutorials/how-to-install-and-use-postgresql-on-ubuntu-18-04 [前提条件のPostgreSQLチュートリアル]に従った場合、PostgreSQLはすでにインストールされているはずです。新しいスーパーユーザーの役割とデータベースが設定されたサーバー。

PostgreSQLのデフォルトでは、「Identification Protocol」または「ident」認証方法を使用してデータベースユーザーとして認証します。 これには、PostgreSQLがクライアントのUbuntuユーザー名を取得し、それを許可されたデータベースユーザー名として使用することが含まれます。 多くの場合、これによりセキュリティを強化できますが、pgAdminなどの外部プログラムをデータベースの1つに接続する場合にも問題が発生する可能性があります。 これを解決するために、pgAdminがデータベースに接続できるように、このPostgreSQLロールのパスワードを設定します。

ターミナルから、スーパーユーザーロールの下でPostgreSQLプロンプトを開きます。

sudo -u  psql

PostgreSQLプロンプトから、ユーザープロファイルを更新して、選択した強力なパスワードを設定します。

ALTER USER  PASSWORD '';

次に、PostgreSQLプロンプトを終了します。

\q

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

image:https://assets.digitalocean.com/articles/pgadmin/create_server_box_resized.png [サーバーコンテキストメニューの作成]

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

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

image:https://assets.digitalocean.com/articles/pgadmin/server_general_tab_resized.png [サーバーの作成-一般タブ]

次に、*接続*タブをクリックします。 *ホスト名/アドレス*フィールドに、「+ localhost 」と入力します。 * Port *はデフォルトで ` 5432 +`に設定する必要があります。これは、PostgreSQLで使用されるデフォルトのポートであるため、この設定で機能します。

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

image:https://assets.digitalocean.com/articles/pgadmin/connection_tab_resized.png [サーバーの作成-接続タブ]

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

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

ステップ6-pgAdminダッシュボードでのテーブルの作成

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

image:https://assets.digitalocean.com/articles/pgadmin/table_tree_menu_resized.png [拡張されたブラウザツリーメニュー]

  • Tables リスト項目を右クリックし、 Create の上にカーソルを置いて、 Table…*をクリックします。

image:https://assets.digitalocean.com/articles/pgadmin/create_table_resized.png [テーブルコンテキストメニューの作成]

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

image:https://assets.digitalocean.com/articles/pgadmin/create_table_general_tab_1.png [テーブルの作成-一般タブ]

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

さらに、https://www.postgresql.org/docs/9.1/static/ddl-constraints.html#AEN2520 [PostgreSQLの公式ドキュメント]では、主キーをテーブルに追加することが通常ベストプラクティスであると述べています。 _primary key_は、テーブル内の行の特別な識別子として使用できる特定の列または列のセットを示す制約です。 これは必須ではありませんが、1つ以上の列を主キーとして設定する場合は、右端のスイッチを*いいえ*から*はい*に切り替えます。

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

image:https://assets.digitalocean.com/articles/pgadmin/create_table_add_column_1primkey.png [テーブルの作成-主キーがオンの列タブ]

この時点で、テーブルを作成し、いくつかの列を追加しました。 ただし、列にはまだデータが含まれていません。 新しいテーブルにデータを追加するには、* Browser メニューでテーブルの名前を右クリックし、 Scripts の上にカーソルを置いて、 INSERT Script *をクリックします。

image:https://assets.digitalocean.com/articles/pgadmin/insert_script_context_menu.png [スクリプトコンテキストメニューの挿入]

これにより、ダッシュボードに新しいパネルが開きます。 上部には、適切なテーブル名と列名を含む、部分的に完成した「+ INSERT +」ステートメントが表示されます。 先に進んで、疑問符()をダミーデータに置き換えます。追加するデータは、各列で選択したデータ型に合わせてください。 次の例に示すように、各行をカンマで区切って新しい行に追加することで、複数行のデータを追加することもできます。

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

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

image:https://assets.digitalocean.com/articles/pgadmin/insert_script.png [INSERTステートメントの例]

稲妻アイコン()をクリックして、 `+ INSERT +`ステートメントを実行します。 テーブルとその中のすべてのデータを表示するには、* Browser メニューでテーブルの名前をもう一度右クリックし、 View / Edit Data の上にカーソルを置いて、 All Rows *を選択します。

image:https://assets.digitalocean.com/articles/pgadmin/view_edit_data_all_rows.png [データの表示/編集、すべての行のコンテキストメニュー]

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

image:https://assets.digitalocean.com/articles/pgadmin/view_data_output.png [データの表示-データ出力の例]

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

結論

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

pgAdminのすべての機能を最大限に活用する方法の詳細については、https://www.pgadmin.org/docs/pgadmin4/3.x/ [プロジェクトのドキュメント]を確認することをお勧めします。 PostgreSQLの詳細については、https://www.digitalocean.com/community/tags/postgresql?type = tutorials [コミュニティチュートリアル]をご覧ください。