Documente Academic
Documente Profesional
Documente Cultură
Licence MI2E
Université Paris Dauphine
Année 2006
1
Résumé
Ce rapport a été réalisé dans le cadre de mon stage de fin d’études de licence MI2E à
l’université Paris-Dauphine. Celui-ci s’est déroulé au sein de la division Technologie,
Industrie et Economie de l’Unep (Union Nations Environement Programme) du 15 mai
au 15 septembre 2006 à Paris.
Unep est une organisation qui a pour mission de montrer la voie à suivre afin de
protéger l’environnement. Elle se doit aussi d’être une source d’inspiration et
d’information pour les États et les populations, et un instrument leur permettant
d’améliorer la qualité de leur vie sans toutefois compromettre celle des générations à
venir.
Le but de ce stage était d’étudier les possibilités de migration d’un site web
http://www.estis.net utilisant le couple ASP / Sql Server (Technologie de Microsoft)
vers PHP / Mysql (Technologie Open Source).
Avant de débuter la migration, j’ai du faire une analyse de l’existant d’Estis afin de
visualiser les différentes difficultés du projet, et ainsi me faciliter la tâche lors de la
migration. J’ai donc commencé par vérifier que toutes les options utilisées avec Sql
Server et Asp étaient disponibles de l’autre côté, en Open Source.
Une fois ces faits démontrés, j’ai dans un premier temps commencé à étudier le
monde des portails open source pour voir si un équivalent d’Estis était présent, pour
finalement commencer à recoder Estis en Php / Mysql.
Le fait de migrer Estis permettra de dégager d’énormes économies liées aux coûts
des différentes licences.
Mots clefs :
Php, Mysql, Réplication, unicode
2
Remerciements
Je remercie aussi l’ensemble de la communauté des logiciels libre sans qui les
technologies utilisées au cours de ce stage n’auraient jamais vu le jour.
Enfin, je désire remercier l’ensemble de mes professeurs que j’ai pu avoir lors de ma
scolarité.
3
Sommaire
4
Introduction
Dans cette perspective, j’ai décidé d’orienter mon choix vers une organisation à
caractère humain et qui cherche à améliorer nos vies chaque jour qui passe. J’ai par
conséquent postulé dans plusieurs branches des nations Unies pour finalement être
retenu au programme des nations unies pour l’environnement.
J’ai choisi le PNUE, car d’emblée, l’enjeu du stage proposé m’a semblé
particulièrement intéressant par le fait que l’on me confiait un gros projet avec de
nombreux objectifs à réaliser. D’autre part, la mise à l’épreuve du savoir théorique
dans ce projet relevait de l’innovation, de la créativité et de mon savoir faire. Mais
surtout de ma capacité à rechercher l’information par moi-même et de savoir
l’appliquer sans la nécessité de guide ou bien de professeur.
L’objectif du stage qui m’a été proposé consistait donc en la migration du site Estis
dont les principaux objectifs étaient:
La réplication des données, le support multilingue par le biais de l’unicode,…
L’envie de faire tourner Estis sous les technologies libres a toujours séduit le
directeur du service informatique mais lors de la réalisation de celui-ci, il y a environ
8 ans, Mysql n’offrait pas encore la possibilité de répliquer des données entre
plusieurs serveurs. Depuis Mysql n’a cessé d’évoluer, Php la technologie concurrente
d’ASP est reconnue par tous et est de plus en plus utilisée pour de gros projets, c’est
ainsi que les nations unies pour l’environnement ont décidé de réaliser une nouvelle
expertise afin de savoir s’il était aujourd’hui possible de migrer Estis et ainsi dégager
d’énormes économies liées aux coûts des différentes licences.
A travers mon rapport, je présenterai tout d’abord la structure dans laquelle j’ai
évolué. Puis je présenterai les différentes technologies employées lors de mon stage,
et enfin, je décomposerai chaque grande étape du projet qui m’a été confié, de la
phase analyse à la phase codage, pour enfin terminer par la phase de test.
5
LE PNUE
1 – Présentation de l’organisation
A – Que fait le Pnue ?
Le Programme des nations unies pour l’environnement joue le rôle de catalyseur, de
défenseur, d’instructeur et de facilitateur œuvrant à promouvoir l’usage avisé et le
développement durable de l’environnement mondial. Pour cela :
• Il évalue les conditions et les tendances environnementales mondiales, régionales
et nationales ;
• Il développe des instruments environnement aux nationaux et internationaux ;
• Il renforce les institutions pour une bonne gestion de l’environnement ;
• Il intègre le développement économique et la protection de l’environnement ;
• Il facilite le transfert des connaissances et de technologies pour le développement
durable ;
• Il encourage de nouveaux partenariats et de nouvelles attitudes dans la société
civile et le secteur privé.
A cette fin, le PNUE collabore avec de nombreux partenaires, dont les autres organes
des Nations Unies, des organisations internationales, des gouvernements nationaux,
des
Organisations non gouvernementales, le secteur privé et la société civile.
6
LE
PNUE
D – Histoire du Pnue ?
1972 : Le PNUE est créé à l’issue de la Conférence des Nations Unies sur
l’environnement humain
1973 : Adoption de la Convention sur le commerce international des espèces de
faune et de flore sauvages menacées d’extinction (CITES)
1975 : Plan d’action pour la Méditerranée, premier de treize plans d’action régionaux
mis en œuvre dans le cadre du programme du PNUE ayant trait aux mers régionales
1979 : Convention de Bonn sur les espèces migratoires
1985 : Convention de Vienne relative à la protection de la couche d’ozone
1987 : Protocole de Montréal relatif aux substances qui nuisent à la couche d’ozone
1988 : Groupe d’experts intergouvernemental sur l’évolution du climat 1989 :
Convention de Bâle sur le contrôle des mouvements transfrontières des déchets
dangereux
1992 : Convention sur la diversité biologique
1995 : Programme d’action mondial, lancé dans le but de protéger le milieu marin
contre la pollution due aux activités terrestres
1998 : Convention de Rotterdam sur la procédure de consentement préalable
2000 : Protocole de Carthagène sur la prévention des risques biotechnologiques
2000 : Déclaration de Malmö : un appel à l’action lancé par le premier Forum
ministériel mondial sur l’environnement
2000 : Déclaration du Millénaire : assurer un environnement durable devient un des
huit Objectifs du Millénaire pour le développement
2001 : Convention de Stockholm sur les polluants organiques persistants (POP)
2002 : Le Sommet mondial sur le développement durable réaffirme le rôle central du
PNUE dans la lutte internationale en faveur du développement durable
2005 : Plan stratégique de Bali pour l’appui technologique et le renforcement des
capacités, adopté par le Conseil d’administration du PNUE et mandatant
l’organisation de soutenir les pays en voie de développement au niveau national
2005 : Le Sommet mondial souligne l’importance de l’environnement dans la
réalisation du développement durable
7
Depuis 30 ans, la division technologie, industrie et économie à Paris travaille avec le
monde des affaires, celui de l’industrie et d’autres institutions pour protéger le
patrimoine naturel des ressources de la planète en soulignant la nécessité d’un
développement durable.
Les activités de la DTIE sont axées sur la sensibilisation, l’amélioration des transferts
de connaissances et d’information, la promotion de la coopération technologique et
des partenariats ainsi que la mise en oeuvre des conventions et accords
internationaux.
B – Structure de la division
De Paris, la direction définit la politique générale et le programme de travail de la
DTIE, coordonne les activités, assure la liaison avec les autres divisions du PNUE et
favorise les activités qui élargissent la participation des parties prenantes. La division
comprend un centre et cinq services (voir plus bas). En outre, des responsables
Industrie et Ozone dans quatre des six bureaux régionaux du PNUE —Afrique (ROA),
Amérique latine et Caraïbes (ROLAC), Asie et Pacifique (ROAP) et Asie occidentale
(ROWA) — assurent la continuité des activités de la division dans les régions.
Le service Energie
Préconise des politiques de l’énergie et des transports favorisant le développement
durable.
Le service ActionOzone
Aide les pays en développement ou à économie en transition à éliminer les
substances qui appauvrissent la couche d’ozone afin d’assurer la mise en oeuvre du
Protocole de Montréal.
8
Durant mon stage, notre directrice étant nommée pour une période de trois ans à la
tête du Conseil du Fonds pour l’Environnement Mondial (FEM), son poste est désormais vacant.
Article : http://www.unep.org/Documents.Multilingual/Default.asp?
DocumentID=480&ArticleID=5296&l=fr
3 – Déroulement du stage
A – Mon lieu de travail
Arrivé juste après la semaine d’examen j’ai de suite été placé dans un bureau
composé uniquement de stagiaires. En effet, à la division de Paris, les stagiaires sont
regroupés entre eux dans un même bureau. Avec un tel système, l’ambiance ne
pouvait être qu’agréable. Cependant, le problème d’un tel système est que nous
étions cloîtrés dans notre bureau. Par conséquent, nous étions séparés de notre
responsable de stage et nous ne connaissions aucun membre du personnel du Pnue.
La durée du stage de chaque stagiaire était de quatre mois minimum, et dès qu’un
stagiaire s’en allait, il était immédiatement remplacé par un autre stagiaire le
lendemain, chose qui m’étonna énormément. Etant donné que le Pnue a un caractère
international, les stagiaires étaient de nationalités différentes : Canadienne,
Péruvienne, Colombienne ; Américaine, Russe…
9
10
LE PROJET INFORMATIQUE
1 – Présentation de la mission
A – Objectifs
Mon travail consistait à dire, dans un premier temps, si une migration du portail
internet Estis réalisé en Asp et relié à une base Sql Server était faisable en Php avec
une base Mysql.
Mon premier objectif, difficulté lors de ce stage a été de montrer qu’il était possible
de contourner ce problème. Et cela par le biais d’une tâche Cron et d’un script.
Suite à cela, mon maître de stage m’a alors demandé de réaliser une seconde
analyse avec pour thème : Est-il plus intéressant pour l’Unep d’utiliser un portail /
Cms déjà existant puis de le modifier pour l’adapter à nos besoins ou bien de
reconstruire le portail de A à Z ?
Suite à mon analyse, la direction pris la décision de suivre mon avis, et par
conséquent de redévelopper Estis en interne sans partir d’un portail open source
existant.
Ma nouvelle tâche était donc de partir d’Estis en Asp puis de modifier le code de
celui-ci pour le retranscrire au langage Php, tout en apportant différentes
améliorations lors de la retranscription.
Afin de réaliser ce challenge, j’ai commencé par réaliser une analyse de l’existant
d’Estis pour en comprendre les difficultés. La migration s’est fait par étape, et de
façon méthodique. Une fois un module redéveloppé, la direction se réunissait afin de
savoir comment améliorer l’existentiel. Il était inconcevable de proposer aux
utilisateurs d’Estis une nouvelle version, sans de nouvelles fonctionnalités.
11
B – Mes défis au sein du Pnue
Le Pnue n’étant pas une organisation à but lucrative, elle se doit par conséquent de
maîtriser les coûts et de les diminuer dès que cela peut être possible.
Depuis le début, l’équipe dirigeante d’Estis souhaitait développer ce service avec des
outils Open Source afin de se décharger du coût des licences de Microsoft SQL
Server. Concernant Php, il bénéficie des mêmes fonctionnalités qu’Asp, par
conséquent il n’y a jamais eu de blocage envers cette technologie. Le problème
venait donc de Mysql.
Sachant qu’aujourd’hui, Mysql rattrape peu à peu son retard face à ses concurrents
comme Oracle ou Microsoft Sql Server, il était temps pour la direction de réaliser une
seconde expertise.
Lors de mon arrivé, j’ai par conséquent commencé à faire une étude approfondie
d’Estis, dans le but d’en dégager les spécificités. Pourquoi Estis est unique ?
PARTAGE
D’INFORMATION
REPLICATION
MULTIILINGU BASE DE
E DONEES
FACILE
EDITEUR
D’ACCE WYSYWYG
S
12
- Les utilisateurs d’Estis n’ont aucune compétence en informatique, ils ne
connaissent pas le Html, c’est pourquoi, tout doit être accessible sans que
l’utilisateur n’aie à se poser de questions. Ils doivent pouvoir rédiger des
articles, navigués dans leurs dossiers avec des interfaces qu’ils connaissent
bien. Tout cela dans le seul souci que l’utilisateur ne se retrouve pas perdu.
13
2 – L’environnement
Après le recueil des besoins, je n’ai pas eu à choisir les différents logiciels ou
technologies à utiliser. Tout m’a été fixé par mon responsable de stage.
Le développement s’est fait sous 3 ordinateurs sur lesquels j’ai installé le système
Linux Debian Sarge. Sur ces différentes machines, j’ai par la suite installé et
configuré Apache 2, Php 5 ainsi qu’une libraire permettant de gérer les images Gd2,
et Mysql 5.
A – Logiciels et matériels
Bluefish Editor
Bluefish est un puissant éditeur qui reconnaît les syntaxes Php
et html entre autres. Il permet de rendre le code agréable et
plus compréhensible avec sa colorisation syntaxique.
BlueFish fonctionne sous Debian.
Mysql 5
MySQL est la base de données la plus couramment
rencontrée chez les éditeurs de logiciels, les VAR (revendeurs
à valeur ajoutée), les constructeurs de matériel et les
fabricants de dispositifs réseaux qui souhaitent intégrer
à leurs produits une base de données relationnelle à hautes performances ou la
vendre en offre groupée avec leurs produits, cela à moindre coût.
Au cours de mon stage, j’ai travaillé avec trois machines. Ces trois machines
possédaient la même configuration afin de travailler avec le mode réplication de
Mysql.
14
B – Langages de programmation
HTML ET CSS
CSS a été utilisé pour définir les couleurs, les polices, le rendu, et
d'autres caractéristiques liées à la présentation d'un document.
JAVASCRIPT
Le Javascript est un langage de script incorporé dans un document
HTML. Historiquement, il s’agit même du premier langage de script
pour le web. Ce langage est un langage de programmation qui
permet d’apporter des améliorations au langage HTML en
permettant d’executer des commandes du côté client, c’est à dire
au niveau du navigateur et non du serveur web.
PHP
15
Les pages PHP tout comme ASP sont donc exécutées du côté serveur et non du côté
client (Javascript cf ci-dessus). Les scripts PHP sont donc intégrables au sein d’une
page web en HTML à l’aide de balises spéciales permettant au serveur web de savoir
que le code compris à l’intérieur de ces balises doit être interprété afin de renvoyer
des données (généralement du code HTML) au navigateur du client.
SQL
SQL (Strcutured Query Language) est un langage permettant de
manipuler les données se trouvant sur des bases de données
relationnelles.
Par manipulation de données, cela signifie qu’il permet de
sélectionner, insérer, modifier ou supprimer des informations dans
une base de données.
METHODE MERISE
La conception d’un système d’information n’est pas évidente car il
faut réfléchir à l’ensemble de l’organisation que l’on doit mettre en
place. La phase de conception nécessite des méthodes permettant
de mettre en place un modèle sur lequel on va s’appuyer.
La modélisation consiste à créer une représentation virtuelle d’une
réalité de telle façon à faire ressortir les points auxquels on
s’intéresse.
Ce type de méthode est appelé analyse.
16
3 – Structure du site
Lors de la migration du site internet, la direction souhaitait garder la mise en forme
déjà existante. Mais souhaité que le graphisme soit séparé du code Html, c’est donc
une des raisons pour laquelle j’ai utilisé le CSS.
Concernant la mise en place, tout se fait par des includes Php, J’ai choisi ce concept
car il permet de gagner un temps appréciable au niveau de la maintenance et
également dans le travail d’intégration.
D’après l’image ci-dessus, on remarque que cette page intitulé index comprend 4
pages. La page haut et menu sont fixes, c’est à dire qu’elles ne bougent pas pendant
la navigation du site. Seul la page « contenu » et « aide » changent en fonction de la
page demandée par le biais du menu.
17
Ainsi lorsque l’on se connecte à Estis, le site repère dans un premier temps quel
serveur répond le mieux à notre connexion en « pingant » les différents serveurs.
Puis le serveur maître situé au Japon nous redirige sur le serveur le plus intéressant.
Pour les pays comme le Bénin, la Jordanie ou l’Irak ; les pays qui sont donc en
développement, Estis a placé des serveurs dans chacune des régions, ainsi dès
qu’une coupure de courant intervient dans un des locaux ou le serveur est situé,
Estis reste accessible car un autre serveur prendra le relais.
Estis étant un portail permettant de créer des sites internet sans connaissance
informatique, les utilisateurs font régulièrement des modifications sur leur site
internet. C’est donc ici que nous utiliserons la réplication. Une modification faite sur
un des serveurs doit être répercutée sur l’ensemble des serveurs afin d’en préserver
l’uniformité. A titre d’exemple, un utilisateur pourrait effectuer des changements sur
le serveur Béninois et ceux-ci deviendraient immédiatement accessibles à un
utilisateur du serveur Japonais.
La réplication utilisée par Estis est donc en double sens, chaque serveur communique
avec la base maître située au Japon afin de mettre à jour les différents ordres Insert ;
Update ; Delete. Puis, le serveur japonais se charge de transmettre les modifications
à tous les autres serveurs. Cette mise à jour est déclenchée toutes les x minutes par
Microsoft Sql Server.
Afin de mieux comprendre le principe voici le modèle de réplication utilisé sous forme
de schéma.
18
Serveur Japonais :
Maitre
Serveur 1 Serveur 2
Dans Microsoft Sql Server, il est possible de dire qu’un serveur possède plusieurs
maîtres, on emploie alors le terme de réplication « multimaster ».
C’est donc ici que mon premier problème fit surface, car sous Mysql il est
actuellement impossible de faire cela. Mysql permet de donner uniquement un et un
seul maître à un esclave.
De plus, un second problème est vite apparu, il est impossible de dire à Mysql de
faire une réplication toutes les X minutes. Sous Mysql, la réplication se fait de façon
continue, les machines sont sans cesse en connexion. Une chose qui était
inconcevable pour la direction, car cela surchargerait le réseau inutilement.
Tout d’abord afin de faire en sorte que la réplication ne se fasse plus de manière
continue, mais toutes les x minutes, j’ai du utilisé une petite astuce.
1- mettre la réplication à OFF par défaut de cette façon :
Stop Slave
19
Une fois dans l’éditeur Contab, il nous est possible de rajouter des lignes, une ligne
précédée par un # est un commentaire.
Ici le fichier prog.php est lancé toutes les 10 minutes, et les différents affichages sont
enregistrés dans le fichier croPro.log, afin de savoir si tout s’est déroulé comme
prévu.
Vous trouverez en annexe une version du script commentée en français, une fois
terminée ce script a été posté sur le forum de Mysql.
Je reçois quelques mails de temps en temps de remerciement.
Pour qu’une page soit en unicode et ainsi que l’on puisse rajouter des textes
composés de n’importe quel caractère par le biais de formulaire, il m’a fallu spécifier
utf-8 comme charset.
Mais cela ne s’est pas arrêté à ca, car il a fallu définir une font / police universelle
pour le site, puis définir le charset des textes au sein de la base de données.
Un site multilingue ne s’arrête pas encore à cela, car selon la langue du navigateur,
le style Css du site n’est pas le même, cela permet entre autre de définir la barre de
scroll à droite pour les pays arabes et à gauche pour les Européens.
20
21
C – Module de gestion des articles et fichiers
Concernant les utilisateurs, la principale fonction qui les intéresse n’est pas la
réplication mais la façon de gérer leurs fichiers, leurs pages. Ici, l’objectif était dans
un premier temps de reproduire les mêmes fonctions. Cependant, en avançant dans
le développement, j’ai décidé d’améliorer différentes choses que je vais vous
présenter.
Dans Estis premier du nom, les fichiers et pages pouvaient être rangés dans un
dossier, mais il n’existait qu’un seul niveau de répertoire. C'est-à-dire que l’on ne
pouvait pas créer un dossier dans un autre dossier.
Dans cette image qui représente la liste des pages créés au sein du site, on voit la
présence de deux boutons violets qui se rajoutent dans le menu, un qui permet de
supprimer un dossier, et l’autre d’en créer un. On peut aussi remarquer que pour
visualiser le contenu d’un dossier, l’utilisateur doit utiliser une liste et choisir un nom
de dossier créé, afin d’en visualiser le contenu.
Dans la prochaine version d’Estis, voici comment les utilisateurs pourront gérer leurs
fichiers.
22
La différence saute aux yeux ; la gestion de rangement est incontestablement plus
élaborée. En effet, il est possible de créer des niveaux à l’infini, et l’interface
ressemble à si méprendre à l’explorateur Windows afin que les utilisateurs ne soient
pas perdus.
Dans un même dossier peut être contenues des pages écrites par l’utilisateur ou bien
des fichiers. Afin de ne pas les mélanger, il suffit de cliquer sur l’onglet Files pour
passer en mode Visualisation des fichiers et l’onglet Pages pour visualiser ces pages.
Remarque : les dossiers ne sont pas créés sur le serveur, cela représente juste une
ligne dans la table Folder de la base de données. Le dossier est donc virtuel.
Pour en savoir plus sur la structure de la table, je vous invite à consulter l’annexe.
23
D – Module de création / édition de pages
Après avoir migré, et amélioré la gestion des fichiers au sein de Estis, j’ai dû
continuer en migrant le système de création de pages.
Dans Estis une page est en fait un ensemble d’élément. Afin d’illustrer ce fait, voici
une copie d’écran de l’Estis actuel.
Chaque élément est représenté par les icônes vertes. Un élément peut être un titre,
du texte, un lien vers une des pages de son site ou extérieur, une image ou un saut
de ligne.
Cette façon de procéder fait que la création de page peut prendre pas mal de temps,
c’est pourquoi nous avons décidé de modifier le système en utilisant un éditeur
Wysiwyg.
Après différentes recherches, et proposition nous avons opté pour l’outil FckEditor qui
est Open source, et en Php / Html. De plus, cet outil reconnaît lorsque l’on fait un
copier / coller provenant d’un fichier Word et le retranscrit à la perfection.
24
Afin de pouvoir faire des liens sur les pages générées par le biais de Estis, j’ai dù
modifier le code de différentes pages. Désormais lorsque l’on clique sur le bouton
Lien de l’éditeur, il est possible de faire un lien sur les autres du site, ou vers
l’extérieur.
25
E – Module des mails
Les serveurs d’Estis envoient de nombreux mails par jours, il fallait donc implémenter
cette fonction sur mes différentes machines Linux Debian. Mais afin de passer le
moins de temps sur cette partie, la direction m’a demandé de rechercher un outil /
composant open source qui permettrait d’utiliser un serveur Smtp.
Après différentes recherches, notre choix s’est porté vers PHP Mailer qui est une
classe PHP facilitant la génération et l'envoi d'e-mails.
Avec PHP Mailer, il y a deux méthodes pour envoyer des e-mails.
Ci-dessous voici un exemple de code pouvant servir à envoyer des mails en utilisant
un serveur Smtp :
<?
require "répertoire_phpmailer/class.phpmailer.php";
$mail = new PHPmailer();
$mail->IsSMTP();
$mail->Host='hote_smtp';
$mail->From='votre@adresse';
$mail->AddAddress('adresse@destinataire');
$mail->AddReplyTo('votre@adresse');
$mail->Subject='Exemple trouvé sur DVP';
$mail->Body='Voici un exemple d\'e-mail au format Texte';
if(!$mail->Send()){ //Teste le return code de la fonction
echo $mail->ErrorInfo; //Affiche le message d'erreur
(ATTENTION:voir section 7)
}
else{
echo 'Mail envoyé avec succès';
}
$mail->SmtpClose();
unset($mail);
?>
26
F – Module Utilisateur
Le créateur du site détient tous les droits, et ne peut pas être supprimé.
L’administrateur peut rédiger des articles, puis ensuite les publier, ou encore
supprimer du contenu, ou des utilisateurs.
L’utilisateur ne peut que rédiger des pages ou soumettre des fichiers, c’est ensuite à
l’administrateur ou créateur du site de publier l’article afin qu’il puisse être
visualisable pour les visiteurs du site.
D’autres fonctions ont été intégrées durant ces quatre mois de stage,
comme la gestion des templates…, mais afin de respecter le quota de
pages, j’ai mis ceux qui me semblaient être le plus intéressant.
27
LE BILAN
L’objectif principal de ce stage était la découverte du monde de l’entreprise et dans
cette optique, ce stage a totalement répondu à mes attentes. J’ai pu constater qu’il y
a une grande différence entre la théorie et son application dans le monde
professionnel. En effet, les priorités ne sont pas les mêmes, il faut faire preuve d’une
plus grande réactivité et autonomie dans l’entreprise et savoir tenir compte des
disponibilités de chacun.
Le second objectif était personnel, je me l’étais fixé lors de mon choix de stage. Je
souhaitais avant tout apprendre lors de mon stage et non pas « mettre seulement en
pratique mes connaissances ». C’est pourquoi, j’ai opté pour un stage qui m’a offert
la possibilité de maîtriser de façon poussée Mysql et Php, une technologie que je ne
connaissais guère avant mon stage.
Il convient de souligner un autre point important qui m’a permis une adaptation
rapide dans ce nouveau contexte : c’est la confiance que l’on m’a accordé dans le
service, lors de mon arrivée. En effet, la confiance est selon moi un atout indéniable
dans l’intégration d’une nouvelle structure, car elle m’a permis d’y trouver facilement
ma place. Tout au long de mon stage, j’ai travaillé en autonomie, ce qui m’a obligé à
prendre quelques initiatives et à rechercher seul de la documentation. De plus, il m’a
fallu apprendre à gérer mon temps pour fournir les différents travaux réalisés dans
les délais demandés.
Ce stage est donc pour moi une expérience enrichissante car il m’a fait progresser
dans de nombreux domaines tant au niveau technique que relationnel.
Grâce à ce projet, j’ai désormais une idée plus précise du travail en entreprise, et
l’assurance que je me dirige sur la bonne voie.
Je garderai donc un très bon souvenir de mon expérience au sein du PNUE qui m’a
permis d’amplifier ma passion pour l’informatique, et l’envie de poursuivre mes
études dans cette direction.
28
GLOSSAIRE
SMTP (Simple Mail Transfert Protocol): Protocole de base pour la messagerie sur
l'Internet dans lequel sont spécifiés l'enveloppe et le contenu des messages (RFC
822). Des extensions ont vu le jour afin de palier à certaines limitations; par exemple
MIME pour le multimédia, S/MIME pour la sécurité.
UNICODE : Codage de caractères sur 16 bits qui contient tous les caractères d'usage
courant dans les langues principales du monde.
URL : C’est un identifiant unique d’une ressource se trouvant sur Internet. Une url
comprend plusieurs éléments : le protocole, le nom de la machine hébergeant la
ressource (fichier, page web), le nom de domaine, le nom de la ressource.
Ex : http://nom.com/lapage.php
WYSIWYG : C’est un acronyme (de la locution anglaise What you see is what you
get signifiant littéralement « ce que vous voyez est ce que vous obtenez » ou plus
élégamment « tel affichage, tel résultat ») couramment utilisé en informatique pour
désigner les interfaces utilisateurs graphiques permettant de composer visuellement
le résultat voulu, typiquement pour un logiciel de mise en page, ou un traitement de
texte.
29
BIBLIOGRAPHIE
Afin de réaliser au mieux ce qui m’était demandé au cours de mon stage, ma
principale source d’information a été Internet.
Voici donc les quelques sites qui m’ont permis de me former aux technologies
demandées.
30
ANNEXE
Ayant codé plus d’une cinquantaine de pages, vous retrouverez ici les codes les plus
intéressant
<?php
/**
CREATE TABLE `replicate` (
`id` INT NOT NULL AUTO_INCREMENT ,
`nameRep` VARCHAR( 100 ) NOT NULL ,
`file` VARCHAR( 100 ) NOT NULL ,
`position` INT NOT NULL ,
PRIMARY KEY ( `id` )
);
SQL query:
ALTER TABLE `replicate` ADD `relayFile` VARCHAR( 100 ) NOT NULL ,
ADD `relayPos` INT NOT NULL ,
ADD `RelayMasterFile` VARCHAR( 100 ) NOT NULL ,
ADD `ExecMasterPos` INT NOT NULL ,
ADD `RelaySpace` INT NOT NULL ;
**/
//List Param
$dodo = 6;
//start replication
$sqlStart = "start slave";
31
$reqStart = mysql_query($sqlStart) or die ('Erreur Sql: '.
$sqlStart.'<br>'.mysql_error());
sleep ($dodo);
//stop replication
$sqlStop = "stop slave";
$reqStop = mysql_query($sqlStop) or die ('Erreur Sql: '.
$sqlStop.'<br>'.mysql_error());
echo '<br>';
32
How to create the database
//création de la BD
CREATE DATABASE estis DEFAULT CHARACTER SET utf8 COLLATE
utf8_unicode_ci;
33
ADD CONSTRAINT FOREIGN KEY (idPageHome) REFERENCES page(idPage)
ON DELETE SET NULL
;
34
ALTER TABLE file
ADD idFolder int null default '0',
ADD idServerFolder int null,
ADD CONSTRAINT FOREIGN KEY (idFolder,idServerFolder) REFERENCES
folder(idFolder,idServer) ON DELETE SET null;
35
How to setup estis.
Avant de partir, j’ai dû mettre en place une procédure, afin que le développeur de
l’Unep, se trouvant au Japon puisse configurer de nouveaux serveurs selon le modèle
Php / Mysql.
Step 1
To manage cron
Apt-get install kdeadmin kdeadmin-kfile-plugins
Editor HTml
Apt-get install quanta compare tidy kimagemapeditor kommander kxsldbg
kfilereplace klinkstatus
Install apache2
Apt-get install apache2
Documentation of apache 2
Apt-get install apache2-doc
/etc/init.d/apache2 restart
Install mysql v5
36
Apt-get install mysql-server-5.0
To define a password
Mysql –u root
Mysql > use mysql;
Mysql > update user set password = PASSWORD(‘yourpass’) where user=’root’;
Mysql > flush privileges;
Mysql > quit;
Install Php5
Apt-get install libapache2-mod-php5 php5-mysql php5-gd php5-cli
Install Phpmyadmin
Apt-get install phpmyadmin
/etc/init.d/apache2 restart
To go to phpmyadmin type in your browser http://127.0.0.1/phpmyadmin
Step 3
Ok so now we’re ready to put the website. Put the folder estis in
/var/www/
Change the value of $mdp and put what you put when you configured Mysql.
Now, we will install the database of Etis with Phpmyadmin that you must be install
early.
Then go in the database, and click on Import files and choose the file with the name
/sql/estis.sql.gz or /sql/estis.sql.zip
Then you must add a line in the table server. In order to do it, you can use
phpmyadmin. Go in the table server, then click to insert and add the line with the ip
of the computer.
Step 4: Replication
37
Pc 1 is the real
boss.
192.168.8.60
Pc 2 Pc 3
192.168.8.55 192.168.8.57
/etc/mysql/my.cnf
…
[mysqld]
…
server-id = 4
master-host = 192.168.8.60
master-user = repl
master-password = password
master-port = 3306
replicate-do-db = estis
log-bin = /var/log/mysql/bin.log
log-error = /var/log/mysql/error.log
slave-skip-errors = 1062
log_slave_updates
Then you must put this lines as comments. In order to do this, you must add # at
the beginning of the lines.
# bind address = 127.0.0.1
# skip networking
38
Master-host is the name of the master, we must add the lines for the slave, for Estis
all the computers are slave and master in the same time.
Master-user is the name of the user that you created, and master-password is the
pass of the user that you indicated for him.
Step 5: Crontab
As you can see in the step 4, in mysql we can notice only one master by computer.
To bypass it, we must planned a short script, which will be launched every 10
minutes.
So to do it, type
Crontab – e
This script use an other database that you must create with the script sql :
/var/estis/script/replicate.sql.gz
You must modify the file /var/estis/script/connexion.php and put the good password.
39