installation de Postgres 8.0.1/Postgis 1.0.0 sous windows

Publié le par bruno

installation de Postgres 8.0.1/Postgis 1.0.0 sous windows

   Source : techer jean david, 8 mars 2005

  


Résumé

 PostGIS est la cartouche spatiale développée par l’équipe de Research Refractions.

 Chargée sur le SGDBR PostgreSQL, elle confère à cette dernière le statut de bases de données spatiales.

 La version actuelle de PostGIS est la version 1.0.0 qui au cours du début de l’année 2005 a vu se succéder 3 à 4 RC (Release Candidate). La version 1.0.0 est prévue pour mars/avril 2005.

 Que dire de PostgreSQL actuellement ? En dépit d’être moins répandu que son homologue MySQL, PostgreSQL jouit dans le monde de l’Open Source d’une réputation sans faille et aussi de fonctionnalités qui font défaut à MySQL. Sans vouloir développer ce dernier point ici, nous noterons par exemple le verrouillage par MVCC, l’absence de gestion de triggers, des vues, des clés étrangères. . .Le petit plus pour PostgreSQL a aussi été ,à partir de la version 8.0 - voire même depuis les versions antérieures de tests depuis mai 2004 - ,que le serveur tourne de façon native sous plate-formes Windows (NT/2000/XP).

 L’association des développeurs/utilisateurs francophones de PostgreSQL PostgreSQLFr3 a vu le jour dernièrement. Son but est la promotion de ce fameux SGDBR. On peut trouver sur leur site de la documentation technique, des témoignages etc. . ..

 Deux parties constituent ce document. Le premier propose l’installation manuelle de la distribution (PostgreSQL). La seconde est un petit tutorial sur PostGIS.

  

 



 Postgresql

 Dans cette partie, nous allons voir comment installer la distribution. Vous trouverez aussi un installeur (.exe) pour Windows sur le site http://pgfoundry.org/projects/pginstaller dont l’un des responsables du projet est Magnus HAGLANDER. Son installeur est bien plus complet que ma distribution.

 Ce que je propose ici est une façon de savoir installer manuellement PostgreSQL si on dispose d’une distribution adéquate de ses binaires.

 1.1 Que contient le distribution ?

 Cette distribution a été compilé avec les outils suivants :

 PostgreSQL version 8.0.1

  

 

 

 

 


PostGIS version 1.0.0 RC3. La version finale 1.0.0 devrait ˆetre disponible courant mars/avril 2005.

 Geos version 2.1.1

  Proj version 4.4.8

  

 


  1.2 Téléchargement de la distribution et variables d’environnement pour PostgreSQL

 1.2.1 Téléchargement

 Téléchargez le fichier zippé :

 http://www.01map.com/download/PostgreSQL.zip

 



 Décompressez-le vers C:.

 Vous obtiendrez alors la répartition suivante :

 C:PostgreSQL8.0.1bin

  C:PostgreSQL8.0.1doc

 C:PostgreSQL8.0.1include

 C:PostgreSQL8.0.1lib

 C:PostgreSQL8.0.1man

 C:PostgreSQL8.0.1share

 C:PostgreSQL8.0.1. . . . . . . . .

 


Vous trouverez respectivement toute la documentation nécessaire sur PostgreSQL/PostGIS dans

 docpostgresql et postgis.pdf

  

 


   1.2.2 Variables d’environnement pour PostgreSQL

  Créez ensuite les variables d’environnement suivantes :

  PGHOME = C:PostgreSQL8.0.1

 PGDATA = C:PostgreSQL8.0.1data

 PGPORT = 5432

 PGHOST = localhost

  Ajoutez au début de votre variable PATH

  PATH = C:PostgreSQL8.0.1bin ;C:PostgreSQL8.0.1lib ;....

   Ici .... correspond à la valeur de votre variable PATH, par défaut.

 Ce dernier ajout permettra d’accéder pour la suite aux executables de PostgreSQL/PostGIS (createdb, creatalang, dropdb, pg dump, . . .) depuis une fenêtre DOS.

 Avec ces variables d’environnement, PostgreSQL sera que la distribution du serveur est à PGHOME. Il saura aussi que le répertoire pour vos futures bases est PGDATA. En tant que serveur, sur votre machine il écoutera sur le port 5432 (PGPORT).

 Redémarrez la machine.

  

 

 

 FIG. 1.1 – Contenu de la distribution.

  

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

    
FIG. 1.2 – Les diverses variables d’environnement.


   

1.3 Création du super-utilisateur

 1.3.1 Nouveauté avec la version 8.0.0 de PostgreSQL

  Contrairement aux versions précédentes de PostgreSQL < 8.0.0, il n’était pas nécessaire de disposer d’un compte spécial pour pouvoir utiliser PostgreSQL sous Windows.

 En effet, il suffisait de disposer d’un compte Administrateur pour pouvoir installer et utiliser PostgreSQL. Cependant conformément à l’utilisation de PostgreSQL sous Linux, les développeurs de PostgreSQL ont décidé pour la version 8.0.0 de rester fidèle à l’homogénéité des droits d’utilisation. En fait sous environnement Linux, un utilisateur-administrateur3 n’a pas le droit d’utiliser le serveur PostgreSQL.

 1.3.2 Création du super-utilisateur de PostgreSQL

  Seul un utilisateur ayant des droits limités peut initialiser PostgreSQL, c-a-d créer le répertoire qui contiendra les données.

  Ainsi, il vous faudra créer un tel utilisateur. Pour récapituler :

  1. Créez un utilisateur ayant des droits limitées sur votre machine. Cet utilisateur doit aussi avoir un mot de passe. C’est lui qui utilisera plus tard PostgreSQL

  2. vous devez aussi avoir un compte administrateur. Nous supposerons ici que c’est votre propre compte.

  Pour la suite, nous appellerons l’utilisateur sans droits adminstratifs postgres et celui ayant droit administratif david. A vous de les nommer `a votre convenance. postgres sera le super-utilisateur de PostgreSQL.

 Le reste de l’installation aura lieu sous la session david deWindows.

  

1.4 Pouvoir ouvrir une fenêtre DOS du super-utilisateur de PostgreSQL depuis la session d’un compte administrateur sousWindows XP

  Depuis le compte de david, les diverses commandes de PostgreSQL doivent être saisies depuis une fenêtre DOS qui appartiennent à postgres. Pour celà, il suffit d’ouvrir une fenêtre DOS et de taper :

 runas /user:postgres cmd

 Saisissez ensuite le mot de passe de postgres.

 

 

  FIG. 1.3 – Commande runas sous Windows XP.

 Une nouvelle fenêtre DOS devrait s’ouvrir.

 1.5 Initialisation de PostgreSQL

  L’initialisation consiste à créer le répertoire qui contiendra sur le disque dur le répertoire des données de PostgreSQL. Ce fameux répertoire correspond ici à celui de PGDATA. L’initialisation permet aussi de connaître l’encodage des données à choisir par défaut (SQL ASCII, UTF-8. . .) et aussi de préciser l’authentification (avec ou sans mot de passe...)

 L’utilitaire utilisé pour permettre l’initialisation est initdb. On peut avoir un diagnostic de ses possibilités en tapant depuis une fenêtre DOS de david ou postgres :

  initdb --help

 

Pour notre installation, depuis la fenêtre DOS de postgres (obtenue précédemment) nous utiliserons la commande

  initdb -A trust -E SQL ASCII

 

Ici, nous demandons à ce que l’ initialisation est lieu avec

  -A trust : que l’authentification des utilisateurs voulant se connecter au serveur aura lieu sans demander le mot de passe. Ceci peut dérouter mais quand on utilise PostgreSQL en ligne de commande pour créer des base(. . .), cela évite à chaque fois de saisir le mot de passe ;

  -E SQL ASCII : nous demandons que l’encodage par défaut soit de SQL ASCII

  Remarque 1.2. On peut demander à ce que PostgreSQL utiliser un autre répertoire que PGDATA, en utilisant l’option -D.

  

 

FiG. 1.4 – Initialisation de PostgreSQL.

 


 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1.6 Installer et démarrer PostgreSQL en tant que serviceWindows et autoriser les connections TCP/IP

  Pour installer PostgreSQL en tant que service, nous aurons recoursàa l’utilitaire pg ctl. Comme pour initdb, pour obtenir un descriptif de ce dernier, tapez :

  Pg_ctl --help

  D’après le descriptif, c’est l’option register -N ... -U ... -P ... que nous utiliserons avec

 -N : comme le nom du service. Dans notre cas, nous appellerons notre service postgresqlwin32 ;

 -U : comme le nom du super-utilisateur de PostgreSQL (ici postgres) ;

 -P : comme le mot de passe du super-utilisateur de PostgreSQL. Ici nous choisissons empr888.

   Il nous faut aussi autoriser les connexions TCP/IP. Celà se fait en ajoutant l’option ’-o -i’. Les connexions TCP/IP permettent de se connecter `a l’ordinateur sur lequel est installé PostgreSQL depuis un autre ordinateur5 (réseau intranet ou extranet) pour consulter le serveur, effectuer des requêtes. . .

 Finalement au vu des configurations choisies, pour installer notre service, nous utiliserons depuis une fenêtre DOS appartenant à david :

 Pg_ctl register -N postgresqlwin32 -U postgres -P empr888 -o -i

 

 


 


Une fois le service installé postgresqlwin32, il faut le démarrer en faisant :

 net start postgresqlwin32

   

 


 

 

FIG. 1.5 – Installation et démarrage du service.


  Remarque 1.3. L’accès au serveur PostgreSQL sur un réseau (intranet/extranet) n’est possible que si le port 54326 de la machine est ouverte. En effet, comme nous l’avons déjà précisé, c’est sur ce port que le serveur écoute. Dans ce cas, vérifiez que votre logiciel de FireWall autorise ce port ou sinon voir les configurations de firewall de Windows XP.

 

 1.6.1 Option : savoir désinstaller le service

  Si vous deviez désinstaller le service, il suffirait d’arrêter le service avec net puis de le désinstaller en utilisant pg ctl avec l’option unregister depuis une fenêtre appartenant à david :

  net stop postgresqlwin32

 pg_ctl unregister -N postgresqlwin32

 

  

1.7 Optionnel : savoir démarrer/arrêter le serveur manuellement
Dans le cas où vous ne seriez pas intéressé par installer le serveur en faisant appel au service, il vous est possible de le démarrer/arrêter manuellement.

Pour ce faire, il suffit toujours d’utiliser pg_ctl avec les options respectives start ou stop.


Nous les joignons `a l’option ’-o -i’ pour autoriser les connexions TCP/IP. Les lignes de commandes depuis une fenêtre DOS appartenant à  postgres seront ici


 


 


1. Démarrage : pg_ctl -o -i start


 


2. Arrêt : pg_ctl -o -i stop


 


Remarque 1.4. Il semble inutile de le préciser mais mentionnons-le tout de même. L’utilisation manuelle du serveur (démarrage/arrêt exige que vous démarrez/arrêtez le serveur à chaque démarrage/extinction physique de la machine. Ce qui n’est pas contraignant/inutile par rapport à l’utilisation du service.


Voilà la distribution est maintenant presque installée.


 

 

1.8 Accorder tous les droits de super-utilisateur de PostgreSQL au compte administrateur de Windows.


 

Conformément à nos recommandations en début de chapitre sur la création du super-utilisateur de PostgreSQL, il est aussi possible d’accorder à david au même titre que postgres les droits de super-utilisateur.


Le problème jusqu’ici résidait dans le fait que david ne pouvait pas initialiser PostgreSQL à cause de son titre de d’Administrateur de Windows. A partir de maintenant, il nous est possible de la faire. Alors pourquoi cela ? Tout simplement, à l’habitude, je travaille généralement sous ma session david et que cela m’arrangerait bien de ne pas taper à chaque fois que j’ai besoin d’utiliser PostgreSQL d’ouvrir une fenêtre DOS appartenant à postgres.


En un mot, je cherche à éviter de taper à chaque fois la commande :


runas /user:postgres cmd


 


 Pour ce faire, il suffit d’inscrire david comme nouvel utilisateur de PostgreSQL ayant les mêmes droits que postgres. Cela se fait grace à createuser depuis une fenêtre DOS appartenant à postgres :


 

createuser -a -d david


 

Voilà je suis armée maintenant pour pouvoir faire joujou avec PostGIS. Ce qui sera le point central du prochain chapitre.


 


 

PostGIS2.1 Création d’une base de données

Pour pouvoir créer une base de données que - nous nommerons désormais ici madatabase -, il est nécessaire de taper quatre lignes de commandes


 

createdb madatabase


 

createlang plpgsql madatabase


 

psql -d madatabase -f %PGHOME%sharepostgresqllwpostgis.sql


psql -d madatabase -f %PGHOME%sharepostgresqlspatial ref sys.sql


 

Examinons en détail les diverses commandes utilisées.


 

1. La première (createdb . . .) est la commande utilisée pour créer un base (ici madatabase). Par défaut, l’encodage utilisée est le SQl ASCII - encodage permettant ainsi d’accepter tous les caractères accentuées et certains caractères spéciaux- ;


 


2. PostGIS est écrit en C/C++. Les fonctions spatiales sont stockées dans une librairie dynamique (.DLL)


 


liblwgeom.dll.


 

PostgreSQL accède à ces fonctions à condition de lui spécifier le langage PL/PGSQL. La seconde commande permet donc de doter notre base de ce langage ;


 


3. Les définitions des diverses fonctions spatiales sont stockées dans le fichier lwpostgis.sql que doit accepter notre base. On charge les fonctions spatiales de PostGIS grâce à la troisième commande. On assure ainsi un pont entre notre base de données et la librairie liblwgeom.dll ;


 


Publié dans www.websig

Pour être informé des derniers articles, inscrivez vous :
Commenter cet article