CloudPanel : Mettre en place PostgreSQL et pgAdmin 4 sur Ubuntu 22

Introduction

Actuellement, CloudPanel ne propose pas de support natif pour PostgreSQL dans sa stack, malgré une demande de fonctionnalité active sur le sujet. Vous pouvez consulter cette feature request ici. Bien que cette fonctionnalité ne soit pas encore prise en charge, il est tout à fait possible de configurer PostgreSQL manuellement sur un serveur CloudPanel.

Dans cet article, nous allons vous guider à travers l’installation de PostgreSQL et de pgAdmin 4 dans un environnement CloudPanel. PostgreSQL est un système de gestion de bases de données relationnelles open source, réputé pour sa robustesse et sa flexibilité. pgAdmin 4, quant à lui, est un outil web qui facilite la gestion de PostgreSQL à travers une interface graphique conviviale. Nous aborderons les étapes nécessaires pour installer ces outils et configurer un reverse proxy pour y accéder facilement.

Prérequis

Avant de commencer, assurez-vous d’avoir les éléments suivants :

  • Un serveur fonctionnant sous Ubuntu : Les commandes présentées sont optimisées pour un environnement Ubuntu.
  • Accès root ou sudo : Vous aurez besoin de privilèges administratifs pour installer les logiciels nécessaires.
  • CloudPanel installé : Assurez-vous que votre instance CloudPanel est opérationnelle.

Use Case

Supposons que nous avons un serveur cloud configuré pour héberger plusieurs applications. Nous souhaitons ajouter PostgreSQL comme base de données pour notre application et pgAdmin 4 pour gérer cette base de données facilement à partir d’une interface web. Dans cet exemple, nous allons utiliser le domaine pgadmin.example.com pour accéder à pgAdmin 4. Il est important de noter que les commandes utilisées dans cet article se baseront sur notre nom de domaine example.com, donc il appartient à l’utilisateur d’adapter les commandes en fonction de ses choix de nomenclature.

Installer PostgreSQL 16

Ajoutez le dépôt officiel de PostgreSQL à votre liste de sources. Ouvrez un terminal et exécutez la commande suivante :

sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt/ $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'

Installez la clé du dépôt PostgreSQL pour authentifier les paquets :

wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -

Mettez à jour la liste des paquets disponibles puis installez PostgreSQL version 16 avec les commandes suivantes :

sudo apt update
sudo apt install postgresql-16 postgresql-contrib-16

Une fois l’installation terminée, vérifiez que PostgreSQL 16 est bien installé en exécutant :

psql --version

Cela devrait afficher quelque chose comme psql (PostgreSQL) 16.x. Redémarrez le service PostgreSQL pour vous assurer qu’il fonctionne correctement :

sudo systemctl restart postgresql

Configurer différentes versions PostgreSQL

Si vous avez déjà une ancienne version de PostgreSQL installée sur votre serveur, vous pouvez la conserver. En effet, plusieurs versions de PostgreSQL peuvent coexister sur le même système Ubuntu. Cette fonctionnalité est particulièrement avantageuse pour les développeurs et les administrateurs de bases de données souhaitant tester de nouvelles versions tout en maintenant l’accès à d’anciennes versions pour les applications qui en dépendent. Cependant, si vous préférez n’avoir qu’une seule instance de PostgreSQL, veuillez suivre les étapes ci-dessous.

Assurez-vous que l’ancienne version de PostgreSQL (par exemple la version 14) n’est pas en cours d’exécution. Vous pouvez vérifier cela en exécutant :

sudo systemctl status postgresql@14-main

Si l’ancienne version est active, vous pouvez l’arrêter avec :

sudo systemctl stop postgresql@14-main

Vérifiez sur quel port PostgreSQL 16 est configuré pour écouter. Ouvrez le fichier de configuration postgresql.conf :

sudo nano /etc/postgresql/16/main/postgresql.conf

Recherchez la ligne commençant par port. Elle doit ressembler à ceci :

port = 5432

Ajustez le port à la valeur par défaut, qui est 5432. Une fois ces modifications effectuées, redémarrez le service PostgreSQL pour vous assurer que toutes les configurations sont appliquées correctement :

sudo systemctl start postgresql@16-main

Définir le mot de Passe de l’utilisateur PostgreSQL

Une fois PostgreSQL installé, il est essentiel de sécuriser l’accès en définissant un mot de passe pour l’utilisateur par défaut, postgres.

sudo -u postgres psql

Ensuite, à l’intérieur de l’interface PostgreSQL, définissez le mot de passe :

\password

Terminez par :

\q

Créer un Reverse Proxy au niveau de CloudPanel

Pour accéder à pgAdmin 4 via un nom de domaine, nous allons configurer un reverse proxy. Connectez-vous à CloudPanel à l’adresse cloudpanel.example.com. Dans le menu Sites, cliquez sur Ajouter un site. Sélectionnez l’option « Créer un reverse proxy » et renseignez l’URL du reverse proxy souhaitée.

Voici la configuration que nous avons mise en place.

Configurer le Reverse Proxy

Enfin, modifiez votre configuration de reverse proxy pour rediriger les requêtes vers pgAdmin 4. Pour cela, accédez à votre site dans CloudPanel et cliquez sur l’onglet Vhost. Repérez la ligne proxy_pass {{reverse_proxy_url}}; située juste après location @reverse_proxy. Remplacez-la par la ligne suivante :

proxy_pass http://unix:/tmp/pgadmin4.sock;

Installer pgAdmin 4

Nous allons maintenant procéder à l’installation de pgAdmin 4. Commencez par installer les bibliothèques nécessaires.

sudo apt update
sudo apt install libgmp3-dev libpq-dev

Créez les répertoires nécessaires pour pgAdmin :

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

Changez les permissions de ces répertoires pour l’utilisateur qui exécutera pgAdmin, à savoir l’utilisateur du reverse proxy créé par CloudPanel, dans notre cas example-pgadmin :

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

Configurer pgAdmin 4

Vous devez maintenant modifier le fichier de configuration local de pgAdmin 4. Ouvrez le fichier avec un éditeur de texte :

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

Ajoutez les lignes suivantes :

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
WTF_CSRF_ENABLED = False

Configurer l’environnement virtuel pour pgAdmin 4

Pour exécuter pgAdmin 4, nous allons utiliser Python, qui est un langage de programmation nécessaire pour faire fonctionner l’application. L’utilisation d’un environnement virtuel (venv) est également recommandée. Cela permet d’isoler les dépendances de pgAdmin 4 des autres projets sur le système, assurant ainsi une gestion plus propre et sans conflits.

Naviguez vers votre répertoire d’utilisateur et créez un environnement virtuel :

cd /home/example-pgadmin
mkdir environments
cd environments/
python3 -m venv pg_admin

Activez l’environnement virtuel :

source pg_admin/bin/activate

Une fois l’environnement virtuel activé, mettez à jour pip et installez pgAdmin 4 ainsi que Gunicorn, un serveur d’application WSGI qui va nous permettre d’exécuter pgAdmin.

python -m pip install -U pip
python -m pip install pgadmin4==6.10
python -m pip install gunicorn

Définir les accès à pgAdmin 4

Après avoir installé pgAdmin 4, exécutez le script de configuration pour définir vos identifiants de connexion :

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

Lorsque vous exécutez cette commande, vous verrez une invite demandant votre adresse e-mail et un mot de passe. Ces informations serviront de identifiants de connexion lorsque vous accéderez à pgAdmin 4 ultérieurement. Assurez-vous de noter ou de mémoriser ce que vous entrez à ce stade.

Démarrer pgAdmin 4

Utilisez Gunicorn pour démarrer pgAdmin 4 :

gunicorn --bind unix:/tmp/pgadmin4.sock --workers=1 --threads=25 --chdir /home/example-pgadmin/environments/pg_admin/lib/python3.10/site-packages/pgadmin4 pgAdmin4:app

Vérifier l’accès à pgAdmin

Les utilisateurs pourront accéder à pgAdmin 4 à l’adresse pgadmin.example.com en utilisant les identifiants que vous avez définis précédemment.

Une fois connecté, faites un clic droit sur “Servers” dans la barre latérale, puis sélectionnez “Nouveau” > “Serveur”. Utilisez les informations ci-dessous pour configurer votre connexion à PostgreSQL.

Dans l’onglet General, attribuez un nom à votre connection. Ensuite, dans l’onglet correspondant, renseignez les champs suivants :

  • Nom d’hôte / Adresse : localhost
  • Port : 5432
  • Base de données de maintenance : postgres
  • Nom d’utilisateur : postgres
  • Mot de passe : le mot de passe que vous avez défini

Lancer pgAdmin 4 en mode détaché

Une fois que vous vous êtes assuré que pgAdmin 4 fonctionne correctement, il est judicieux de le relancer en mode détaché. Cela vous permettra de garder le processus en cours d’exécution même après avoir quitté votre session SSH, tout en redirigeant les logs dans un dossier spécifique.

Créez un répertoire pour les logs de Gunicorn :

mkdir /home/example-pgadmin/logs/gunicorn

Ensuite, assurez-vous que votre environnement virtuel est toujours activé :

source pg_admin/bin/activate

Lancez pgAdmin 4 en mode détaché avec la commande suivante, en redirigeant les sorties dans un fichier de log :

nohup gunicorn --bind unix:/tmp/pgadmin4.sock --workers=1 --threads=25 --chdir /home/example-pgadmin/environments/pg_admin/lib/python3.10/site-packages/pgadmin4 pgAdmin4:app > /home/example-pgadmin/logs/gunicorn/gunicorn.log 2>&1 &

Cela garantit que les logs de pgAdmin 4 seront enregistrés dans le répertoire que vous avez créé, facilitant ainsi la gestion et la surveillance de l’application.

Sortir de l’environnement virtuel

Pour terminer votre session dans l’environnement virtuel, utilisez la commande suivante :

deactivate

Étapes pour arrêter pgAdmin4

Utilisez la commande ps pour lister les processus en cours et trouver celui que vous avez lancé avec nohup. Vous pouvez filtrer les résultats avec grep pour faciliter la recherche.

ps aux | grep gunicorn

Cette commande affichera une ligne contenant le processus Gunicorn, semblable à ceci :

root 1177168  0.0  0.2  29188 11872 ?  S 11:17   0:02 /home/example-pgadmi...

Dans cet exemple, 1177168 est l’identifiant de processus (PID). Une fois que vous avez le PID, vous pouvez arrêter le processus avec la commande kill. Remplacez 1177168 par le PID réel que vous avez trouvé :

kill -9 1177168 

Conclusion

Vous avez maintenant installé PostgreSQL et pgAdmin 4 sur votre serveur CloudPanel. Grâce à l’utilisation de Python et des environnements virtuels, vous avez créé une installation propre et isolée pour pgAdmin 4, ce qui facilite la gestion de vos projets et bases de données. Cette configuration vous permettra de bénéficier d’un environnement stable pour le développement et l’administration de vos bases de données PostgreSQL.

Références

Architecte logiciel & CTO * Plus de publications

Architecte logiciel, Développeur d'application diplomé d'ETNA, la filière d'alternance d'Epitech, j'ai acquis une expertise solide dans le développement d'applications, travaillant sur des projets complexes et techniquement diversifiés. Mon expérience englobe l'utilisation de divers frameworks et langages, notamment Symfony, Api Platform, Drupal, Zend, React Native, Angular, Vue.js, Shell, Pro*C...

Contributeurs

0 0 votes
Évaluation de l'article
guest
0 Commentaires
Le plus ancien
Le plus récent Le plus populaire
Commentaires en ligne
Afficher tous les commentaires

Ingénierie informatique (SSII)

Applize crée des logiciels métiers pour accompagner les entreprises dans la transition vers le zéro papier.


Avez-vous un projet en tête ? Discutons-en.