序章
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
を使用してその依存関係をインストールするプロセスについて説明します。
最初に、サーバーのパッケージインデックスを最近更新していない場合は、更新します。
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ユーザーが所有しているため、これが必要ですが、root以外のユーザーが所有する仮想環境からpgAdminをインストールします。インストールプロセスでは、これらのディレクトリ内にいくつかのファイルを作成します。 ただし、インストール後、所有権を www-data ユーザーとグループに変更して、Webに提供できるようにします。
sudo chown -R sammy:sammy /var/lib/pgadmin4 sudo chown -R sammy:sammy /var/log/pgadmin4
次に、仮想環境を開きます。 プログラミング環境が存在するディレクトリに移動し、アクティブ化します。 前提条件のPython3チュートリアルの命名規則に従って、environments
ディレクトリに移動し、my_env
環境をアクティブ化します。
cd environments/ source my_env/bin/activate
仮想環境をアクティブ化した後、システムに最新バージョンのpip
がインストールされていることを確認するのが賢明です。 デフォルトのUbuntu18.04リポジトリから利用できるpip
のバージョンはバージョン9.0.1ですが、最新バージョンは21.0.1です。 前提条件のPythonインストールチュートリアルで概説されているようにpyton3-pip
パッケージをインストールしたが、それを最新バージョンにアップグレードしていない場合、次のステップでpgAdminを構成するときに問題が発生します。
pip
を最新バージョンにアップグレードするには、次のコマンドを実行します。
python -m pip install -U pip
これに続いて、pgAdmin4ソースコードをマシンにダウンロードします。 ソースコードの最新バージョンを見つけるには、 pgAdmin 4(Python Wheel)ダウンロードページに移動します。 最新バージョン(この記事の執筆時点では v5.1 )のリンクをクリックし、次のページでpipのリンクをクリックします。 このファイルブラウザページから、.whl
で終わるファイルリンクをコピーします。これは、Pythonディストリビューションで使用される標準のビルドパッケージ形式です。 次に、ターミナルに戻り、次のwget
コマンドを実行します。リンクを、PostgreSQLサイトからコピーしたリンクに置き換えてください。これにより、.whl
ファイルがサーバーにダウンロードされます。
wget https://ftp.postgresql.org/pub/pgadmin/pgadmin4/v5.1/pip/pgadmin4-5.1-py3-none-any.whl
次に、ホイールパッケージ標準のリファレンス実装であるwheel
パッケージをインストールします。 Pythonライブラリであるこのパッケージは、ホイールを構築するための拡張機能として機能し、.whl
ファイルを操作するためのコマンドラインツールが含まれています。
python -m pip install wheel
次に、次のコマンドを使用してpgAdmin4パッケージをインストールします。
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
を使用します。
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セットアップスクリプトを実行してログイン資格情報を設定します。
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: sammy@example.com Password: Retype password:
これに続いて、仮想環境を非アクティブ化します。
deactivate
config_local.py
ファイルで指定したファイルパスを思い出してください。 これらのファイルは、手順1で作成したディレクトリ内に保持されており、現在、root以外のユーザーが所有しています。 ただし、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は完全に設定されました。 ただし、プログラムはまだサーバーから提供されていないため、アクセスできないままです。 これを解決するために、pgAdminを提供するようにApacheを構成し、Webブラウザーを介してそのユーザーインターフェイスにアクセスできるようにします。
ステップ3—Apacheの構成
Apache Webサーバーは、仮想ホストを使用して構成の詳細をカプセル化し、単一のサーバーから複数のドメインをホストします。 前提条件のApacheチュートリアルに従った場合、your_domain.conf
という名前でサンプルの仮想ホストファイルを設定した可能性がありますが、このステップでは、pgAdminWebインターフェイスを提供できる新しいファイルを作成します。
まず、ルートディレクトリにいることを確認します。
cd /
次に、/sites-available/
ディレクトリにpgadmin4.conf
という名前の新しいファイルを作成します。 これは、サーバーの仮想ホストファイルになります。
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
を無効にします。
sudo a2dissite 000-default.conf
注:前提条件のApacheチュートリアルに従っている場合は、000-default.conf
を既に無効にして、仮想ホスト構成ファイルの例(前提条件でyour_domain.conf
という名前)を設定している可能性があります。 この場合、次のコマンドを使用してyour_domain.conf
仮想ホストファイルを無効にする必要があります。
sudo a2dissite your_domain.conf
次に、a2ensite
スクリプトを使用して、pgadmin4.conf
仮想ホストファイルを有効にします。 これにより、/sites-available/
ディレクトリ内の仮想ホストファイルから/sites-enabled/
ディレクトリへのシンボリックリンクが作成されます。
sudo a2ensite pgadmin4.conf
これに続いて、構成ファイルの構文が正しいことをテストします。
apachectl configtest
構成ファイルがすべて整っている場合は、Syntax OK
が表示されます。 出力にエラーが表示された場合は、pgadmin4.conf
ファイルを再度開き、IPアドレスとファイルパスがすべて正しいことを再確認してから、configtest
を再実行してください。
出力にSyntax OK
が表示されたら、Apacheサービスを再起動して、新しい仮想ホストファイルを読み取ります。
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プロンプトを開きます。
sudo -u sammy psql
PostgreSQLプロンプトから、ユーザープロファイルを更新して、選択した強力なパスワードを設定します。
ALTER USER sammy PASSWORD 'password';
次に、PostgreSQLプロンプトを終了します。
\q
次に、ブラウザのpgAdmin 4インターフェイスに戻り、左側にあるブラウザメニューを見つけます。 サーバーを右クリックしてコンテキストメニューを開き、作成にカーソルを合わせて、サーバー…をクリックします。
これにより、サーバー、役割、およびデータベースに関する情報を入力するウィンドウがブラウザにポップアップ表示されます。
General タブで、このサーバーの名前を入力します。 これは好きなものにすることができますが、わかりやすいものにすることが役立つ場合があります。 この例では、サーバーの名前はSammy-server-1
です。
次に、接続タブをクリックします。 ホスト名/アドレスフィールドにlocalhost
と入力します。 Portはデフォルトで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については、このテーマに関するコミュニティチュートリアルからも学ぶことができます。