Installation de PostgreSQL
Il existe plusieurs manières d'installer PostgreSQL. Sur notre environnement de TP basé sur Ubuntu 20.04, la manière recommandée est de passer par les dépots PostgreSQL pour apt.
Nous allons donc installer notre serveur de cette manière :
- Commençons par mettre à jour la liste des paquets apt
apt update
- Installer quelques dépendances nécessaires au reste des étapes
apt -y install vim bash-completion wget lsb-release gnupg2
- Enregistrer la clé du dépot apt en provenance de postgresql.org
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | apt-key add -
- Ajouter le dépot à la liste des dépots aps
echo "deb http://apt.postgresql.org/pub/repos/apt/ `lsb_release -cs`-pgdg main" | tee /etc/apt/sources.list.d/pgdg.list
Ce dépot contient le serveur PostgreSQL, le client, les librairies de développement et quelques outils périphériques
- Mettre à jour apt à nouveau, pour obtenir la liste des paquets dans le dépot nouvellement ajouté
- Enfin, installer PostgreSQL
apt install -y postgresql-13 postgresql-client-13
Le serveur est maintenant installé, nous pouvons le démarrer et l'arrêter avec la commande service
- Afficher l'état du serveur
service postgresql status
- Démarrer le serveur
service postgresql start
- Arrêter le serveur
service postgresql stop
pg_ctlcluster
est un autre outil permet de démarrer / arrêter l'instance, ainsi que de réaliser quelques actions très spécifiques à PostgreSQL (comme la promotion d'un serveur standby par exemple)
pg_ctlcluster
prend en argument la version de l'instance, son nom et une action. Pour trouver ces informations on peut utiliser la command pg_lsclusters
pg_lsclusters
Ver Cluster Port Status Owner Data directory Log file
13 main 5432 online postgres /var/lib/postgresql/13/main /var/log/postgresql/postgresql-13-main.log
- Démarrer le serveur avec
pg_ctlcluster
pg_ctlcluster 13 main start
- On peut vérifier que le serveur est bien démarré avec la commande
ps
. Profitons en pour constater la présence des sous-process de PostgreSQL.
ps fax
pg_lsclusters
nous indique également deux informations utiles :
- le répertoire de données :
/var/lib/postgresql/13/main
-
l'emplacement du fichier de logs :
/var/log/postgresql/postgresql-13-main.log
-
Afficher les logs du serveur
tail -500f /var/log/postgresql/postgresql-13-main.log
- Se rendre dans le répertoire de données du serveur
cd /var/lib/postgresql/13/main
Attention, nous sommes encore connectés en root
, il est très fortement recommandé de passer sur l'utilisateur postgres
avant de faire une quelconque manipulation autre que nécessitant les droits root
- Passer sur l'utilisateur
postgres
su - postgres
On note au passage que le répertoire utilisateur de postgres
est /var/lib/postgresql
postgres@03668c4e1013:~$ pwd
/var/lib/postgresql
Dans ce répertoire on retrouve par convention :
- Un répertoire par version installée de PostgreSQL
-
Dans chacun de ces répertoires, un répertoire par instance installée
-
Profitons en pour nous familiariser avec les fichiers et répertoires qui constituent le répertoire de données d'une instance PostgreSQL
cd 13/main/
ls -ltra
ls pg_wal/
ls base/
ls global/
cat PG_VERSION
- La configuration de l'instance peut se trouver dans ce répertoire mais on la trouve plus souvent dans
/etc/postgresql
ls -l /etc/postgresql/13/main/
less /etc/postgresql/13/main/postgresql.conf
less /etc/postgresql/13/main/pg_hba.conf
- Notre visite est terminée, nous pouvons nous connecter à l'instance.
psql