Nouveau serveur, nouvelle installation.  J’en profite donc pour partager l’installation détaillée de Postgresql/Postgis sous Ubuntu 14.04.

L’essentiel des références utilisées ici proviennent de osgeo.org et de doc.ubuntu.fr.

Avant de commencer, on vérifie que notre version de la distribution est bien la 14.04

sudo lsb_release -a 

On ajoute le dépôt postgresql à notre ubuntu si ce n’est pas déjà fait.

sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt trusty-pgdg main" >> /etc/apt/sources.list'

wget --quiet -O - http://apt.postgresql.org/pub/repos/apt/ACCC4CF8.asc | sudo apt-key add -

sudo apt-get update

On installe postgresql 9.5 , postgis 2.2

sudo apt-get install postgresql-9.5-postgis-2.2 pgadmin3 postgresql-contrib

On peut en profiter pour installer PGRouting.

sudo apt-add-repository -y ppa:georepublic/pgrouting
sudo apt-get update
sudo apt-get install postgresql-9.5-pgrouting

Voilà, tout est prêt. A ce stade, seul l’utilisateur postgres peut se connecter à la base. C’est LE super-user de Postgresql.

On se connecte donc avec le login « postgres » pour pouvoir passer des requêtes.

sudo -u postgres psql

On va créer un nouvel utilisateur dans postgresql qui s’appellera ici : fabien

CREATE USER fabien;

Par défaut il n’a aucun droit, ni de mot de passe. Je vais lui en donner un ainsi que des droit pour créer une base de donné. On peut bien sur lui donner les droits que l’on souhaite. La liste est ici.

ALTER ROLE fabien WITH CREATEDB;
ALTER USER fabien WITH ENCRYPTED PASSWORD 'mot_de_passe_pg';

On crée une base de donnée « ma_db » qui aura pour OWNER (qui sera possédé) par notre utilisateur « fabien »

CREATE DATABASE ma_db OWNER fabien;

On peut alors redevenir nous même (\q pour revenir) et se connecter sous notre propre nom à notre toute nouvelle base.

psql ma_db

Vous devriez donc avoir un « ma_db=# »

Pour rendre géographique cette base de données, il nous faut lui intégrer les fonctions de Postgis. Pour cela, rien de plus simple.

CREATE EXTENSION postgis;
CREATE EXTENSION postgis_topology;
CREATE EXTENSION fuzzystrmatch;

Vous pouvez tester que tout fonctionne bien avec une fonction géographique comme par exemple :

SELECT ST_Intersects(ST_GeographyFromText('SRID=4326;LINESTRING(-43.23456 72.4567,-43.23456 72.4568)'),ST_GeographyFromText('SRID=4326;POINT(-43.23456 72.4567772)'));

Par défaut, il n’est possible de se connecter à la base qu’en local. Si on a besoin de l’atteindre à partir d’une autre IP, il faut modifier deux fichiers

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

Dé-commenter la ligne qui commence par « listen_addresses = ‘localhost’  » et remplacer « localhost » par « * » pour lui dire d’écouter toutes les IP

sudo nano /etc/postgresql/9.5/main/pg_hba.conf

Ajouter la ligne:

host all all 0.0.0.0/0 md5

Toute les IP pourront se connecter à la base. Il est bien sur possible (et même conseiller) de restreindre l’accès à certaines IP uniquement.