序章

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

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

前提条件

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

  • Ubuntu18.04を実行しているサーバー。 このサーバーには、sudo権限を持つroot以外のユーザーと、で構成されたファイアウォールが必要です。 ufw. これを設定するためのヘルプについては、Ubuntu18.04初期サーバーセットアップガイドに従ってください。
  • サーバーにインストールされているApacheWebサーバー。 Ubuntu 18.04にApacheWebサーバーをインストールする方法に関するガイドに従って、これをマシンに構成します。
  • サーバーにPostgreSQLがインストールされています。 これを設定するには、 Ubuntu18.04にPostgreSQLをインストールして使用する方法に関するガイドに従ってください。 このガイドに従うときは、必ず新しいロールとデータベースを作成してください。pgAdminをPostgreSQLインスタンスに接続するには両方が必要になるためです。
  • Python3と venv サーバーにインストールされています。 Python3をインストールしてUbuntu18.04サーバーにプログラミング環境をセットアップする方法に従って、これらのツールをインストールし、仮想環境をセットアップします。

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

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

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

  1. sudo apt update

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

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

これに続いて、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

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

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

仮想環境をアクティブ化した後、最新バージョンの pip システムにインストールされています。 のバージョン pip デフォルトのUbuntu18.04リポジトリから利用できるのはバージョン9.0.1ですが、最新バージョンは21.0.1です。 インストールされている場合 pyton3-pip 前提条件のPythonインストールチュートリアルで概説されているパッケージですが、最新バージョンにアップグレードしていない場合、次のステップでpgAdminを設定するときに問題が発生します。

改良する pip 最新バージョンにするには、次のコマンドを実行します。

  1. python -m pip install -U pip

これに続いて、pgAdmin4ソースコードをマシンにダウンロードします。 ソースコードの最新バージョンを見つけるには、 pgAdmin 4(Python Wheel)ダウンロードページに移動します。 最新バージョン(この記事の執筆時点では v5.1 )のリンクをクリックし、次のページでpipのリンクをクリックします。 このファイルブラウザページから、で終わるファイルリンクをコピーします .whl —Pythonディストリビューションに使用される標準のビルドパッケージ形式。 次に、ターミナルに戻り、次を実行します wget コマンド、リンクをPostgreSQLサイトからコピーしたものに置き換えてください。これにより、 .whl サーバーへのファイル:

  1. wget https://ftp.postgresql.org/pub/pgadmin/pgadmin4/v5.1/pip/pgadmin4-5.1-py3-none-any.whl

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

  1. python -m pip install wheel

次に、次のコマンドを使用してpgAdmin4パッケージをインストールします。

  1. python -m pip install pgadmin4-5.1-py3-none-any.whl

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

ステップ2—pgAdmin4を設定する

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

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

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

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

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

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

これらの行を追加したら、ファイルを保存して閉じます。 使用した場合 nano、プレスでそうする CTRL + X に続く Y その後 ENTER.

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

  1. 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: [email protected] Password: Retype password:

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

  1. deactivate

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

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

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

ステップ3—Apacheの構成

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

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

  1. cd /

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

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

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

/etc/apache2/sites-available/pgadmin4.conf
<VirtualHost *>
    ServerName your_server_ip

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

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

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

  1. sudo a2dissite 000-default.conf

注:前提条件のApacheチュートリアルに従っている場合は、すでに無効になっている可能性があります 000-default.conf 例の仮想ホスト構成ファイル(名前付き)を設定します your_domain.conf 前提条件で)。 この場合、無効にする必要があります your_domain.conf 次のコマンドを使用した仮想ホストファイル:

  1. sudo a2dissite your_domain.conf

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

  1. sudo a2ensite pgadmin4.conf

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

  1. apachectl configtest

構成ファイルがすべて整っている場合は、次のように表示されます。 Syntax OK. 出力にエラーが表示された場合は、 pgadmin4.conf ファイルを作成し、IPアドレスとファイルパスがすべて正しいことを再確認してから、 configtest.

あなたが見たら Syntax OK 出力で、Apacheサービスを再起動して、新しい仮想ホストファイルを読み取ります。

  1. sudo systemctl restart apache2

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

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

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

http://your_server_ip

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

手順2で定義したログインクレデンシャルを入力すると、pgAdminのようこそ画面が表示されます。

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

ステップ5—PostgreSQLユーザーを構成する

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

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

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

  1. sudo -u sammy psql

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

  1. ALTER USER sammy PASSWORD 'password';

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

  1. \q

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

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

General タブで、このサーバーの名前を入力します。 これは好きなものにすることができますが、わかりやすいものにすることが役立つ場合があります。 この例では、サーバーの名前は Sammy-server-1.

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

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

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

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

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

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

テーブルリスト項目を右クリックし、作成にカーソルを合わせてテーブル…をクリックします。

これにより、Create-Tableウィンドウが開きます。 このウィンドウのGeneralタブで、テーブルの名前を入力します。 これは何でもかまいませんが、簡単にするために、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では、実行アイコンは代わりに稲妻()であることに注意してください。

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

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

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

結論

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

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