Fedora Core 7 - Université Paris-Sud
Transcription
Fedora Core 7 - Université Paris-Sud
Roza Lemdani Master Informatique 1re année Encadrantes : Evelyne Carey-Gailhardis et Chiara Marmo Ingénieurs Informaticiennes CNRS Mise en place d’un site WEB en environnement Linux (Fedora Core 7) Stage du 1er avril au 30 juin 2008 Université Paris-Sud 11 Faculté des sciences 91405 Orsay cedex Laboratoire IDES CNRS UMR 8148 Bâtiment 509 91405 Orsay Remerciements Je tiens tout d’abord à remercier Chiara Marmo et Evelyne Carey-Gailhardis qui m’ont encadrée durant ce stage et qui ont tout fait pour rendre mon travail plus plaisant. Ce fut un plaisir de collaborer avec elles. Merci également à tout le personnel et les stagiaires du bâtiment 509 qui ont été d’une grande sympathie et d’une gentillesse sans égal. Pour finir, un grand merci au doyen de l’université Paris-sud 11, Philippe Masson que j’ai eu l’honneur de rencontrer, et qui m’a fait confiance pour la réalisation de ce projet. 1 Table des matières 1 Introduction 4 2 Apache 5 2.1 2.2 httpd.conf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 2.1.1 Définition de l’extension du fichier d’index . . . . . . . . . . . . . . 5 2.1.2 Activation du .htaccess . . . . . . . . . . . . . . . . . . . . . . . . . 5 2.1.3 Activation du public html des comptes . . . . . . . . . . . . . . . . 6 system-config-httpd.conf . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 2.2.1 Définition de l’extension du fichier d’index . . . . . . . . . . . . . . 7 2.2.2 Activation du public html des comptes . . . . . . . . . . . . . . . . 7 3 Le site 9 3.1 Spip . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 3.1.1 Le bilinguisme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 3.1.2 L’intranet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 3.1.3 Le design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 Les formulaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 3.2.1 Magellan, MOLA MEGDRs et MOC . . . . . . . . . . . . . . . . . 10 3.2.2 MOLA PEDRs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 3.2 4 Base de données 4.1 12 Le site . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 12 TABLE DES MATIÈRES 4.2 3 Les données . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 4.2.1 Magellan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 4.2.2 MOLA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 4.2.3 MOC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 5 Sauvegarde automatique 15 Annexes 16 Chapitre 1 Introduction Réaliser un site web est une chose facile, mais le maintenir à jour est plus contraignant. C’est pourquoi, le but de ce stage était de réaliser un site web à l’aide d’un système de gestion de contenu (SPIP) qui permet une mise à jour simplifiée d’un site par toute personne disposant d’une connexion internet. Dans un premier temps, nous parlerons des diverses modifications apportées au server Apache pour le bon fonctionnement du site [2]. Par la suite, nous évoquerons la mise en place du site lui même et de sa structure [3]. Après quoi, nous nous intéresserons aux bases de données créées ainsi qu’à leur remplissage [4]. Pour finir, nous traiterons de la sauvegarde automatique du site et des bases de données qui le font tourner [5]. 4 Chapitre 2 Apache Quelques modifications sur le server Apache ont été nécessaires pour le bon fonctionnement du site. Celles-ci sont listées ci-dessous. 2.1 httpd.conf 2.1.1 Remplacement de : D i r e c t o r y I n d e x i n d e x . html i n d e x . html . v a r par : D i r e c t o r y I n d e x i n d e x . php i n d e x . html i n d e x . html . v a r 2.1.2 Définition de l’extension du fichier d’index Activation du .htaccess Remplacement de : <D i r e c t o r y ”/ data / w e b s i t e ”> # # # # # # # # # # P o s s i b l e v a l u e s f o r t h e Op ti on s d i r e c t i v e a r e ”None ” , ” A l l ” , o r any c o m b i n a t i o n o f : I n d e x e s I n c l u d e s FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews Note t h a t ”MultiViews ” must be named ∗ e x p l i c i t l y ∗ −−− ”O pt io ns A l l ” doesn ’ t g i v e i t t o you . The Op ti on s d i r e c t i v e i s both c o m p l i c a t e d and i m p o r t a n t . h t t p : / / httpd . apache . o r g / d o c s / 2 . 2 / mod/ c o r e . html#o p t i o n s 5 Please see httpd.conf 6 # f o r more i n f o r m a t i o n . # O pt io ns I n d e x e s FollowSymLinks # # A l l o w O v e r r i d e c o n t r o l s what d i r e c t i v e s may be p l a c e d i n . h t a c c e s s # I t can be ” A l l ” , ”None ” , o r any c o m b i n a t i o n o f t h e keywords : # O pt io n s F i l e I n f o AuthConfig L i m i t # A l l o w O v e r r i d e None files . # # C o n t r o l s who can g e t s t u f f from t h i s s e r v e r . # Order a l l o w , deny Allow from a l l </ D i r e c t o r y > par : <D i r e c t o r y ”/ data / w e b s i t e ”> # # # # # # # # # # # # P o s s i b l e v a l u e s f o r t h e Op ti on s d i r e c t i v e a r e ”None ” , ” A l l ” , o r any c o m b i n a t i o n o f : I n d e x e s I n c l u d e s FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews Note t h a t ”MultiViews ” must be named ∗ e x p l i c i t l y ∗ −−− ”O pt io ns A l l ” doesn ’ t g i v e i t t o you . The Op ti on s d i r e c t i v e i s both c o m p l i c a t e d and i m p o r t a n t . h t t p : / / httpd . apache . o r g / d o c s / 2 . 2 / mod/ c o r e . html#o p t i o n s f o r more i n f o r m a t i o n . Please see O pt io ns I n d e x e s FollowSymLinks # # A l l o w O v e r r i d e c o n t r o l s what d i r e c t i v e s may be p l a c e d i n . h t a c c e s s # I t can be ” A l l ” , ”None ” , o r any c o m b i n a t i o n o f t h e keywords : # O pt io n s F i l e I n f o AuthConfig L i m i t # AllowOverride All #A l l o w O v e r r i d e None files . # # C o n t r o l s who can g e t s t u f f from t h i s s e r v e r . # Order a l l o w , deny Allow from a l l </ D i r e c t o r y > 2.1.3 Activation du public html des comptes Remplacement de : <I f M o d u l e m o d u s e r d i r . c> # system-config-httpd.conf 7 # U s e r D i r i s d i s a b l e d by d e f a u l t s i n c e i t can c o n f i r m t h e p r e s e n c e # o f a username on t h e system ( d e p e n d i n g on home d i r e c t o r y # permissions ) . # UserDir d i s a b l e # # To e n a b l e r e q u e s t s t o /˜ u s e r / t o s e r v e t h e u s e r ’ s p u b l i c h t m l # d i r e c t o r y , remove t h e ”U s e r D i r d i s a b l e ” l i n e above , and uncomment # the f o l l o w i n g l i n e i n s t e a d : # #U s e r D i r p u b l i c h t m l </IfModule> par : <I f M o d u l e m o d u s e r d i r . c> # # U s e r D i r i s d i s a b l e d by d e f a u l t s i n c e i t can c o n f i r m t h e p r e s e n c e # o f a username on t h e system ( d e p e n d i n g on home d i r e c t o r y # permissions ) . # #U s e r D i r d i s a b l e # # To e n a b l e r e q u e s t s t o /˜ u s e r / t o s e r v e t h e u s e r ’ s p u b l i c h t m l # d i r e c t o r y , remove t h e ”U s e r D i r d i s a b l e ” l i n e above , and uncomment # the f o l l o w i n g l i n e i n s t e a d : # UserDir public html </IfModule> 2.2 system-config-httpd.conf 2.2.1 Définition de l’extension du fichier d’index Remplacement de : D i r e c t o r y I n d e x i n d e x . html i n d e x . htm par : D i r e c t o r y I n d e x i n d e x . php i n d e x . html i n d e x . htm 2.2.2 Activation du public html des comptes Remplacement de : system-config-httpd.conf 8 <I f M o d u l e m o d u s e r d i r . c> # # U s e r D i r i s d i s a b l e d by d e f a u l t s i n c e i t can c o n f i r m t h e p r e s e n c e # o f a username on t h e system ( d e p e n d i n g on home d i r e c t o r y # permissions ) . # UserDir ” d i s a b l e ” # # To e n a b l e r e q u e s t s t o /˜ u s e r / t o s e r v e t h e u s e r ’ s p u b l i c h t m l # d i r e c t o r y , u s e t h i s d i r e c t i v e i n s t e a d o f ”U s e r D i r d i s a b l e ”: # #U s e r D i r p u b l i c h t m l </IfModule> par : <I f M o d u l e m o d u s e r d i r . c> # # U s e r D i r i s d i s a b l e d by d e f a u l t s i n c e i t can c o n f i r m t h e p r e s e n c e # o f a username on t h e system ( d e p e n d i n g on home d i r e c t o r y # permissions ) . # #U s e r D i r ” d i s a b l e ” # # To e n a b l e r e q u e s t s t o /˜ u s e r / t o s e r v e t h e u s e r ’ s p u b l i c h t m l # d i r e c t o r y , u s e t h i s d i r e c t i v e i n s t e a d o f ”U s e r D i r d i s a b l e ”: # UserDir public html </IfModule> Chapitre 3 Le site 3.1 Spip Le site a été réalisé à l’aide de SPIP qui est un système de gestion de contenu. De ce fait, la maintenance du site se trouve être facilitée. De plus, l’édition des pages devient à la portée de toute personne disposant d’un accès à l’Internet et d’un compte administrateur ou rédacteur sur le site. 3.1.1 Le bilinguisme Il est possible de rédiger des articles, des brèves (news) ou encore des résumés de rubriques. Le site étant bilingue, les titres et contenus de rubriques et de brèves doivent être rédigés de la sorte : <m u l t i > [ f r ] Texte en f r a n ç a i s . . . [ en ] Texte en a n g l a i s . . . </m u l t i > Quant aux articles, il suffit de les rédiger normalement, la langue par défaut sera le français. Après quoi il faudra créer une traduction de l’article en question, et spécifier que l’article est en anglais. 3.1.2 L’intranet Une partie intranet a été également mise en place. Elle peut donc contenir des articles et/ou rubriques invisibles aux utilisateurs non identifiés. Pour cela, il suffit de rattacher les élements en question à la rubrique Intranet dans l’espace d’administration. 9 Les formulaires 10 Ceci a été réalisé à l’aide du plugin « Accès restreint » mis à disposition par la communauté SPIP. 3.1.3 Le design Tout ce qui concerne le design du site se trouve dans le répertoire “squelettes” à la racine du site. 3.2 Les formulaires L’un des aspects du projet était de remettre à disposition les formulaires de téléchargement. Ces derniers permettaient d’accéder aux images contenues dans les CDs relatifs aux différentes missions sur les planètes. 3.2.1 Magellan, MOLA MEGDRs et MOC Les formulaires ont été conçus de façon à répondre au mieux aux attentes de l’utilisateur. De cette façon, il lui est possible de choisir les coordonnées qu’il recherche en les entrant manuellement dans les champs concernés, ou en cliquant sur la carte de la planète en question (si disponible). Aussi les formulaires répondent-ils de façon intéractive aux actions de l’utilisateur, de manière à l’informer avec précision de ses éventuelles maladresses. Cette sécurité est contrôlée par du JavaScript (checkform.js), et si les informations communiquées par l’utilisateur se trouvent être correctes, les données sont transmises à un script AJAX (inc content.js) qui affiche le résultat de la requête de l’utilisateur. La navigation entre les résultats (tri, changement de page) se fait également via le script AJAX “inc content.js”. Des miniatures des images ont également été créées pour les données Magellan et MOLA, et à l’aide de l’utilitaire ISIS. Elles sont disponibles dans la page qui détaille les informations d’une image donnée (en cliquant sur le lien “voir” issu du formulaire). 3.2.2 MOLA PEDRs Les données MOLA PEDRs se trouvent être particulières, car le résultat de la requête de l’utilisateur génère un fichier qui lui sera exlusivement destiné. Ces fichiers sont détruits au bout de 30 min, c’est pourquoi, un script de téléchargement adapté à la situation a été réalisé, de façon à vérifier si le fichier qu’essaye de télécharger l’utilisateur est toujours disponible sur le server. Le cas échéant la date du fichier est remise à zéro (pour éviter Les formulaires 11 qu’il soit effacé au cours du téléchargement). Autrement, il est indiqué à l’utilisateur que sa session a expiré. Le script en question a été réalisé en AJAX et se trouve dans le fichier “check file.js” et communique avec la page PHP “check file.php”. Note Les différents scripts gérant l’interaction avec l’utilisateur se trouvent dans le répertoire “scripts” qui est à la racine du site. Chapitre 4 Base de données 4.1 Le site Les tables du site spip se trouvent dans la base « spip ». 4.2 4.2.1 Les données Magellan Les données magellan se trouvent dans la base du même nom. Trois tables meublent la base : – La table image : contient les données relatives aux images se trouvant sur le server. image (image id, file name, volume name, file path, file type, line samples, lines, map resolution, map scale, line projection offset, sample projection offset, center latitude, center longitude, image footprint) – La table image type : contient les données relatives aux types d’images. image type (type id, type name, description en, description fr) Les CDs, bien que présents à la photothèque, ont été téléchargés via le site du PDS, car cela représentait une solution plus rapide. Concernant l’extraction des informations relatives aux images, les données de type MIDR disposaient d’un label séparé pour chaque image. Il suffisait donc de parcourir les fichiers en question afin d’en extraire les informations qui nous intéressaient. Quant aux images F-MAPs, le label relatif à chacune d’elles se trouvait être contenu dans l’entête de l’image elle-même. De ce fait, il a fallu lire les premiers bits de ces fichiers afin d’effectuer le même traitement que précédemment. 12 Les données 4.2.2 13 MOLA Les données MOLA se trouvent dans la base mola. La structure des tables reste identique à celle de Magellan. Leur remplissage à été semblable à celui des données de type MIDR de Magellan également. Note En ce qui concerne les images des pôles, les longitudes n’ayant pas été précisées, les longitudes introduites ont été 0 à 360˚. 4.2.3 MOC Les données MOC se trouvent dans la base du même nom. On y trouve 4 tables : – La table image : contient les données relatives aux images se trouvant sur le server. image (image id, file name, volume name, file path, phase, instrument id, filter id, line samples, lines, map resolution, map scale, center latitude, center longitude, image footprint, flag) – La table phase : contient les données relatives aux phases des missions. phase (phase id, phase name) – La table instrument : contient les données relatives aux instruments. instrument (instr id, instr name) – La table filter : contient les données relatives aux filtre d’images. filter (filter id, filter name) Il est à noter que pour les données MOC, les informations relatives aux images se trouvent être sous forme de fichiers CSV (Comma Separated Values). Chaque ligne de ce type de fichiers comportant des informations sur une image donnée. En utilisant les valeurs fournies dans le label explicatif pour le début et la longueur de chaque champ, un décalage dans l’extraction des information se produisait sur certaines valeurs. C’est pourquoi, l’extraction a été effectuée en délimitant chaque information par les virgules l’entourant. Cette méthode n’est pas la plus préférable du fait qu’il puisse se trouver une virgule dans un champ, mais au vue de la nature des données, ce problème ne peut se poser que pour le dernier champ (celui de description), que nous n’utilisons pas. Les projections n’ayant pas toutes été effectuées, certaines valeurs de longitude et de latitude se trouvent être manquantes. C’est pourquoi un calcul a été effectué afin de déterminer, à l’aide de la latitude (resp. longitude) centrale et de la latitude (resp. longitude) opposée à celle que l’on recheche, une latitude (resp. longitude) approximative. Une trace de ces calculs se trouve dans la table IMAGE, le champ FLAG étant à 0 si toutes les valeurs étaient fournies, et à 1 si un calcul a été effectué. Les données 14 Enfin, la MAP RESOLUTION (m/deg) se trouvant être une donnée manquante, elle a été calculée à l’aide de la formule : M AP RESOLU T ION = 3390000 étant un rayon de Mars en mètres. 2 × π × 3390000 M AP SCALE × 360 Chapitre 5 Sauvegarde automatique Une sauvegarde automatique de la base de données ainsi que du site est programmée pour tous les 1er et 15 du mois, à 2h00. Le script de sauvegarde se trouve sous le répertoire /data/backup et porte le nom « backup.planeto ». Le script effectue au préalable une copie des bases spip, magellan, mola et moc, puis crée une archive dans le même répertoire, contenant les scripts sql relatifs aux bases citées, le site spip se trouvant dans /data/website, les scripts de remplissage des bases de données, ainsi que le script lui même. En ce qui concerne l’excution automatique du script, ceci est géré par Cron. Les crontab étant personelles, l’execution du script a été ajoutée à la crontab de l’utilisateur root de la façon suivante : [ r o o t @ p l a n e t o ˜]# c r o n t a b −e La commande ci-dessus ouvre le fichier crontab de l’utilisateur root à l’aide de l’éditeur vim. 0 2 1 , 1 5 ∗ ∗ / data / backup / backup . p l a n e t o >>/dev / n u l l Une description du fonctionnement de Cron est fournie en annexe. Note Il est possible de lancer la sauvegarde manuellement, en executant le script “/data/backup/backup.planeto”. 15 Annexes Syntaxe de cron Afin d’éditer la table cron, il suffit d’exécuter la commande suivante : c r o n t a b −e Cette commande a pour effet de lancer l’éditeur Vi présentant la table actuelle (donc aucune si il s’agit du premier lancement de crontab). Chaque entrée de la table (chaque ligne) correspond à une tâche à exécuter et est notée de la façon suivante : mm hh j j MMM JJJ t â c h e > l o g Dans cette syntaxe : – – – – mm représente les minutes (de 0 à 59) hh représente l’heure (de 0 à 23) jj représente le numéro du jour du mois (de 1 à 31) MMM représente le numéro du mois (de 1 à 12) ou l’abréviation du nom du mois (jan, feb, mar, apr, ...) – JJJ représente l’abréviation du nom du jour ou le chiffre correspondant au jour de la semaine (0 représente le dimanche, 1 représente le lundi, ...) – tâche représente la commande ou le script shell à exécuter – log représente le nom d’un fichier dans lequel stocker le journal des opérations. Si la clause > log n’est pas spécifiée, cron enverra automatiquement un mail de confirmation. Pour éviter cela il suffit de spécifier > /dev/null Pour chaque unité de temps (minute/heure/...) les notations sont possibles : – – – – * : a chaque unité de temps 2-5 : les unités de temps (2,3,4,5) */3 : toutes les 3 unités de temps (0,3,6,...) 5,8 : les unités de temps 5 et 8 Source http://www.commentcamarche.net/tutlinux/lincron.php3