Comment installer et configurer pgAdmin 4 en mode serveur sur Ubuntu 22.04

De Get Docs
Aller à :navigation, rechercher

Introduction

pgAdmin est une plateforme 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 prend en charge toutes les fonctionnalités présentes dans 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 didacticiel, nous allons parcourir le processus d'installation et de configuration de la dernière version de pgAdmin sur un serveur Ubuntu 22.04, accéder à pgAdmin via un navigateur Web et le connecter à une base de données PostgreSQL sur votre serveur.

Conditions préalables

Pour terminer ce tutoriel, vous aurez besoin de :

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

Au moment d'écrire ces lignes, la version la plus récente de pgAdmin est pgAdmin 4, tandis que la version la plus récente disponible via les dépôts officiels d'Ubuntu est pgAdmin 3. Cependant, pgAdmin 3 n'est plus pris en charge et les responsables du projet recommandent d'installer pgAdmin 4. Dans cette étape, nous passerons en revue le processus d'installation de la dernière version de pgAdmin 4 dans un environnement virtuel (comme recommandé par l'équipe de développement du projet) et l'installation de ses dépendances à l'aide de apt.

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

sudo apt update

Ensuite, installez les dépendances suivantes. Ceux-ci inclus libgmp3-dev, une bibliothèque arithmétique multiprécision ; libpq-dev, qui inclut des fichiers d'en-tête et une bibliothèque statique qui facilite la communication avec un backend PostgreSQL :

sudo apt install libgmp3-dev libpq-dev

Ensuite, créez quelques répertoires dans lesquels pgAdmin stockera ses données de sessions, 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 votre utilisateur et groupe non root. Ceci 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, cependant, nous allons changer la propriété de l'utilisateur et du groupe www-data afin qu'il puisse être diffusé sur le Web :

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

Ensuite, ouvrez votre environnement virtuel. Accédez au répertoire dans lequel se trouve votre environnement de programmation et activez-le. En suivant les conventions de dénomination du tutoriel Python 3 prérequis, nous allons passer au environments répertoire et activez le my_env environnement:

cd environments/
source my_env/bin/activate

Après avoir activé l'environnement virtuel, il serait prudent de s'assurer que vous disposez de la dernière version de pip installé sur votre système. Mettre à niveau pip à la dernière version, exécutez la commande suivante :

python -m pip install -U pip

Utilisation pip à installer pgadmin4:

python -m pip install pgadmin4==6.10

Ensuite, installez Gunicorn, un serveur Python WSGI qui sera utilisé avec Nginx pour servir le pgadmin interface Web plus loin dans le didacticiel :

python -m pip install gunicorn

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

Étape 2 — Configuration de pgAdmin 4

Bien que pgAdmin ait été installé sur votre serveur, vous devez encore suivre quelques é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 qui peuvent être spécifiés dans les autres fichiers de configuration de pgAdmin, mais pour éviter des erreurs imprévues, vous ne devez pas modifier le config.py fichier lui-même. Nous allons ajouter quelques modifications de configuration à un nouveau fichier, nommé config_local.py, qui sera lu après le primaire.

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

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

Dans votre éditeur, ajoutez le contenu suivant :

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

Voici ce que font ces cinq directives :

  • LOG_FILE: ceci définit le fichier dans lequel les logs de pgAdmin seront stockés.
  • SQLITE_PATH: pgAdmin stocke les données relatives à l'utilisateur dans une base de données SQLite, et cette directive pointe le logiciel pgAdmin vers cette base de données de configuration. Parce que ce fichier est situé sous 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, comme les sauvegardes et les 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, enregistrez et fermez le fichier. Si vous avez utilisé nano, faites-le en appuyant sur CTRL + X suivie par Y et alors ENTER.

Une fois ces configurations en place, exécutez le script de configuration pgAdmin pour définir vos identifiants de connexion :

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

Après avoir exécuté cette commande, vous verrez une invite vous demandant votre adresse e-mail et un mot de passe. Ceux-ci vous serviront d'identifiants de connexion lorsque vous accéderez à pgAdmin plus tard, alors assurez-vous de vous souvenir ou de prendre note de ce que vous entrez ici :

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

Email address: [email protected]
Password:
Retype password:

Avec cela, pgAdmin est entièrement configuré. Cependant, le programme n'est pas encore servi depuis votre serveur, il reste donc inaccessible. Pour résoudre ce problème, nous allons configurer Gunicorn et Nginx pour servir pgAdmin afin que vous puissiez accéder à son interface utilisateur via un navigateur Web.

Étape 3 - Démarrage de Gunicorn et configuration de Nginx

Vous utiliserez Gunicorn pour servir pgAdmin en tant qu'application Web. Cependant, en tant que serveur d'application, Gunicorn ne sera disponible que localement et non accessible via Internet. Pour le rendre disponible à distance, vous devrez utiliser Nginx comme proxy inverse.

Après avoir rempli les conditions préalables pour configurer Nginx en tant que proxy inverse, votre fichier de configuration Nginx contiendra ceci :

/etc/nginx/sites-available/votre_domaine

server {
    listen 80;
    listen [::]:80;

    server_name your_domain www.your_domain;
        
    location / {
        proxy_pass http://unix:/tmp/pgadmin4.sock;
        include proxy_params;
    }
}

Cette configuration de proxy inverse permet à votre serveur Gunicorn d'être accessible dans votre navigateur local. Démarrez votre serveur Gunicorn avec l'application pgAdmin :

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

Remarque : L'appel de Gunicorn de cette manière lie le processus à votre terminal. Pour une solution à plus long terme, invoquez Gunicorn avec un programme comme Supervisor. Vous pouvez suivre ce tutoriel sur comment installer et gérer Supervisor sur Ubuntu et Debian VPS.


Avec Gunicorn agissant en tant que serveur d'application rendu accessible par votre proxy inverse Nginx, vous êtes prêt à accéder à pgAdmin dans votre navigateur Web.

É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://your_domain

Une fois sur place, un écran de connexion semblable à celui-ci s'affichera :

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

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 PostgreSQL prérequis, vous devriez déjà avoir PostgreSQL installé sur votre serveur avec un nouveau rôle de superutilisateur et une base de données configurée.

Ensuite, revenez à l'interface pgAdmin 4 dans votre navigateur et localisez le menu Navigateur sur le côté gauche. Faites un clic droit sur Servers pour ouvrir un menu contextuel, passez votre souris sur Create, et cliquez sur Server….

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

Dans l'onglet Général, saisissez le nom de ce serveur. Cela peut être tout ce que vous voulez, mais vous trouverez peut-être utile d'en faire quelque chose de descriptif. Dans notre exemple, le serveur est nommé Sammy-server-1.

Cliquez ensuite sur l'onglet Connexion. Étant donné que pgAdmin s'exécute sur la même machine que votre base de données Postgres, vous pouvez vous connecter à l'aide d'un socket de domaine Unix. Par rapport aux connexions de socket TCP, les sockets de domaine Unix sont beaucoup plus performants avec une latence plus faible. Cette méthode évite également la nécessité de configurer un mot de passe. Dans le champ Nom/adresse d'hôte, saisissez /var/run/postgresql. Le Port doit être réglé sur 5432 par défaut, qui fonctionnera pour cette configuration, car c'est le port par défaut utilisé par PostgreSQL.

Dans le champ Base de données de maintenance, 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 PostgreSQL que vous avez configuré précédemment. Ici, notre base de données créée est sammy et le nom d'utilisateur est sammy.

Les champs vides dans les autres onglets sont facultatifs, et il est seulement nécessaire de les remplir si vous avez une configuration spécifique à l'esprit dans laquelle ils sont requis. Cliquez sur le bouton Enregistrer et la base de données apparaîtra sous Serveurs dans le menu Navigateur.

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

Étape 6 - Création d'un tableau dans le tableau de bord pgAdmin

Dans le tableau de bord de pgAdmin, localisez le menu Navigateur sur le côté gauche de la fenêtre. Cliquez sur le signe plus (+) à côté de Serveurs (1) pour développer le menu arborescent qu'il contient. Ensuite, cliquez sur le signe plus à 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 vous avez ajouté (sammy, dans notre exemple), puis Schémas (1). Vous devriez voir un menu arborescent comme celui-ci :

Faites un clic droit sur l'élément de liste Tables, puis passez votre curseur sur Create et cliquez sur 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 tout ce que vous voulez, mais pour simplifier les choses, nous l'appellerons table-01.

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. Lors de l'ajout d'une colonne, vous devez lui attribuer un Nom et un Type de données, et vous devrez peut-être choisir une Longueur si cela est requis par le type de données que vous avez sélectionné.

De plus, 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 exigence, 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 le tableau.

À ce stade, vous avez créé un tableau et y avez ajouté quelques colonnes. Cependant, les colonnes ne contiennent pas encore de données. Pour ajouter des données à votre nouveau tableau, faites un clic droit sur le nom du tableau dans le menu Navigateur, passez votre curseur sur Scripts et cliquez sur INSERER Script.

Cela ouvrira un nouveau panneau sur le tableau de bord. En haut, vous verrez un INSERT instruction, avec les noms de table et de colonne appropriés. Allez-y et remplacez les points d'interrogation (?) par des données factices, en vous assurant que les données que vous ajoutez correspondent aux 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 illustré dans l'exemple suivant.

Si vous le souhaitez, n'hésitez pas à remplacer le INSERT script avec cet exemple INSERT déclaration:

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

Cliquez sur l'icône du triangle latéral () pour exécuter la INSERT déclaration. Notez que dans les anciennes versions de pgAdmin, l'icône d'exécution est plutôt un éclair ().

Pour afficher le tableau et toutes les données qu'il contient, faites à nouveau un clic droit 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.

Cela ouvrira un autre nouveau panneau, en dessous duquel, dans l'onglet Sortie de données du panneau inférieur, vous pouvez afficher toutes les données contenues dans ce tableau.

Avec cela, vous avez réussi à créer une table et à la remplir avec des données via l'interface Web pgAdmin. Bien sûr, ce n'est qu'une méthode que vous pouvez utiliser pour créer une table via pgAdmin. Par exemple, il est possible de créer et de remplir une table à l'aide de SQL au lieu de la méthode basée sur l'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 diffuser sur le Web avec Gunicorn et Nginx, et à le connecter à une base de données PostgreSQL. De plus, ce guide a 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 simplement créer et éditer des tables.

Pour plus d'informations sur la façon de tirer le meilleur parti de toutes les fonctionnalités de pgAdmin, nous vous encourageons à consulter la documentation du projet [1]. Vous pouvez également en savoir plus sur PostgreSQL grâce à nos tutoriels communautaires sur le sujet.