Dans mon précédent article concernant PostgreSQL, j’ai annoncé une serie d’article sur ce SGBDR, aprés une courte introduction et avant de plonger dans le fonctionnement interne, l’architecture etc… je vous propose d’aborder l’installation du produit.

Que signifie installer PostgreSQL ?

Installer PorsgreSQL, signifie installer un ensemble de logiciels que l’on nomme “the Core Distribution” c’est à dire l’ensemble des packages constituant ce qui est juste necessaire et utile au fonctionnement du SGBDR, à savoir:

  • Le serveur de base avec une documentation complète (html, man)
  • Plusieurs outils en ligne de commande (par exemple psql, pg_ctl, pg_dump, pg_restore)
  • Bibliothèque C (libpq) et embarqué C processeur (ecpg)
  • Plusieurs langages côté serveur (par exemple procédure plpgsql, pltcl, plperl)
  • Plusieurs add-on populaires

Contrairement au systeme propriétaire comme Oracle RDBMS ou SQLserver, la communauté PostgreSQL nous propose une multitude de possibilités pour installer le logiciel.

Nous avons en fonction des systemes cibles un ou plusieurs choix possibles d’installation:

  • Package binaires disponible pour FreeBSD · Linux · Mac OS X · Solaris · Windows
  • Code sources disponible pour tous les OS
  • Ou des distributions particulieres

Ainsi si vous souhaitez installer PostgreSQL sur un system AIX vous devrez soit le compiler à partir des sources soit trouver un fournisseur d’installeur.
Du coté de Linux il y a pour chaque distribution des packages binaires mais aussi des installeurs graphiques indépendants de la distribution.
Le site postgresql.org vous propose des liens.
La société EnterpriseDB maintien un tel installeur :

Installer_gui
Nous n’explorerons pas ici l’ensemble des solutions, mais une de celle fournie par une distribution Ubuntu et l’installation graphique proposée par EnterpriseDB.

 

Distribution Ubuntu ( debian )

L’installation

Dans une installation gérée par une distribution  un grand nombre d’étapes seront prises en charge par le package à savoir:

  • La création du user postgres,
  • Le choix d’organisation
  • Le script de démarrage de l’instance ( cluster de base de données ) se trouvant dans /etc/init.d

Dans le cas de PostgreSQL choisir une distribution c’est choisir une organisation et des outils (scripts) mis à disposition par la distribution.
Pour ubuntu l’installation se fait en tantque root par la commande suivante:

root@ubuntu:~# apt-get install postgresql postgresql-client
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following extra packages will be installed:
 postgresql-9.1 postgresql-client-9.1
Suggested packages:
 oidentd ident-server locales-all postgresql-doc-9.1
The following NEW packages will be installed:
 postgresql postgresql-9.1 postgresql-client postgresql-client-9.1
0 upgraded, 4 newly installed, 0 to remove and 0 not upgraded.
Need to get 5,330 kB of archives.
After this operation, 14.7 MB of additional disk space will be used.
Do you want to continue [Y/n]? Y
Get:1 http://us.archive.ubuntu.com/ubuntu/ oneiric-updates/main postgresql-client-9.1 amd64 9.1.3-0ubuntu0.11.10 [972 kB]
Get:2 http://us.archive.ubuntu.com/ubuntu/ oneiric-updates/main postgresql-9.1 amd64 9.1.3-0ubuntu0.11.10 [4,346 kB]
Get:3 http://us.archive.ubuntu.com/ubuntu/ oneiric-updates/main postgresql all 9.1+122ubuntu1 [5,852 B]
Get:4 http://us.archive.ubuntu.com/ubuntu/ oneiric-updates/main postgresql-client all 9.1+122ubuntu1 [5,830 B]
Fetched 5,330 kB in 15s (349 kB/s)                                                                  
Selecting previously deselected package postgresql-client-9.1.
(Reading database ... 59599 files and directories currently installed.)
Unpacking postgresql-client-9.1 (from .../postgresql-client-9.1_9.1.3-0ubuntu0.11.10_amd64.deb) ...
Selecting previously deselected package postgresql-9.1.
Unpacking postgresql-9.1 (from .../postgresql-9.1_9.1.3-0ubuntu0.11.10_amd64.deb) ...
Selecting previously deselected package postgresql.
Unpacking postgresql (from .../postgresql_9.1+122ubuntu1_all.deb) ...
Selecting previously deselected package postgresql-client.
Unpacking postgresql-client (from .../postgresql-client_9.1+122ubuntu1_all.deb) ...
Setting up postgresql-client-9.1 (9.1.3-0ubuntu0.11.10) ...
update-alternatives: using /usr/share/postgresql/9.1/man/man1/psql.1.gz to provide /usr/share/man/man1/psql.1.gz (psql.1.gz) in auto mode.
Setting up postgresql-9.1 (9.1.3-0ubuntu0.11.10) ...
Creating new cluster (configuration: /etc/postgresql/9.1/main, data: /var/lib/postgresql/9.1/main)...
Moving configuration file /var/lib/postgresql/9.1/main/postgresql.conf to /etc/postgresql/9.1/main...
Moving configuration file /var/lib/postgresql/9.1/main/pg_hba.conf to /etc/postgresql/9.1/main...
Moving configuration file /var/lib/postgresql/9.1/main/pg_ident.conf to /etc/postgresql/9.1/main...
Configuring postgresql.conf to use port 5433...
update-alternatives: using /usr/share/postgresql/9.1/man/man1/postmaster.1.gz to provide /usr/share/man/man1/postmaster.1.gz (postmaster.1.gz) in auto mode.
 * Starting PostgreSQL 9.1 database server                                                    [ OK ] 
Setting up postgresql (9.1+122ubuntu1) ...
Setting up postgresql-client (9.1+122ubuntu1) ...
root@ubuntu:~#

 

Durant cette installation nous avons effectué:

  • Le téléchargement des binaires
  • Leur installation
  • La création d’un cluster de base de données dont la configuration se trouve dans /etc/postgresql/9.1/main, et les données dans /var/lib/postgresql/9.1/main/
  • Le lancement du server de base de données sur la configuration 9.1/main sur un port d’acces 5433.
  • La création d’un ensemble de répertoire contenant les binaires et scripts permettant d’éxécuter les tâches de connexion et d’administration du cluster de base.

Nous reviendrons dans un futur poste sur cette organisation.

Le premier accés

Nous pouvons dès maintenant accéder au serveur par la commande psql à partir de l’utilisateur OS postgres. Notez que la creation d’un fichier .postgresqlrc dans le home de l’utilisateur permettra au wrapper de l’installation Ubuntu/debian d’éxécuter le binaire:

postgres@ubuntu:~$ psql
psql.bin (9.1.3)
Type "help" for help.

postgres=# l
 List of databases
 Name    |  Owner   | Encoding | Collation  |   Ctype    |   Access privileges   
-----------+----------+----------+------------+------------+-----------------------
 postgres  | postgres | UTF8     | en_US.utf8 | en_US.utf8 | 
 template0 | postgres | UTF8     | en_US.utf8 | en_US.utf8 | =c/postgres          +
 |          |          |            |            | postgres=CTc/postgres
 template1 | postgres | UTF8     | en_US.utf8 | en_US.utf8 | =c/postgres          +
 |          |          |            |            | postgres=CTc/postgres
(3 rows)

postgres=# q
postgres@ubuntu:~$

La désinstallation

C’est finalement une opération plus rare mais nécessaire à la maintenance d’un serveur aprés une montée de version majeure.

root@ubuntu:/etc/init.d# apt-get remove postgresql-9.1 
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages will be REMOVED:
 postgresql-9.1
0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded.
After this operation, 11.7 MB disk space will be freed.
Do you want to continue [Y/n]? Y
(Reading database ... 59965 files and directories currently installed.)
Removing postgresql-9.1 ...
 * Stopping PostgreSQL 9.1 database server                                                           [ OK ] 
update-alternatives: using /usr/share/postgresql/8.4/man/man1/postmaster.1.gz to provide /usr/share/man/man1/postmaster.1.gz (postmaster.1.gz) in auto mode.

L’installation EnterpriseDB

Cette installation ressemble plus à ce que nous avons l’habitude avec l’installer Oracle par exemple.  Elle peut être éxécutée en mode graphique, en mode texte ou en mode silencieux.

Le mode graphique

Il est nécessaire de se connecter au serveur avec une redirection de port X11 sous ssh ou avec un client NX. Sous ubuntu la commande doit être lancée par un sudo car l’installation se fait en tant que root.

pib@ubuntu$ sudo ./postgresql-9.0.7-1-linux-x64.runpassword :Screenshot-SetupScreenshot-Setup-1 Screenshot-Setup-2Screenshot-Setup-3Screenshot-Setup-4Screenshot-Setup-5Screenshot-Setup-6Screenshot-Setup-7Screenshot-Setup-8

Gestion de la connexion à la base

L’installeur a préparé un ficher de configuraton de l’environnement (pg_env.sh). Avant toute tentative de connexion nous allons positionner cette environnement par une recopie dans l’environnement de l’utilisateur postgres :
postgres@ubuntu:~$ cp /opt/PostgreSQL/9.0/pg_env.sh .

Visualiston cette environnement :postgres@ubuntu:~$ cat pg_env.sh
#!/bin/sh
# The script sets environment variables helpful for PostgreSQL

export PATH=/opt/PostgreSQL/9.0/bin:$PATH
export PGDATA=/opt/PostgreSQL/9.0/data
export PGDATABASE=postgres
export PGUSER=postgres
export PGPORT=5434
export PGLOCALEDIR=/opt/PostgreSQL/9.0/share/locale
export MANPATH=$MANPATH:/opt/PostgreSQL/9.0/share/man

 

Exécutons le script puis lançons psql.

postgres@ubuntu:~$ . pg_env.sh
postgres@ubuntu:~$ psql
Password: 
psql.bin (9.0.7)
Type "help" for help.

postgres=# l
 List of databases
 Name    |  Owner   | Encoding | Collation  |   Ctype    |   Access privileges   
-----------+----------+----------+------------+------------+-----------------------
 postgres  | postgres | UTF8     | en_US.utf8 | en_US.utf8 | 
 template0 | postgres | UTF8     | en_US.utf8 | en_US.utf8 | =c/postgres          +
 |          |          |            |            | postgres=CTc/postgres
 template1 | postgres | UTF8     | en_US.utf8 | en_US.utf8 | =c/postgres          +
 |          |          |            |            | postgres=CTc/postgres
(3 rows)

La procédure de désinstallation

La procédure de désinstallation est également graphique. Elle permet d’arrêter le service, de supprimer les repertoires sauf celui contenant les données mais ne supprime pas l’utilisateur postgres.

Remarque : l’outil fourni permet de faire l’installation en mode caractère de manière interactive ou en mode silencieux.

Références documentaires

http://docs.postgresql.fr/
http://www.debianhelp.co.uk/postgresql.htm
http://www.enterprisedb.com/resources-community/pginst-guide