https 2009.jres.org planning files article pdf 85

Upload: scribdtoto

Post on 03-Mar-2018

227 views

Category:

Documents


0 download

TRANSCRIPT

  • 7/26/2019 Https 2009.Jres.org Planning Files Article PDF 85

    1/13

    mod_rewrite,mod_perl,Mason: que la force soit dansApache

    Alexandre SIMONCIRIL - Centre Interuniversitaire de Ressources Informatiques de LorraineRue du Doyen Roubault!"" #ANDO$%#R$-L&S-NANC' - (RANC$

    #incent D$LO#$CIRIL - Centre Interuniversitaire de Ressources Informatiques de LorraineRue du Doyen Roubault!"" #ANDO$%#R$-L&S-NANC' - (RANC$

    Rsum

    Le )ebest sans doute la facette la plus visible et la plus incontournable de l'Internet. Ces dernires annes les protocoles,les technologies et les frame*or+s ont normment volus pour faire changer les contenus et les mthodes deprogrammation d'un mode statique un mode dynamique. n parle au!ourd'hui du )eb ,". Le serveur "eb A.ac/ea suvoluer dans ce sens en proposant de nombreu# modules. $armi ces modules il y a la rcriture d'%RLavec mod0re*riteetle module d'e#cution et d'interprtation % embarque & 1erl mod0.erlvec ces deu# modules un dveloppeur a sadisposition deu# outils e#tr(mement puissants lui permettant d'agir dynamiquement sur la visibilit de son site et sur lapublication des contenus. mod0re*ritepermet de faire quasiment toutes les manipulations sur les %RLdemandes ce quientraine le dveloppeur, en quelques lignes Re*riteRule, rpondre de comple#es problmes ou besoins d'accs sonsite. vec mod0.erl, il peut aller encore plus loin en surchargeant et en modifiant le mode de fonctionnement % normal &d2A.ac/e en l'adaptant ses besoins. Le dveloppeur va pouvoir en quelques lignes de 1erlrcrire ou complter lesmodules % de base & d2A.ac/e et ainsi obtenir des fonctionnalits difficilement ralisables avec de simples scri.ts C3I.)nfin c*t contenu, le module 1erl45ML66Masonoffre un systme de tem.latesimple et complet. +rs li mod0.erl,45ML66Masonhrite de ses possibilits et dpasse le simple systme de tem.lateen allant plus loin dans la publication descontenus. Cet article fera le point sur ces technologies en les prsentant de manire pragmatique et en les illustrant par dese#emples concrets.

    Mots clefs

    A.ac/e7 1erl7 mod0re*rite7 mod0.erl7 Mason7 )eb ,"7 R$S5

    1 Introduction

    1armi les standards 8 l2ori9ine de l'Internet7 le eb et les .rotocoles associ:s sont certainement ceux qui ont subi les:volutions les .lus im.ortantes de ces derni;res ann:espache7 .our .rendre en com.te ces nouveaux usa9es7 s2a..uie surune arc/itecture interne ori9inale et flexible qui .ermet une extension modulaire de ses fonctionnalit:s L2accessibilit: desdiff:rentes :ta.es du .rocessus de traitement des requ

  • 7/26/2019 Https 2009.Jres.org Planning Files Article PDF 85

    2/13

    2 Apache: bien plus qu'un serveur web

    2.1 Contexte

    1our bien a..r:/ender la .r:sentation des modules mod/re"rite7 mod/perl et 1ason il est n:cessaire de faire una..rofondissement sur leur .oint commun 6pache La com.r:/ension de c/acun de ces modules .ourrait se suffire 8 elle-m

  • 7/26/2019 Https 2009.Jres.org Planning Files Article PDF 85

    3/13

  • 7/26/2019 Https 2009.Jres.org Planning Files Article PDF 85

    4/13

    La (i9ure B .ro.ose l2exem.le d2enre9istrements desmodules mod/perl, mod/re"rite7 mod/alias et mod/coreau hoo9translate/name

    Le .rocessus fils7 au .assa9e sur ce croc/et7 ex:cute lesfonctions enre9istr:es .ar mod/perl.uis mod/re"rite.uismod/alias et enfin mod/core Cette s:rie d2ex:cutions estconditionnelle et fonction de la confi9uration du serveur7 dela requ .our c/ainer l2ex:cution defonctions enre9istr:es .ar les modules activ:s au d:marra9e du serveur Cette notion de croc/et n2est .as fi9:e et il ne serait

    .as sur.renant de voir a..aratre des nouveaux hoo9sdans la .roc/aine version d'pache7 comme cela a :t: le cas lors du

    .assa9e de la version ," 8 la version ,, Etest/config et monitor7.D2autre .art7 la d:claration de nouveaux hoo9sne selimite .as au coeur d'pacheet un module .eut .ro.oser lors de son ex:cution un .oint de branc/ement qui .ourrait

  • 7/26/2019 Https 2009.Jres.org Planning Files Article PDF 85

    5/13

    5ransversalement aux o.:rations a..liqu:es lors du.assa9e dans les hoo9s7 le flux de donn:es entre le clientet le serveur .eut car il .ro.ose une vraie .lateforme de d:velo..ement .our sesbesoins .ro.res et .our son :volution Mais cette .lateforme .eut

  • 7/26/2019 Https 2009.Jres.org Planning Files Article PDF 85

    6/13

    Les d:tails des m:canismes utilis:s .arpache.our faire la corres.ondance entre l'-Ldemand:e et l2em.lacement sur lesyst;me de fic/iers sont .r:sent:s dans le document 6 http2==httpd.apache.org=docs=;.;=urlmapping.html

    mod/re"riteest un outil tr;s utile .our le d:velo..ement d2a..lications *eb = modernes >7 car celles-ci ne sont .as touoursbien .lac:es .our un traitement s.:cifique des -L.Il est souvent .lus sim.le et .ertinent d2:crire quelques r;9les der::criture Ee"riteuleF que de se lancer dans un coda9e a..licatif tro. s.:cifique

    Il faut .r:ciser que mod/re"rite s2enre9istre et intervient sur les hoo9stranslate_name7 fixupset handlerdu cycle devie d2une requ les ex.ressionsr:9uli;res afin d2utiliser le contenu qui aura :t: :valu: dans les r;9les de substitutions et dans les r;9les conditionnelles Cem:canisme s2a..elle = r:f:rence arri;re > Ebac96referenceF

    U@B R$S ,""

    3igure 2 )nchainement des rgles de rcriture

    RewriteCond TestString CondPattern

    RewriteRule Pattern Substitution

    RewriteRule Pattern Substitution

    RewriteCond TestString CondPattern

    rewritten URL #1

    initial URL

    rewritten URL #2

    RewriteRule Pattern Substitution

    final URL

  • 7/26/2019 Https 2009.Jres.org Planning Files Article PDF 85

    7/13

    La(i9ure V7 ci-contre7 illustre le = .arent/:sa9e > des $attern etla cr:ation automatique des r:f:rences arri;res associ:es Il est:9alement .r:cis: o sont utilisables les diff:rentes r:f:rencesarri;res

    ". +xemples d'utilisations

    Cet article n2ira .as .lus loin dans les ex.lications des r::critures pache Le lecteur .ourra se re.orter aux excellentesdocumentations sur le suet 6 http2==httpd.apache.org=docs=;.;=re"rite= 1our illustrer la .uissance de mod/re"riterien nevaut quelques exem.les concrets

    Comment remettre dans la porte du site "eb une page qui a boug sur le systme de fichier D

    RewriteRule /doc/doc.html /chemin/ancien/site/vieille-doc.html

    Comment cacher un script ou le passage de paramtres derrire une % belle & -L D

    RewriteRule /graph-renater /cgi-bin/graph-rrd.cgi?file=renater.rrdRewriteRule /([edit|view])/article([0-9]+) /cgi-bin/wiki.php?action=$1&article=$2

    Comment servir une page spciale en fonction du navigateur du client D

    RewriteCond %{HTTP_USER_AGENT} (Firefox) [OR]RewriteCond %{HTTP_USER_AGENT} (Safari)RewriteRule /foo.html /navigateurs-OK/%1/foo.html [L]

    RewriteRule /foo.html /navigateurs-indesirables/foo.html

    Comment faire une redirection :code 0++$ >##7 vers un site "eb e#trieur D

    RewriteRule /vers-google http://www.google.fr [R]

    Comment donner accs automatiquement une page sous arborescence du type 6116EE depuis une -L invariable D

    RewriteRule /doc-du-jour /vers/arbo/%{TIME_YEAR}-%{TIME_MON}-%{TIME_DAY}/doc

    Comment afficher une image spciale sur le site est accd en I$v D

    RewriteCond %{SERVER_ADDR} [:]+RewriteRule /images/proto.png /images/proto-ipv6.png [L]RewriteRule /images/proto.png /images/proto-ipv4.png

    Comment servir des pages diffrentes en fonction de l'heure de consultation du site D

    RewriteCond %{TIME_HOUR}%{TIME_MIN} >0800RewriteCond %{TIME_HOUR}%{TIME_MIN}

  • 7/26/2019 Https 2009.Jres.org Planning Files Article PDF 85

    8/13

    mod_perl: la puissance n'est rien sans la maitrise

    .1 0escription

    Se lancer dans mod/perl.eut7 au d:but7 dis.onibles avec pache 1our biena..r:/ender le suet7 un d:velo..eur devrait d:8 se .enc/er sur le fonctionnement interne d'pache.Il lui sera .lus facilede faire le .arall;le avec les .ossibilit:s de mod/perl La suite de cet article s2a..uie sur le c/a.itre , qui a trait: en d:tails

    du fonctionnement interne d'pache.La r:.onse 8 la question = c2est quoi mod/perl P> .ourrait

  • 7/26/2019 Https 2009.Jres.org Planning Files Article PDF 85

    9/13

    mod/perl d:voile toutes ses .ossibilit:s dans le cycle de vie des .rocessus fils et du traitement des requ

  • 7/26/2019 Https 2009.Jres.org Planning Files Article PDF 85

    10/13

    ." (es filtresApacheet mod_perl

    Les filtres sont7 avec les hoo9s7 le fondement du fonctionnement interne d'pacheet mod/perl.ro.ose7 bien :videmment7une interface$erl8 ce m:canisme

    La (i9ure @@ d:taille l2im.l:mentation mod/perl desfiltres pache Les filtres dis.onibles ne .euvents2a..liquer qu2aux niveaux suivants 6

    filtre de protocole 6 dans mod/perl, la fonctionim.l:mentant le filtre sera d:clar:e de ty.e3ilterConnection0andler

    filtre de contenu 6 dans ce cas la fonction $erlassoci:e sera de ty.e3ilterequest0andler

    Le code suivant .r:sente un exem.le de filtre decontenu E3ilterequest0andlerF en sortie de traitementde la requctx) { $f->r->headers_out->unset('Content-Length'); $f->ctx(1); }

    while ($f->read(my $data)) { my $lowercase = lc( $data ); $f->print( $lowercase ); }

    return Apache2::Const::OK;

    }

    L2utilisation des filtres est extr

  • 7/26/2019 Https 2009.Jres.org Planning Files Article PDF 85

    11/13

    ) nration de contenu avecH!M::Mason

    ).1 Contexte

    1endant lon9tem.s7 la faWon la .lus sim.le et la .lus r:.andue de 9:n:rer du contenu dynamique 8 travers un serveur *ebconsistait en l2:criture descriptsCNIECommon Nate"ay InterfaceF Cette m:t/ode r:alise l2ex:cution d2un .ro9ramme .ourc/aque requ Ce dernier serasyst:matiquement ex:cut: lors de l2a..el du ou des com.osants qui en /:ritent Lors d2une requ se mat:rialisant .ar un com.osant du m pages accessibles

    /pages/autohandler # handler par dfaut de toutes les pages

    # => rendu global + initialisation (db, ...)

    /pages/private/ # rpertoire avec restriction d'accs

    /pages/private/autohandler # vrification des droits

    # => @Ips, User, Horaires d'accs, ...

    @@@B R$S ,""

    3igure 4;2 Composants 1ason

    Entte

    Menu

    Contenu

    Pied de page

    Menu

    Menu

    Menu

    JRES 20009

    %#...

    Entte

    /pages/index.htmlhttp://jres.org/index.html

    /comps/header.mas

    mentons l'(ales

  • 7/26/2019 Https 2009.Jres.org Planning Files Article PDF 85

    12/13

    1arall;lement 8 cette notion d2/:rita9e71asonint;9re un m:canisme nomm: = dhandler> .our la 9estion d'-Lvirtuellesqui ne corres.ondent .as directement 8 des com.osants .r:sents sur le syst;me de fic/iers Avec l2av;nement d'EOet desinterfaces)?+ Eepresentational ?tate +ransferF7 la n:cessit: d2avoir un contr?le total sur les -Ls2av;re indis.ensable1ason, 8 travers le conce.t de = default handler>7 offre une r:.onse sim.le et efficace qui .eut servir de .oint de d:.art.our une r:flexion de 9estion dynamique des -L D:s lors7 on se rend com.te que1asonn2est .as un sim.le moteur de=template > mais .eut servir de base 8 la mise en oeuvre d2un frame"or9 de d:velo..ement d2a..lications *eb A titred2exem.le7 l2ensemble desframe"or9s 15Cre.osent tous sur un syst;me d2ai9uilla9e des requ

  • 7/26/2019 Https 2009.Jres.org Planning Files Article PDF 85

    13/13

    Le flux d2ex:cution des com.osants .r:sent: dans la(i9ure @Billustre les ca.acit:s de1ason8 r:.ondre de mani;re sim.leet astucieuse 8 des .robl:matiques vari:es Ce sc/:ma re.rend les exem.les .r:c:dents et met en :vidence l2utilisationcou.l:e des m:canismes d2/:rita9e et de mani.ulation dynamique des -L .our la 9estion d2acc;s restreints 8 desressources

    Cette br;ve .r:sentation des conce.ts forts de 1ason n2a .our but que de montrer son int:r