Installer PostgreSQL / PostGIS avec Apache et PHP sur Windows

Après l’installation du serveur web Apache et de PHP, on continue la construction d’une architecture SIG avec l’installation du Système de Gestion de Base de Données (SGBD) PostgreSQL (version 9.4 dans cet article) et son extension spatiale PostGIS.

1. Installation de PostgreSQL / PostGIS

PostgreSQL est disponible en tant qu’exécutable pour divers systèmes d’exploitation (Windows, Mac OS, Linux). Tu peux télécharger l’installer sur ce lien : http://www.enterprisedb.com/products-services-training/pgdownload#windows et l’exécuter. Le choix du chemin d’installation, du port, du nom d’utilisateur -qui aura le rôle de connexion maximale à la base- et du mot de passe restent à ta convenance. Par défaut, la base de données est installée sur C:\Program Files\PostgreSQL\[version] avec le port 5432.

Dans le répertoire bin, plusieurs exécutables sont présents, on s’intéresse particulièrement au stackbuilder.exe et au pgAdmin[version].exe – pour lesquels il est utile de créer des raccourcis vers ton bureau -.

1.1. Le Stack Builder

Le Stack Builder est un utilitaire qui permet d’installer des extensions de PostgreSQL. Les catégories disponibles sont mises en évidence sur la figure 1 ci-dessous.

Figure 1 : Les différentes catégories d’applications disponibles pour la base de données PostgreSQL.

Comme tu le devines, l’extension PostGIS se situe dans la catégorie Spatial Extensions. Tu peux installer la dernière version et créer une base de données spatiales modèle postgis_sample. Cette dernière option est facultative.

1.2. PgAdmin

Le PgAdmin est l’interface graphique (graphical user interface (GUI) en anglais) de PostgreSQL. Sur la figure 2, on observe sur la colonne de gauche le nom des serveurs. Si tu déploies l’arborescence, tu peux observer les bases de données, le système d’espace des tables et le rôle des connexions.

Figure 2: PgAdmin, l’interface graphique de PostgreSQL.

A l’intérieur de l’onglet bases de données, deux base de données par défaut ont été crées : la base postgres par défaut et la base de données spatiales modèle postgis_sample -si tu as choisi d’en créer une lors de l’installation-. Dans chaque base, on y trouve les catalogues où des actions automatiques peuvent être créées (trigger), des extensions et des schémas contenant des tables. Tous ces composants sont liés à un ou des propriétaires qui ont un certain rôle de connexion.

Dans le menu de PgAdmin, un exécuteur SQL permet de faire des requêtes sur le SGBD.

Pour créer une base de données spatiales (édition > ajouter un objet ou clic droit sur bases de données), tu définies les propriétés avec le nom et le propriétaire et valider. Ensuite, en se plaçant sur cette base de données, dans l’exécuteur SQL, tu saisis :

CREATE EXTENSION postgis;

Cette requête permet l’implémentation de l’extension postgis dans la base de données. Dans le schéma de cette dernière, les tables, les vues, les fonctions et les fonctions trigger nécessaires à la création de tables spatiales sont installées.

En remarque, lors de la création de la base, tu peux définir le modèle de la base en choisissant le modèle postgis_sample. Cela installe toutes les fonctionnalités spécifiques à cette base mais en as-tu réellement besoin dans ta base?

Enfin, l’ajout de couche spatiale est possible graphiquement à partir du plugin PostGIS Shapefile Import/Export Manager installé avec l’extension PostGIS.

La base de données est donc bien installée, il faut maintenant la connecter au serveur web Apache et à PHP.

2. Connexion avec Apache et PHP

Reprenons les fichiers de configuration httpd.conf pour Apache et php.ini pour PHP.

Dans un premier temps, on indique à Apache de se connecter à PostgreSQL en chargeant la bibliothèque qui se situe dans le répertoire bin de PostgreSQL libpq.dll. A la fin du fichier httpd.conf, tu peux écrire :

LoadFile "C:/Program Files/PostgreSQL/9.4/bin/libpq.dll"

 en adaptant le chemin de ton installation.

Dans le php.ini, on configure PHP pour charger les bibliothèques php_pdo_pgsql.dll et/ou php_pgsql.dll selon que tu codes en PHP Data Objects (PDO) ou en procédural.

extension=php_pdo_pgsql.dll
;extension=php_pdo_sqlite.dll
extension=php_pgsql.dll

 Au final, tu redémarres Apache et ensuite, tu peux tester la connexion à ta base de données;

soit en éditant le fichier index.php  visualiser le lien localhost dans ton navigateur web :

$connexion=new PDO("pgsql:host=localhost;port=5432;dbname=postgres","postgres","mot de passe") or die('Connexion impossible');

//Pour afficher les erreurs dans le navigateur. Les erreurs de connexion sont aussi répertoriées dans les fichiers logs d'Apache.

error_reporting(E_ALL);

soit en connectant ta base de données au logiciel QGIS.

L’installation sur Windows du serveur web Apache, du langage de programmation PHP et du SGBD PostgreSQL / PostGIS est terminée. Tu peux désormais te consacrer au modèle de conception de la base de données et développer tes scripts.

4 Comments

  1. Bonjour,

    Je travaille sur Windows 7 et téléchargé apache 2.4 et php 7.1.9. Je rencontre un problème au niveau du redémarrage du serveur web Apache.
    La commande me renvoit cette erreur :Syntax error on line 541 of C:/Apache24/conf/httpd.conf:
    Cannot load C:/Program Files/PostgreSQL/9.4/bin/libpq.dll into server:
    %1 n’est pas une application Win32 application.*
    Auriez vous une explication/solution?

    Merci d’avance!

    Marine.

  2. Bonjour Marine,
    Tout d’abord, l’article datant un peu, vous pouvez télécharger la dernière version de PostgreSQL (9.6.5).
    Ensuite, je pense que l’erreur provient de la version Windows (32 bits ou 64 bits). Il faut que tous vos composants Apache, PHP et PostgreSQL correspondent à la version de l’OS. Étant donnée l’erreur Apache, je pense que la version de PostgreSQL téléchargée n’est pas la bonne.
    N’hésitez pas à me tenir informé.
    Florian

  3. Merci beaucoup !
    J’avais WAMP. Grâce aux informations de votre article, j’ai pu configurer le httpd.conf et php.ini.
    Encore merci

    • Bonjour Michaël, Merci pour votre retour. Après cette installation, il est possible d’ajouter de nombreuses configurations dans Apache (Protection des fichiers, Curl, SSL, etc) et dans PHP (Taille d’envoi des fichiers, temps d’exécution, etc). Bons développements!

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *