Justin Ollier aka Monsieur J


Project maintained by MonsieurJ42 Hosted on GitHub Pages — Theme by mattgraham

Tuto installation PostgreSQL et PostGIS sur Windows 10

Pour mon premier tuto nous allons voir une installation basique mais pourtant diablement utile, l’installation du SGBD PostgreSQL et de son extension spatiale PostGIS sur un OS Windows 10. Je présenterai l’installation MacOS et Linux à une autre occasion. Je ferai surement une deuxième partie de tuto ou je rentrerai dans les détails d’utilisations.

Baptmen suis bien, ceci est pour toi.

Télécharger l’utilitaire d’installation

Pour ceci rendez-vous sur le site postgresql.org, et allez dans la section download puis Windows et télécharger une version récente. Personnellement; à l’heure de l’écriture de ce tuto, je travaille sur la 11. Une version 13 est disponible depuis le 24 septembre 2020, mais nous allons installer la version 12, la dernière en date avec laquelle PostGIS est compatible.

En cliquant sur le lien « Download the installer » vous arriverez sur le site de EnterpriseDB.

Oui vous pouvez compiler vous-même PostgreSQL, mais des gens l’ont déjà fait pour vous en réduisant l’installation à un simple .exe alors pourquoi se priver ? Téléchargez ensuite la version souhaitez, pour moi ce sera la 12.4 Windows x86-64.

Installation de PostgreSQL

Petite précision, afin de mener tout cela a bien vous devez disposer d’accès administrateur sur votre PC (en même temps si vous n’avez pas d’accès admin à votre PC vous disposez sûrement d’un service qui peut vous faire l’installation).

Exécutez le fichier que vous venez de récupérer, et acceptez le popup admin. Il va alors installer ses dépendances C++ si vous n’en disposez pas déjà, pour ensuite vous ouvrir l’utilitaire d’installation.

Cliquez alors sur suivant. Vous devez alors spécifier le répertoire d’installation. Choisissez le bien, vos bases de données et extension y seront stockée. Personnellement j’ai de la place sur mon disque système je vais donc garder le chemin par défaut au sein du « Program Files ». Si votre mémoire est défaillante, notez votre emplacement d’installation, vous en aurez besoin plus tard.

Vous arrivez ensuite à la « Sélection des composants », je vais vous les détaillez rapidement, mais globalement vous pouvez tout installer ou appliquer mon choix personnel :

PostgreSQL Server

C’est le composant principal à installer parce que sans Server pas de base de données.

pgAdmin 4

N’étant pas un informaticien barbu, j’aime bien disposer d’une GUI (Graphical User Interface), parce que travailler sur le terminal c’est classe, mais nous somme au XXIème siècle. pgAdmin vous facilitera largement l’administration / organisation de votre serveur de données et la création de vos requêtes. Nous avons dorénavant droit, avec la version 4, à une application marchant sur un web-serveur et se lançant dans votre navigateur (je vous rassure ça s’installe tout seul et ça marche tout seul, pas de paramétrage d’un Apache ou d’un Tomcat ici).

Stack Builder

Un bon outil pour la gestion d’extension, mais personnellement il est bloqué par le proxy de mon université du coup je ne l’utilise pas. Je vous montrerai donc l’installation de PostGIS en contournant ceci.

Command Line Tools

Très, très, très important, cette partie vas vous installer tous les outils de gestion de sauvegarde, d’import de données ainsi qu’une console psql... Tout du moins je crois que ça fait ça, je n’ai jamais fait d’installation sans.

Lorsque votre sélection est faite vous pouvez cliquer sur suivant.

Vous vous souvenez quand je vous ai dit que le répertoire d’installation était important car il contenait vos bases de données ? Et bien j’ai menti, vous pouvez choisir ou stocker vos données. Mais si vous êtes une tête percée, légèrement désorganiser comme moi, garder celui par défaut, soit un répertoire « data » au sein de votre répertoire d’installation puis cliquez sur suivant.

Vous arrivez alors à la création du premier superutilisateur. Celui-ci prendra comme identifiant postgres et le mot de passe que vous lui indiquez. En cliquant sur suivant vous arriverez sur le port d’écoute de votre serveur, laissez 5432 (à moins que vous soyez une craque en administration de réseaux).

Choisissez votre langue locale (celle qui vas servir à l'encodage de la base) et cliquez sur suivant pour obtenir un résumé de l’installation. Vous pouvez alors faire deux fois suivant pour lancer l’installation de PostgreSQL, (ça peut être un peu long) et vous avez terminé… l’installation, les choses sérieuses commence.

Initialisé PostgreSQL

La première étape va être de mettre à jour votre PATH car pour l’instant si vous souhaitez accéder à PostgreSQL via le terminal vous devriez obtenir ça :

Pour cela récupérer le chemin d’accès au dossier bin de votre installation PostgreSQL (je vous ai dit de le noter). Aller en suite dans les paramètres du système (Win + R : Système ou en cliquant sur le lien « Information Système », dans la section du même nom, de la partie « Système » des Paramètres de Windows) pour ouvrir la fenêtre Système (à droite) :

Cliquez sur « Modifier les paramètres » (vous devez être admin encore une fois). Ceci ouvrira la fenêtre suivante :

Allez dans l’onglet « Paramètres Système avancées » et cliquez sur « Variables d’environnement… » et sélectionné « Path » dans la section « Variables Système » et cliquez sur « Modifier… ». Faite « Nouveau » et ajouter le chemin du dossier bin suscité :

Dans cette partie « Variables d’environnement… » ajoutée aussi les variables suivantes :

Ensuite validez toutes les fenêtres. Dorénavant la commande « psql » dans le terminal devrait vous donner ceci :

Si vous rentrez le mot de passe que vous avez créé vous devriez obtenir une erreur, car oui vous n’êtes rien pour le serveur (je parle de votre nom d'utilisateur Windows). Pour s’assurer que tout marche entrer la commande :

psl -U postgres

L'option « -U» stipule le nom d'utilisateur pour la connexion, En entrant le mot de passe créer plus tôt vous devriez obtenir ceci :

Vous êtes connecté à la base par défaut postgres, via l’utilsateur par défaut postgres. Vous pouvez quitter la console psql en entrant « exit » et fermé votre terminal. On ne devrait plus trop avoir à utiliser celui-ci.

Vous pouvez alors lancer l’application pgAdmin4. Lors de son premier lancement l’application vas vous demander un mot de passe maitre, car celle-ci vas stocker plusieurs mots de passe utilisateur, on ne lésine jamais sur un peu plus de sécurité.

Vous obtiendrez alors ceci :

Je ne vous ferai pas une présentation complète de l’application ici, cela fera peut-être le sujet d’un autre article.

Si vous cliquez sur l’arborescence de droite vous allez déployer la liste de vos serveur (normalement un seul pour l’instant) et ses bases. PgAdmin vas vous demander de vous connecter avec l’utilisateur postgres, entrez donc votre mot de passe. Vous arriverez ici (j’ai déployé une partie de l’arborescence) :

Nous allons alors créer votre identité dans le serveur, parce que ce n’est pas une bonne pratique d’utiliser postgres. Cliquez-droit sur « Login/Group Role » et aller dans Create -> Login/Group Role…

Dans l’onglet « General » baptisez-vous. Dans l’onglet « Definition » vous pouvez attribuer un mot de passe, et gérer l’expiration, ceci sera utile quand vous gérerez des utilisateurs sur votre base. Pour l’instant choisissez juste votre mot de passe.

L’onglet privilège vous permettra de gérer les droits de vos utilisateurs :

Can Login?

Permet de gérer si un utilisateur peut se connecter à la base, vous utiliserez cette restriction de droit par exemple si vous créez un utilisateur invité permanent, et que vous le prêtez à durer limité à quelqu’un.

Superuser?

Un superuser à absolument tous les droits d’administration sur le serveur, à utiliser avec parcimonie. Globalement seul vous devriez être superuser, ou seulement vos administrateurs de confiance. Le validé, validera tous les autres droits.

Create roles? Create databases?

Le premier permet de créer des utilisateurs avec au maximum les mêmes droits que le créateur du rôle, le second des bases de données qui sont au minimum accessible à tous les superusers. Par une commande SQL vous pouvez donner ces droits indépendamment.

Update Catalogs?

Donnez-le-vous, mais ne le donnez à personne si vous ne savez pas ce qu’il fait.

Inherit rights from the parent roles?

Un utilisateur créer avec ce droit aura tous les droits de son créateur, notamment les droits d’accès aux bases de données.

Can initiate streaming replication and backups?

Un droit qui permet de lancer les fonctions de PostgreSQL de gestion des backups et autres joyeusetés.

Si vous créer votre propre utilisateurs, donnez-vous tous les droits (vous êtes chez vous tout de même)

Vous pouvez passer tous les autres onglets, mais jetez un œil à « SQL ». Celui-ci vous montre la requête en langage SQL qui est passé au serveur. Car oui tous ceci peut aussi se faire par une commande. Comme tous ce que l’on va faire par la suite. Cliquez alors sur « save ».

Maintenant nous allons créer une connexion à au serveur via pgAdmin qui ne passe pas par l’utilisateur postgres, mais par votre identifiant fraichement créé. Commencez par vous déconnecter du serveur par un clic droit sur celui-ci « PostgreSQL 12 » (ou autre chose si vous n’avez pas installer la version 12)

Vous pouvez alors soit modifier cette connexion au serveur (clic-droit propriété), soit en créer une nouvelle. Je vais pour ma part en créer une nouvelle, cela permet d'avoir toujours une connexion au serveur avec l'utilisateur postgres sous la main.

Faite une clic droit sur servers -> Create -> Server :

Nommé votre connexion, puis aller dans l’onglet « connection ». Ici vous devez préciser l’IP de l’hôte de votre serveur, ou localhost si le serveur est sur votre PC, le port de connexion, le nom d’utilisateur, et son mot de passe, et vous pouvez sauvegarder celui-ci pour vous faciliter la tâche. Laissé postgres pour la « Maintenance Database ». Vous pouvez faire « Save »

Vous êtes ainsi connecté à votre serveur, via votre utilisateur. Vous pouvez maintenant créer une base de données. Une autre bonne pratique, on n’utilise pas la base de données postgres si ce n’est pour gérer les extensions.

Faites un clic droit sur « Databases » puis « Create », nommé votre base et vous avez terminé. Vous pouvez voir la requête SQL qui est envoyé au serveur pour créer la base dans l’onglet SQL.

Nous avons ainsi terminé l’initialisation de base, plus que quelques réglages et une installation et ce tuto sera terminé.

Optimisation

Nous allons voir deux choses maintenant avant d’installer PostGIS, comment optimiser son serveur de données. Il fut un temps ou optimiser son serveur était une vraie plaie, puis des gens ont mis en ligne un outil très pratique PGTune. Sur le Site vous renseigner les caractéristiques de votre machine, ou de ce que vous souhaitez allouer à PostgreSQL, et vous cliquez sur « generate ».

Ensuite vous pouvez soit modifier à la main le fichier postgresql.conf, qui se trouve dans le dossier data de votre installation, en recherchant dans celui-ci les paramètres à modifier. Vous pouvez aussi récupérer les commandes SQL qui sont générées sur le site dans l’onglet « alter system »…

et les exécuter dans une fenêtre de requête de pgAdmin ou encore les exécuter dans un terminal psql. Pour ouvrir une fenêtre de requête dans pgAdmin il suffit de cliquer sur le bouton «query tool ».

On va s’arrêter un instant sur pgAdmin tout de même. Dans un premier temps je me suis positionné sur « MaBase » dans l’arborescence à gauche, j’ai ensuite cliqué sur le bouton « Query Tool » afin d’ouvrir un onglet de requête qui exécutera les commandes passées au sein de « MaBase ». J’y ai ensuite copié les lignes « ALTER SYSTEM » que m’a donné PGTune. Il faut ensuite exécuter avec le bouton « play » ou avec la touche F5 chaque commande une par une (en sélectionnant le texte), car les commandes « ALTER SYSTEM » ne s’exécute pas en bloc.

A savoir ces commandes auraient tout aussi bien pu être passé au sein de la base postgres.

Il faut ensuite redémarrer votre serveur via le service postgresql dans le gestionnaire de tâches ou via la commande :

pg_ctl restart

Installation de PostGIS

Dernière étape pour faire du SIG dans une base PostgreSQL, installer PostGIS. Pour ceci rendez-vous sur le site de postgis.net.

Vous y trouverez toutes les information pour l'installation, ils vous conseilleront d’utiliser StackBuider, mais comme indiqué en amont celui-ci est capricieux. Vous pouvez donc vous rendre sur les serveur de téléchargement de l’OSGeo, afin de récupérer un setup correspondant à votre version de PostgreSQL à l’adresse suivante : download.osgeo.org/postgis/windows/

Ici nous allons télécharger le setup pour PG12. Télécharger le fichier .exe et lancer le. Accepter de donnée femme, enfant et tous vos organes à PostGIS (non c’est juste la licence en fait).

Sélectionné seulement PostGIS

Et le répertoire d’installation de votre serveur PostgreSQL

PostGIS vas alors s’installer dans celui-ci. Il vous demandera s’il peut définir ses propre variables d’environnements de GDAL si vous n’en avait pas créer. Validez tout ceci. Il souhaitera aussi activer la sortie de raster, validez ceci aussi.

Vous pouvez ensuite cliquer sur « close » et redémarrer une nouvelle fois votre serveur.

pg_ctl restart

Dernière étapes, activé l’extension dans votre serveur. Pour cela rien de plus simple il vous suffit de copier les lignes de commandes SQL, que vous trouverez ici, dans la fenêtre de requête de pgAdmin.

CREATE EXTENSION postgis;
CREATE EXTENSION postgis_raster;
CREATE EXTENSION postgis_sfcgal;
CREATE EXTENSION address_standardizer;
CREATE EXTENSION fuzzystrmatch;
CREATE EXTENSION postgis_topology;
CREATE EXTENSION postgis_tiger_geocoder;
CREATE EXTENSION pgrouting;

Si vous avez fait et que comme moi vous avez installé la version 13 de PostgreSQL vous obtiendrez ceci :

Et avec une version 12 compatible, avec PostGIS vous obtiendrez ceci :

A savoir, si vous n'avez pas d'installation de GDAL vous aurez probablement quelques soucis avec les fonction de raster. Nous verrons donc dans un prochain article l'installation de celui-ci.

Félicitation vous avez désormais une base de données PostgreSQL et son extension PostGIS opérationnel sur votre ordinateur. Vous trouverez toutes le commandes SQL de PostgreSQL ici et pour PostGIS ici.

Retour A propos