Académique Documents
Professionnel Documents
Culture Documents
TABLE DE MATIERE
I- SPECIFICATION DE LA MACHINE UTILISEE ........................................................................ 2
II- INSTALLATION DE POSTGRESQL 13 SUR FEDORA 34 ......................................................... 2
1- Installation de Postgres ................................................................................................... 2
2-Activation de postgres .......................................................................................................... 3
3- L’utilisateur postgres ........................................................................................................ 4
4- Permettre les accès distants à Postgres .................................................................. 5
5- Sécurisation de Postgres ................................................................................................... 5
6- Création d’utilisateur ........................................................................................................ 6
III- INSTALLATION DE PGADMIN 4 SUR FEDORA 34 .................................................................. 7
1- Installation de pgadmin4 ............................................................................................... 7
2- Configuration de pgadmin4 ................................................................................................. 7
3- Le firewall ................................................................................................................................ 8
4- Accéder à l’interface web de pgadmin4 ....................................................................... 8
IV- INSTALLATION DE PL/JAVA SUR FEDORA 34 ........................................................................ 9
1- Apache Maven.......................................................................................................................... 9
V- CONNEXION A DISTANCE SUR LE SERVEUR………………………………………………24
1
INTEGRATION DE PL/JAVA A POSTGRES
1- Installation de Postgres
2
INTEGRATION DE PL/JAVA A POSTGRES
Une fois postgres installer, vous pouvez vérifier sa version avec la commande
suivante :
$ psql –V
2-Activation de postgres
Si tous se passe bien sans erreur, vous pouvez démarrer le service postgres
avec la commande suivante :
3
INTEGRATION DE PL/JAVA A POSTGRES
3- L’utilisateur postgres
4
INTEGRATION DE PL/JAVA A POSTGRES
listen_addresses = '*'
5- Sécurisation de Postgres
Il est crucial d’avoir une sécurité sur une base de données lorsqu’on est en
réseau. En effet, il est tout à fait possible de chiffrer les mots de passes
des utilisateurs du serveur de base de données.
5
INTEGRATION DE PL/JAVA A POSTGRES
6- Création d’utilisateur
# su – postgres
$ psql
# CREATE USER John
# ALTER ROLE John WITH CREATEDB
# ALTER USER John WITH ECRYPTED PASSWORD 'mot_de_passe'
6
INTEGRATION DE PL/JAVA A POSTGRES
Alors, nous venons de créer un nouvel utilisateur John dans notre SGBD
postgres, nous lui avons donné le droit de créer des bases de données et
1- Installation de pgadmin4
2- Configuration de pgadmin4
7
INTEGRATION DE PL/JAVA A POSTGRES
$ sudo /usr/pgadmin4/bin/setup-web.sh
3- Le firewall
Il faut ouvrir les ports 80 et 443 dans le firewall pour permettre les accès
à pgadmin4 depuis des machines externes. Utiliser les commandes suivantes:
Pour accéder à l’interface web de pgadmin4, vous pouvez utiliser l’une des
méthodes suivantes :
http://IP_SERVEUR/pgadmin4
OU
8
INTEGRATION DE PL/JAVA A POSTGRES
http://localhost/pgadmin4
1- Apache Maven
$ cd /opt
$ sudo wget https://www-
us.apache.org/dist/maven/maven-
3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz
$ sudo tar xzf apache-maven-3.6.3-bin.tar.gz
$ sudo ln -s apache-maven-3.6.3 maven
9
INTEGRATION DE PL/JAVA A POSTGRES
Comme nous avons téléchargé les fichiers précompilés d’Apache Maven sur notre
poste, il faut définir les variables d’environnement en créant un nouveau
fichier /etc/profile.d/maven.sh et ajouter le contenu suivant :
export M2_HOME=/opt/maven
export PATH=${M2_HOME}/bin:${PATH}
Chargez maintenant les variables d'environnement dans le Shell actuel à l'aide de la commande
suivante.
$ source /etc/profile.d/maven.sh
Enfin, supprimons le fichier d'archive téléchargé du système pour libérer de l'espace disque.
$ sudo rm -f apache-maven-3.6.3-bin.tar.gz
10
INTEGRATION DE PL/JAVA A POSTGRES
2- PL/JAVA
Une fois que maven installer, nous pouvons l’utiliser pour pouvoir installer
PL/Java. Pour cela, récupérons le code de la dernière version avec la commande
suivante:
Pour pouvoir lancer un mvn build sur le projet, il faut d’abord vérifier que
la machine dispose des dépendances suivantes : g++, javac, pg_config
Dans notre cas, nous allons installer pg_config grâce à commande suivante :
11
INTEGRATION DE PL/JAVA A POSTGRES
Pour le corriger, nous changeons de version de java comme nous avons deux
versions de java installée sur notre poste : Le java-1.8 et le java 11. La
commande suivante nous permet de changer de version de java et de passer à
la version 11.
12
INTEGRATION DE PL/JAVA A POSTGRES
Après être passé à java-11, nous relançons la commande $mvn clean install et
rencontrons l’erreur suivante :
Cette erreur est liée aux fichiers d’entête de postgres qui ne sont pas
fournis dans une version de production. Pour résoudre le problème, nous devons
installer les dépendances de développement de postgres contenant ces entêtes.
Pour cela, tapons la commande suivante sur notre Fedora 34
13
INTEGRATION DE PL/JAVA A POSTGRES
Comme tout s’est bien passé, cela ne veut pas dire que PL/Java est maintenant
installé dans postgresql, ce n’est pas le travail de maven. Il permet juste
14
INTEGRATION DE PL/JAVA A POSTGRES
de construire des artefacts dans la machine locale qui seront utilisé par
d’autres projets. Maintenant, il faut installer PL/Java en tant que langage
dans Postgres
pljava.classpath = 'path_to_pljava.jar'
pljava.libjvm_location = 'path_to_libjvm.so'
pljava.classpath = '/home/tderick/LABO/pljava/pljava-
packaging/target/pljava-pg13.jar'
pljava.libjvm_location = '/usr/lib/jvm/java-11-openjdk-11.0.11.0.9-
2.fc34.x86_64/lib/server/libjvm.so'
15
INTEGRATION DE PL/JAVA A POSTGRES
Un des problèmes que l'on rencontre lorsqu'on veut loader le .jar dans
postgres est que l’on obtienne une Erreur de type I/O Exception indiquant
que l'on ne peut pas lire ouvrir le fichier indique. Ce problème survient
sur des distribution Linux qui utilisent SELinux (Security-Enhanced Linux:
Module de sécurité Linux permettant de définir une politique de contrôle
d'accès obligatoire aux éléments d'un système ). En effet, le postmaster
16
INTEGRATION DE PL/JAVA A POSTGRES
lancer par le daemon postgres qui est charge qui est d'exécuter des processus
sur la machine est restreint par les politiques e-security de SELinux et donc
il n'est pas autorisé à utiliser certains ports. Pour donc passer ce problème
et ne pas entrer en profondeur de SELinux, nous allons tout simplement
désactiver ce dernier. Dans le cas où
l’on n’a pas encore configuré le SELINUX, on aura l’erreur suivante :
Tout d’abord, l’on doit se connecter à la base de données dans laquelle l’on
veut charger la librairie.
Pour installer notre librairie (en fichier jar), il est nécessaire de suivre
scrupuleusement les différentes étapes suivantes :
Select
sqlj.install_jar(‘file :/chemin_vers_la_bibliotheque‘,
‘nom_du_lien_symbolique ‘,true) ;
Celle-ci permet de spécifier dans file le chemin vers la librairie que l’on
souhaite inclure puis le nom symbolique qui nous servira de créer le schéma
qui référencie la librairie dans Postgres et de créer le classPath associe à
notre librairie dans Postgres.
17
INTEGRATION DE PL/JAVA A POSTGRES
Select
sqlj.set_classpath(‘public’,’nom_du_lien_symbolique’) ;
Pour exécuter une fonction rajoutée a notre base de données Postgres, il faut
exécuter la commande suivante :
18
INTEGRATION DE PL/JAVA A POSTGRES
Fig22 : création et exécution de la fonction su m dans Postgres sur un client ssh connecte
à un serveur distant
a.2 a.1 exécution de la fonction sum dans Postgres sur un client pgadmin4
connecte à un serveur distant
19
INTEGRATION DE PL/JAVA A POSTGRES
20
INTEGRATION DE PL/JAVA A POSTGRES
Fig23 : Création et exécution de la fonction fact dans un client ssh connecte à un serveur
distant
21
INTEGRATION DE PL/JAVA A POSTGRES
22
INTEGRATION DE PL/JAVA A POSTGRES
23
INTEGRATION DE PL/JAVA A POSTGRES
Tout d’abord, l’on doit ajouter des utilisateurs pgadmin4 sur le serveur
Après avoir ajouté des utilisateurs pgadmin, l’on doit se connecter des
comptes postgres a une base de données précise.
24
INTEGRATION DE PL/JAVA A POSTGRES
25
INTEGRATION DE PL/JAVA A POSTGRES
26
INTEGRATION DE PL/JAVA A POSTGRES
CONCLUSION
Après ce qui en résulte, nous sommes allés jusqu’à l’exécution des fonctions
java dans postgres. Les problèmes majeurs que nous savons rencontrés sont
tout d’abord ceux des compatibilités du jdk et Maven pour builder le projet
PL/JAVA. Ensuite nous avons eu un problème majeur au niveau chargement du
jar dan Postgres du a la politique de sécurité =SELINUX implémentée sur notre
machine de test (le serveur : Fedora 34). Après avoir résolu tous ces
problèmes, nous avons réussi a exécuter des fonctions basiques.
28
INTEGRATION DE PL/JAVA A POSTGRES
29