Comment installer et configurer pgAdmin 4 en mode serveur

introduction

pgAdmin est une plate-forme d’administration et de développement open-source pour PostgreSQL et ses systèmes de gestion de base de données associés. Écrit en Python et jQuery, il supporte toutes les fonctionnalités de PostgreSQL. Vous pouvez utiliser pgAdmin pour tout faire, de l’écriture de requêtes SQL de base à la surveillance de vos bases de données et à la configuration d’architectures de base de données avancées.

Dans ce tutoriel, nous expliquerons le processus d’installation et de configuration de la dernière version de pgAdmin sur un serveur Ubuntu 18.04, accéderons à pgAdmin via un navigateur Web et le connecterons à une base de données PostgreSQL sur votre serveur.

Conditions préalables

Pour compléter ce tutoriel, vous aurez besoin de:

Étape 1 - Installation de pgAdmin et de ses dépendances

Au moment de la rédaction de ce document, la version la plus récente de pgAdmin est pgAdmin 4, tandis que la version la plus récente disponible dans les référentiels officiels Ubuntu est pgAdmin 3. Cependant, pgAdmin 3 n’est plus pris en charge et les responsables de projet recommandent d’installer pgAdmin 4. Dans cette étape, nous allons passer en revue le processus d’installation de la dernière version de pgAdmin 4 dans un environnement virtuel (comme l’a recommandé l’équipe de développement du projet) et l’installation de ses dépendances à l’aide de + apt +.

Pour commencer, mettez à jour l’index de paquetage de votre serveur si vous ne l’avez pas fait récemment:

sudo apt update

Ensuite, installez les dépendances suivantes. Ceux-ci incluent + libgmp3-dev +, une bibliothèque arithmétique multi-précision; + libpq-dev +, qui inclut des fichiers d’en-tête et une bibliothèque statique facilitant la communication avec un serveur PostgreSQL; et + libapache2-mod-wsgi-py3 +, un module Apache qui vous permet d’héberger des applications Web basées sur Python dans Apache:

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

Ensuite, créez quelques répertoires dans lesquels pgAdmin stockera ses données de session, ses données de stockage et ses journaux:

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

Ensuite, changez la propriété de ces répertoires en utilisateurs et groupes non root. Cela est nécessaire car ils appartiennent actuellement à votre utilisateur * root *, mais nous allons installer pgAdmin à partir d’un environnement virtuel appartenant à votre utilisateur non root et le processus d’installation implique la création de certains fichiers dans ces répertoires. Après l’installation, toutefois, nous allons changer la propriété en faveur de l’utilisateur et du groupe * www-data * afin qu’ils puissent être diffusés sur le Web:

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

Ensuite, ouvrez votre environnement virtuel. Naviguez jusqu’au répertoire de votre environnement de programmation et activez-le. En suivant les conventions de dénomination du https://www.digitalocean.com/community/tutorials/how-to-install-python-3-and-set-up-a-programming-environment-on-an-ubuntu-18- 04-server [prérequis tutoriel sur Python 3], nous allons aller dans le répertoire + environnements + et activer l’environnement + my_env +:

cd environments/
source /bin/activate

Ensuite, téléchargez le code source de pgAdmin 4 sur votre ordinateur. Pour trouver la dernière version du code source, accédez à la page pgAdmin 4 (Python Wheel), puis cliquez sur le lien correspondant. version (v3.4, au moment de l’écriture). Cela vous mènera à une page * Téléchargements * sur le site Web de PostgreSQL. Une fois là, copiez le lien de fichier qui se termine par + .whl + - le format standard du paquet intégré utilisé pour les distributions Python. Revenez ensuite à votre terminal et exécutez la commande + wget + suivante, en veillant à remplacer le lien par celui que vous avez copié à partir du site PostgreSQL, qui téléchargera le fichier + .whl + sur votre serveur:

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

Ensuite, installez le paquet + wheel +, l’implémentation de référence de la norme d’emballage de la roue. Une bibliothèque Python, ce paquetage sert d’extension pour la construction de roues et comprend un outil de ligne de commande permettant de travailler avec les fichiers + .whl +:

python -m pip install wheel

Ensuite, installez le paquet pgAdmin 4 avec la commande suivante:

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

Cela prend en charge l’installation de pgAdmin et de ses dépendances. Avant de le connecter à votre base de données, vous devez toutefois apporter quelques modifications à la configuration du programme.

Étape 2 - Configuration de pgAdmin 4

Bien que pgAdmin ait été installé sur votre serveur, vous devez suivre certaines étapes pour vous assurer qu’il dispose des autorisations et des configurations nécessaires pour lui permettre de servir correctement l’interface Web.

Le fichier de configuration principal de pgAdmin, + config.py +, est lu avant tout autre fichier de configuration. Son contenu peut être utilisé comme point de référence pour d’autres paramètres de configuration pouvant être spécifiés dans les autres fichiers de configuration de pgAdmin, mais pour éviter des erreurs imprévues, vous ne devez pas éditer le fichier + config.py + lui-même. Nous allons ajouter des modifications de configuration dans un nouveau fichier, nommé + config_local.py +, qui sera lu après le fichier principal.

Créez ce fichier maintenant en utilisant votre éditeur de texte préféré. Ici, nous allons utiliser + nano +:

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

Dans votre éditeur, ajoutez le contenu suivant:

environnements / my_env / lib / python3.6 / sites-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

Voici ce que font ces cinq directives:

  • + LOG_FILE +: définit le fichier dans lequel les journaux de pgAdmin seront stockés.

  • + SQLITE_PATH +: pgAdmin stocke les données relatives à l’utilisateur dans une base de données SQLite. Cette directive pointe le logiciel pgAdmin vers cette base de données de configuration. Ce fichier étant situé dans le répertoire persistant + / var / lib / pgadmin4 / +, vos données utilisateur ne seront pas perdues après la mise à niveau.

  • + SESSION_DB_PATH +: spécifie quel répertoire sera utilisé pour stocker les données de session.

  • + STORAGE_DIR +: définit où pgAdmin stockera d’autres données, telles que des sauvegardes et des certificats de sécurité.

  • + SERVER_MODE +: définir cette directive sur + True + indique à pgAdmin de s’exécuter en mode serveur, par opposition au mode bureau.

Notez que chacun de ces chemins de fichiers pointe vers les répertoires que vous avez créés à l’étape 1.

Après avoir ajouté ces lignes, sauvegardez et fermez le fichier (appuyez sur + CTRL + X +, suivi de + Y + et ensuite + ENTER +). Une fois ces configurations en place, exécutez le script de configuration de pgAdmin pour définir vos informations de connexion:

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

Après avoir exécuté cette commande, vous verrez une invite vous demandant votre adresse électronique et un mot de passe. Celles-ci vous serviront d’identifiant de connexion lorsque vous accéderez ultérieurement à pgAdmin. Veillez donc à vous rappeler ou à noter ce que vous avez saisi ici:

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

Email address:
Password:
Retype password:

Ensuite, désactivez votre environnement virtuel:

deactivate

Rappelez les chemins de fichiers que vous avez spécifiés dans le fichier + config_local.py +. Ces fichiers se trouvent dans les répertoires créés à l’étape 1, qui appartiennent actuellement à votre utilisateur non root. Ils doivent cependant être accessibles à l’utilisateur et au groupe exécutant votre serveur Web. Par défaut sous Ubuntu 18.04, il s’agit de l’utilisateur et du groupe * www-data *. Mettez à jour les autorisations sur les répertoires suivants pour donner à * www-data * la propriété de ces deux fichiers:

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

Avec cela, pgAdmin est entièrement configuré. Toutefois, le programme n’est pas encore en cours d’exécution à partir de votre serveur et reste donc inaccessible. Pour résoudre ce problème, nous allons configurer Apache pour qu’il serve pgAdmin afin que vous puissiez accéder à son interface utilisateur via un navigateur Web.

Étape 3 - Configuration d’Apache

Le serveur Web Apache utilise _ hôtes virtuels_ pour encapsuler les détails de la configuration et héberger plusieurs domaines à partir d’un seul serveur. Si vous avez suivi le didacticiel Apache prérequis, vous avez peut-être configuré un exemple de fichier d’hôte virtuel sous le nom + votre_domaine.conf +, mais nous créerons dans cette étape un nouveau fichier à partir duquel nous pourrons servir l’interface Web pgAdmin.

Pour commencer, assurez-vous que vous êtes dans votre répertoire racine:

cd /

Créez ensuite un nouveau fichier dans votre répertoire + / sites-available / + appelé + pgadmin4.conf +. Ce sera le fichier hôte virtuel de votre serveur:

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

Ajoutez le contenu suivant à ce fichier, en veillant à mettre à jour les parties en surbrillance pour les aligner sur votre propre configuration:

/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>

Enregistrez et fermez le fichier hôte virtuel. Ensuite, utilisez le script + a2dissite + pour désactiver le fichier d’hôte virtuel par défaut, + 000-default.conf +:

sudo a2dissite 000-default.conf

Ensuite, utilisez le script + a2ensite pour activer votre fichier d’hôte virtuel` + pgadmin4.conf`. Cela créera un lien symbolique du fichier de l’hôte virtuel dans le répertoire + / sites-available / + vers le répertoire + / sites-enabled / +:

sudo a2ensite pgadmin4.conf

Ensuite, vérifiez que la syntaxe de votre fichier de configuration est correcte:

apachectl configtest

Si votre fichier de configuration est dans l’ordre, vous verrez «+ Syntaxe OK ». Si vous voyez une erreur dans la sortie, rouvrez le fichier ` pgadmin4.conf ` et vérifiez une nouvelle fois que votre adresse IP et les chemins de fichier sont corrects, puis réexécutez le ` configtest +`.

Une fois que vous voyez + Syntax OK + dans votre sortie, redémarrez le service Apache pour qu’il lise votre nouveau fichier d’hôte virtuel:

sudo systemctl restart apache2

pgAdmin est maintenant complètement installé et configuré. Nous verrons ensuite comment accéder à pgAdmin depuis un navigateur avant de le connecter à votre base de données PostgreSQL.

Étape 4 - Accéder à pgAdmin

Sur votre ordinateur local, ouvrez votre navigateur Web préféré et accédez à l’adresse IP de votre serveur:

http://

Une fois là-bas, un écran de connexion semblable à celui-ci s’affiche:

image: https: //assets.digitalocean.com/articles/pgadmin/pgadmin_login_blank.png [écran de connexion de pgAdmin]

Entrez les identifiants de connexion que vous avez définis à l’étape 2 et vous serez redirigé vers l’écran de bienvenue de pgAdmin:

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

Maintenant que vous avez confirmé que vous pouvez accéder à l’interface pgAdmin, il ne vous reste plus qu’à connecter pgAdmin à votre base de données PostgreSQL. Avant de le faire, cependant, vous devrez apporter une modification mineure à la configuration de votre superutilisateur PostgreSQL.

Étape 5 - Configuration de votre utilisateur PostgreSQL

Si vous avez suivi le tutoriel prerequisite, vous devriez déjà avoir installé PostgreSQL sur votre serveur avec un nouveau rôle de superutilisateur et une nouvelle base de données configurée.

Par défaut, dans PostgreSQL, vous vous authentifiez en tant qu’utilisateurs de base de données à l’aide de la méthode d’authentification «Identification Protocol» ou «ident». Cela implique que PostgreSQL utilise le nom d’utilisateur Ubuntu du client et l’utilise comme nom d’utilisateur autorisé pour la base de données. Cela peut permettre une sécurité accrue dans de nombreux cas, mais peut également entraîner des problèmes dans les cas où vous souhaitez qu’un programme externe, tel que pgAdmin, se connecte à l’une de vos bases de données. Pour résoudre ce problème, nous allons définir un mot de passe pour ce rôle PostgreSQL qui permettra à pgAdmin de se connecter à votre base de données.

Depuis votre terminal, ouvrez l’invite PostgreSQL sous votre rôle de superutilisateur:

sudo -u  psql

A partir de l’invite PostgreSQL, mettez à jour le profil de l’utilisateur afin de disposer d’un mot de passe fort de votre choix:

ALTER USER  PASSWORD '';

Puis quittez l’invite PostgreSQL:

\q

Revenez ensuite à l’interface de pgAdmin 4 dans votre navigateur et localisez le menu * Navigateur * sur le côté gauche. Cliquez avec le bouton droit sur * Serveurs * pour ouvrir un menu contextuel, passez votre souris sur * Créer *, puis cliquez sur * Serveur… *.

image: https: //assets.digitalocean.com/articles/pgadmin/create_server_box_resized.png [Menu contextuel Créer un serveur]

Cela fera apparaître une fenêtre dans votre navigateur dans laquelle vous saisirez des informations sur votre serveur, votre rôle et votre base de données.

Dans l’onglet * Général *, entrez le nom de ce serveur. Cela peut être ce que vous voulez, mais vous pouvez trouver utile de le rendre descriptif. Dans notre exemple, le serveur s’appelle + Sammy-server-1 +.

image: https: //assets.digitalocean.com/articles/pgadmin/server_general_tab_resized.png [Créer un serveur - Onglet Général]

Ensuite, cliquez sur l’onglet * Connexion *. Dans le champ * Host name / address *, entrez + localhost +. Le * Port * doit être réglé par défaut sur + 5432 +, ce qui fonctionnera pour cette configuration, car c’est le port par défaut utilisé par PostgreSQL.

Dans le champ * Maintenance database *, entrez le nom de la base de données à laquelle vous souhaitez vous connecter. Notez que cette base de données doit déjà être créée sur votre serveur. Ensuite, entrez le nom d’utilisateur et le mot de passe PostgreSQL que vous avez configurés précédemment dans les champs * Nom d’utilisateur * et * Mot de passe *, respectivement.

image: https: //assets.digitalocean.com/articles/pgadmin/connection_tab_resized.png [Créer un serveur - Onglet Connexion]

Les champs vides des autres onglets sont facultatifs et vous devez uniquement les renseigner si vous avez à l’esprit une configuration spécifique dans laquelle ils sont requis. Cliquez sur le bouton * Enregistrer * pour afficher la base de données sous * Serveurs * dans le menu * Navigateur *.

Vous avez correctement connecté pgAdmin4 à votre base de données PostgreSQL. Vous pouvez faire à peu près n’importe quoi depuis le tableau de bord pgAdmin que depuis l’invite de commande PostgreSQL. Pour illustrer cela, nous allons créer un exemple de tableau et le renseigner avec des exemples de données via l’interface Web.

Étape 6 - Création d’une table dans le tableau de bord pgAdmin

Dans le tableau de bord pgAdmin, localisez le menu * Navigateur * sur le côté gauche de la fenêtre. Cliquez sur le signe plus (* + ) à côté de * Servers (1) * pour développer le menu arborescent. Cliquez ensuite sur le signe plus situé à gauche du serveur que vous avez ajouté à l’étape précédente ( Sammy-server-1 * dans notre exemple), puis développez * Databases , le nom de la base de données que vous avez ajoutée ( sammy *, dans notre exemple), puis * Schemas (1) *. Vous devriez voir un menu arborescent comme suit:

image: https: //assets.digitalocean.com/articles/pgadmin/table_tree_menu_resized.png [Menu développé de l’arborescence du navigateur]

Cliquez avec le bouton droit sur l’élément de liste * Tables *, puis passez votre curseur sur * Créer * et cliquez sur * Table… *.

image: https: //assets.digitalocean.com/articles/pgadmin/create_table_resized.png [Menu contextuel Créer une table]

Cela ouvrira une fenêtre * Create-Table *. Sous l’onglet * Général * de cette fenêtre, entrez un nom pour la table. Cela peut être ce que vous voulez, mais pour simplifier les choses, nous le désignerons par * table-01 *.

image: https: //assets.digitalocean.com/articles/pgadmin/create_table_general_tab_1.png [Créer une table - Onglet Général]

Accédez ensuite à l’onglet * Colonnes * et cliquez sur le signe * + * dans le coin supérieur droit de la fenêtre pour ajouter des colonnes. Lorsque vous ajoutez une colonne, vous devez lui attribuer un * Nom * et un * Type de données *, et vous devrez peut-être choisir une * Longueur * si elle est requise par le type de données que vous avez sélectionné.

En outre, la https://www.postgresql.org/docs/9.1/static/ddl-constraints.html#AEN2520&official, la documentation officielle de PostgreSQL] indique que l’ajout d’une clé primaire à une table est généralement la meilleure pratique. Une clé primaire est une contrainte qui indique une colonne spécifique ou un ensemble de colonnes pouvant être utilisé comme identifiant spécial pour les lignes de la table. Ce n’est pas une obligation, mais si vous souhaitez définir une ou plusieurs de vos colonnes comme clé primaire, basculez le commutateur à l’extrême droite de * Non * à * Oui *.

Cliquez sur le bouton * Enregistrer * pour créer la table.

image: https: //assets.digitalocean.com/articles/pgadmin/create_table_add_column_1primkey.png [Créer une table - Onglet Colonnes avec la clé primaire activée]

À ce stade, vous avez créé une table et y avez ajouté quelques colonnes. Cependant, les colonnes ne contiennent pas encore de données. Pour ajouter des données à votre nouvelle table, cliquez avec le bouton droit de la souris sur le nom de la table dans le menu * Navigateur *, placez votre curseur sur * Scripts * et cliquez sur * INSERT Script *.

image: https: //assets.digitalocean.com/articles/pgadmin/insert_script_context_menu.png [Menu contextuel du script INSERT]

Cela ouvrira un nouveau panneau sur le tableau de bord. En haut, vous verrez une instruction + INSERT + partiellement complétée, avec les noms de table et de colonne appropriés. Continuez et remplacez les points d’interrogation (*? *) Par des données factices, en vous assurant que les données que vous ajoutez sont alignées sur les types de données que vous avez sélectionnés pour chaque colonne. Notez que vous pouvez également ajouter plusieurs lignes de données en ajoutant chaque ligne dans un nouvel ensemble de parenthèses, chaque ensemble de parenthèses étant séparé par une virgule, comme indiqué dans l’exemple suivant.

Si vous le souhaitez, n’hésitez pas à remplacer le script + INSERT + partiellement complété par cet exemple d’instruction + 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 [Exemple d’instruction INSERT]

Cliquez sur l’icône en forme d’éclair (* ⚡ *) pour exécuter l’instruction + INSERT +. Pour afficher le tableau et toutes les données qu’il contient, cliquez à nouveau avec le bouton droit de la souris sur le nom de votre tableau dans le menu * Navigateur *, passez votre curseur sur * Afficher / Modifier les données * et sélectionnez * Toutes les lignes *.

image: https: //assets.digitalocean.com/articles/pgadmin/view_edit_data_all_rows.png [Afficher / Modifier les données, menu contextuel Toutes les lignes]

Cela ouvrira un autre nouveau panneau, au-dessous duquel, dans l’onglet * Sortie de données * du panneau inférieur, vous pourrez voir toutes les données contenues dans ce tableau.

image: https: //assets.digitalocean.com/articles/pgadmin/view_data_output.png [Afficher les données - exemple de sortie de données]

Avec cela, vous avez réussi à créer une table et à la renseigner avec des données via l’interface Web de pgAdmin. Bien sûr, il ne s’agit que d’une méthode que vous pouvez utiliser pour créer une table via pgAdmin. Par exemple, il est possible de créer et de renseigner une table à l’aide de SQL au lieu de la méthode basée sur une interface graphique décrite dans cette étape.

Conclusion

Dans ce guide, vous avez appris à installer pgAdmin 4 à partir d’un environnement virtuel Python, à le configurer, à le servir sur le Web avec Apache et à le connecter à une base de données PostgreSQL. De plus, ce guide décrit une méthode qui peut être utilisée pour créer et remplir une table, mais pgAdmin peut être utilisé pour bien plus que la création et la modification de tables.

Pour plus d’informations sur la manière de tirer le meilleur parti de toutes les fonctionnalités de pgAdmin, nous vous invitons à consulter la project’s documentation.. Vous pouvez également en savoir plus sur PostgreSQL via notre Community tutorials sur le sujet.