Download as pdf or txt
Download as pdf or txt
You are on page 1of 72

Monter son serveur web avec Apache 2.4.3 + PHP5.4.11 + MySQL 5.5.

29
!"v"er Hoarau #o!"v"er.hoarau$%un"&.or'( )3.4* 1 +arsr 2,13 1H"stor"-ue................................................................................................................................................................3 2Pr.a+bu!e................................................................................................................................................................4 3Pr.sentat"on.............................................................................................................................................................4 4/nsta!!at"on...............................................................................................................................................................4 4.1/nsta!!at"on 0e MySQL....................................................................................................................................4 4.1.11o+p"!at"on et "nsta!!at"on.......................................................................................................................4 4.1.2Lance+ent auto+at"-ue...........................................................................................................................2 4.1.3M"se en p!ace 0es ut"!"sateurs..................................................................................................................3 4.1.41r.at"on 0e tab!es..................................................................................................................................1, 4.1.5Perte 0u +ot 0e passe 04a0+"n"strateur +ys-!0.....................................................................................12 4.2/nsta!!at"on 04Apache.....................................................................................................................................12 4.3/nsta!!at"on 0e PHP........................................................................................................................................14 51on%"'urat"on bas"-ue...........................................................................................................................................15 5.1Pr.sentat"on 0e !4arborescence 04Apache.......................................................................................................15 5.2Le %"ch"er 0e con%"'urat"on 04Apache............................................................................................................12 5.3 Lance+ent auto+at"-ue 0e !4app!"cat"on......................................................................................................13 5.3.1Sous Man0r"va6Ma'e"a..........................................................................................................................13 5.3.2Sous ubuntu...........................................................................................................................................19 5.4Les pa'es webs ut"!"sateurs...........................................................................................................................21 5.5Les a!"as.........................................................................................................................................................21 51on%"'urat"on avanc.e..........................................................................................................................................21 5.1Protect"on 04une pa'e....................................................................................................................................21 5.2Les h7tes v"rtue!s...........................................................................................................................................23 28est"on 0e bases 0e 0onn.es avec MySQL...........................................................................................................24 2.19ests 0e %onct"onne+ent avec MySQL.........................................................................................................24 2.2A0+"n"strat"on 0es bases MySQL avec phpMyA0+"n.................................................................................25 3Scr"pts 18/............................................................................................................................................................23 9PHP et L:AP........................................................................................................................................................29 1, S.cur"ser Apache et PHP 0ans un env"ronne+ent chroot.................................................................................3, 1,.1Pr.sentat"on.................................................................................................................................................3, 1,.2/nsta!!at"on 0e MySQL................................................................................................................................3, 1,.2.1/nsta!!at"on 0e MySQL avec !es sources.............................................................................................3, 1,.2.21hrooter MySQL.................................................................................................................................31 1,.2.31on%"'urat"on 0e MySQL....................................................................................................................33 1,.3/nsta!!at"on 04Apache...................................................................................................................................35 1,.3.1/nsta!!at"on 04Apache...........................................................................................................................35 1,.41hrooter Apache.........................................................................................................................................35 1,.4.11on%"'urat"on 04Apache.......................................................................................................................39 1,.5/nsta!!at"on 0e PHP......................................................................................................................................41 1,.5.1/nsta!!at"on avec !es sources 0e PHP...................................................................................................41 1,.5.21hrooter PHP.......................................................................................................................................42 1,.5.31on%"'urat"on 0e PHP..........................................................................................................................43

Apache+PHP+MySQL

http;66www.%un"&.or'

1,.5Lance+ent auto+at"-ue..............................................................................................................................44 1,.5.1Lance+ent auto+at"-ue 0e Mys-!......................................................................................................44 1,.5.2Lance+ent auto+at"-ue 04Apache.......................................................................................................45 1,.2/nsta!!at"on 04un b!o' wor0press en !oca!....................................................................................................45 11 Ana!yser !es !o's 0<Apache................................................................................................................................42 11.1 Pr.sentat"on................................................................................................................................................42 11.2 Ana!yser !es !o's 04Apache avec weba!"=er................................................................................................42 11.2.1Pr.sentat"on.........................................................................................................................................42 11.2.2/nsta!!at"on...........................................................................................................................................43 11.2.31on%"'urat"on.......................................................................................................................................49 11.2.4>t"!"sat"on............................................................................................................................................5, 11.3Ana!yser !es !o's 04Apache avec awstats....................................................................................................52 11.3.1Pr.sentat"on.........................................................................................................................................52 11.3.2/nsta!!at"on et con%"'urat"on.................................................................................................................52 11.3.3>t"!"sat"on............................................................................................................................................52 11.4Ana!yse= !es !o's 04un s"te h.ber'. non !oca!e+ent...................................................................................55 12/nsta!!er un +oteur 0e recherche avec Ht;660"'...................................................................................................53 12.1Pr.sentat"on.................................................................................................................................................53 12.2/nsta!!at"on avec tarba!!...............................................................................................................................53 12.31on%"'urat"on..............................................................................................................................................53 12.4>t"!"sat"on....................................................................................................................................................21

Apache+PHP+MySQL

http;66www.%un"&.or'

1 Historique
226,2613 )3.4 passa'e ? Apache 2.4.3* php 5.4.11* phpMyA0+"n 3.5.2 et MySQL 5.5.29 et ra@out 04un para'raphe sur !a perte 0u +ot 0e passe a0+"n"strateur 0e +ys-!0 ,361,61, )3.1 passa'e ? Apache 2.2.15* php 5.3.3* MySQL 5.1.5,* ra@out 04un para'raphe sur !a +"se en p!ace 04un serveur web 0ans un env"ronne+ent chroot. passa'e ? MySQL 5.1.5,* Apache 2.2.15* PHP 5.3.3* phpMyA0+"n 3.3.2 et weba!"=er 2.21A,2 256126,9 5.95 36116,3 )2.9 ,36,36,2 2.1,.,.2 )3., passa'e ? Apache 2.2.14* php 5.3.1* MySQL 5.1.41* phpMyA0+"n 3.2.4 et awstats

Passa'e ? Apache 2.2.9* php 5.2.5* MySQL 5.,.52 et phpMyA0+"n 2.11.3.1 )2.3 Passa'e ? php 5.2.1* Apache 2.2.4* MySQL 5.,.33* awstats 5.5 et phpMyA0+"n

,26116,5 )2.2 passa'e ? apache 1.3.32* php 5.1.5* MySQL 5.,.22 et phpMyA0+"n 2.9.,.2 et apache 2.2.3 a0aptat"on pour "nsta!!at"on sur #B(ubuntu 5.1, ,56,36,5 )2.5 passa'e ? PHP 5.,.4* MySQL 5.,.22* phpMyA0+"n 2.5.3Ap!1* awstat 5.4 et apache 2.,.54 ra@out 04un +ot pour !e !ance+ent auto+at"-ue 04Apache 2* correct"on co+p"!at"on weba!"=er 236,16,5 )2.5 ana!yser !es !o's 04Apache* +o0"%"cat"on 0e !a con%"'urat"on 0e weba!"=er et awstats pour ne pas pren0re en co+pte ses propres accCs* ra@out 04un co++enta"re sur un +essa'e 0e weba!"=er* ra@out 04un para'raphe pour vo"r !es stats 04un s"te h.ber'. non !oca!e+ent avec weba!"=er et awstats ,26,16,5 )2.4 passa'e ? apache 1.33* PHP 5.,.3* MySQL 4.1.3a* phpMyA0+"n 2.5.,Ap!3* awstats 5.2* 'rosse +o0"%"cat"on au n"veau 0e !a con%"'urat"on et 0e !a +.tho0e 04ut"!"sat"on et +o0"%"cat"on 0e !a con%"'urat"on 0e weba!"=er pour -u4on pu"sse vo"r !es no+s 0es +ach"nes p!ut7t -ue !eur a0resse /P ,261,6,4 316,56,4 )2.3 )2.2 passa'e ? apache 2.,.52* PHP 5.,.2* phpMyA0+"n 2.5., p!1 et MySQL 4.,.21 passa'e ? apache 1.3.31 et MySQL 4.,.2, un +ot sur !a var"ab!e re'"sterD'!oba!s* passa'e ? http 2.,.49* php 4.3.5 et

136,46,4 )2.1 phpMyA0+"n 2.5.5.

2,6,26,4 )2., Passa'e ? Apache 1.3.29* Apache 2.,.43* MySQL 4.,.13* PHP 4.3.4* phpMyA0+"n 2.5.5Ap!1* ra@out 04un para'raphe sur !a s.cur"sat"on 04Apache et PHP* un +ot sur !4ut"!"sat"on s"+u!tan.e 04Apache 1.3 et 2. ,56,46,3 ,16,36,3 5.4 246126,2 awstats 5.2 )1.9 )1.3 )1.2 Passa'e ? MySQL 4.,.12 Passa'e ? Apache 2.,.44* MySQL 3.23.55* PHP 4.3.1* phpMyA0+"n 2.4., et awstats Pet"tes +o0"%s 0ans !e %"ch"er 0e con% 04Apache su"te passa'e M0B 9.,* passa'e ?

1361,6,2 )1.5 Passa'e ? Apache 1.3.22* Apache 2.,.43* PHP 4.2.3* MySQL 3.23.52* phpMyA0+"n 2.3.2* awstats 5., et Ht:"' 3.1.5 ,26,26,2 )1.5 Passa'e ? Apache 1.3.25* PHP 4.2.1* MySQL 3.23.51* phpMyA0+"n 2.2.5* Eeba!"=er 2.,1A1,* awstats 4.1* ra@out 0<un para'raphe sur !<"nsta!!at"on 0<un +oteur 0e recherche avec Ht;660"' et sur !<"nsta!!at"on 0<Apache 2.,.35 226,56,1 )1.4 Passa'e ? Apache 1.3.2,* PHP 4.,.5 et MySQL 3.23.33

Apache+PHP+MySQL

http;66www.%un"&.or'

,46,36,1 awstat 2.23 ,36126,, #v2.,1.,5( 2261,6,, 256,26,,

)1.3 )1.2 )1.1 )1.,

Passa'e ? PHP4.,.4p!1* Apache 1.3.19* MySQL 3.23.33* 8: 1.3.4 et Fa@out 0u para'raphe PHP et L:AP* +"se ? @our 0e weba!"=er Passa'e ? Apache 1.3.14* PHP 4.,.3p!1 et phpMyA0+"n 2.1., 1r.at"on 0u 0ocu+ent

2 Prambule
1e 0ocu+ent pr.sente !<"nsta!!at"on* !a con%"'urat"on et !<ut"!"sat"on 0<Apache 2* MySQL et PHP sous L"nu&. La 0ern"Cre vers"on 0e ce 0ocu+ent est t.!.char'eab!e ? !<>FL http;66www.%un"&.or'. 1e 0ocu+ent est sous !"cence 1reat"ve 1o++ons Attr"but"onAShareA!"Be 3., >nporte0* !e 0.ta"! 0e !a !"cence se trouve sur !e s"te http;66creat"veco++ons.or'6!"censes6byAsa63.,6!e'a!co0e. Pour r.su+er* vous Gtes !"bres 0e repro0u"re* 0"str"buer et co++un"-uer cette cr.at"on au pub!"c 0e +o0"%"er cette cr.at"on su"vant !es con0"t"ons su"vantes; Paternit H )ous 0eve= c"ter !e no+ 0e !4auteur or"'"na! 0e !a +an"Cre "n0"-u.e par !4auteur 0e !<Iuvre ou !e t"tu!a"re 0es 0ro"ts -u" vous con%Cre cette autor"sat"on #+a"s pas 04une +an"Cre -u" su''.rera"t -u4"!s vous sout"ennent ou approuvent votre ut"!"sat"on 0e !4oeuvre(. Partage des Conditions Initiales l'Identique H S" vous trans%or+e= ou +o0"%"e= cette Iuvre pour en cr.er une nouve!!e* vous 0eve= !a 0"str"buer se!on !es ter+es 0u +G+e contrat ou avec une !"cence s"+"!a"re ou co+pat"b!e. Par a"!!eurs ce 0ocu+ent ne peut pas Gtre ut"!"s. 0ans un but co++erc"a! sans !e consente+ent 0e son auteur. 1e 0ocu+ent vous est %ourn" J0ans !4.tatJ sans aucune 'arant"e 0e toute sorte* !4auteur ne saura"t Gtre tenu responsab!e 0es -ue!con-ues +"sCres -u" pourra"ent vous arr"ver !ors 0es +an"pu!at"ons 0.cr"tes 0ans ce 0ocu+ent.

3 Prsentation
1ette pa'e pr.sente !4"nsta!!at"on et !a con%"'urat"on 04 Apache 2. .3 avec 'est"on 0e PHP !. .11 et "#$%& !.!.2'* e!!e est bas.e sur !a co+p"!at"on co+p!Cte 0e ces app!"cat"ons par cons.-uent e!!e 0evra"t conven"r pour toutes !es 0"str"but"ons 0e !"nu&. )ous 0eve= r.cup.rer pr.a!ab!e+ent !es sources 04 Apache ? !4>FL www.apache.or' * on r.cupCre ensu"te PHP ? !4>FL www.php.net* et en%"n "#$%& * ? !4>FL www.+ys-!.co+. Pour !4ana!yser 0es !o's 04Apache* reporte= vous au para'raphe correspon0ant. Pour +ettre en p!ace un +oteur 0e recherche* reporte= vous au para'raphe correspon0ant. Pour +ettre en p!ace un serveur web s.cur"s. 0ans un env"ronne+ent chroot.* reporte= vous au para'raphe correspon0ant.

Installation
.1 Installation de "#$%&
.1.1 Compilation et installation
:ans !e r.perto"re 0e trava"!* on 0.co+presse !4arch"ve; tar ()*+ m#sql,!.!.2'.tar.g+ 1e!a cr.e !e r.perto"re m#sql,!.!.2'* sur +a Man0r"va @4a" 0u "nsta!!er !e pacBa'e libncurses,de)el

Apache+PHP+MySQL

http;66www.%un"&.or'

Sous ubuntu ce n4est pas n.cessa"re. :ans !e r.perto"re 0e "#$%&* on tape a!ors; cma-e . Pu"s ma-e La co+p"!at"on est re!at"ve+ent !on'ue +G+e sur une +ach"ne pu"ssante. n tape +a"ntenant en te+ps -ue root; ma-e install Les e&.cutab!es sont "nsta!!.s par 0.%aut sous .usr.local.bin et !e serveur m#sqld sous .usr.local.libe(ec. Les b"b!"othC-ues vont se trouver sous .usr.local.m#sql.lib* ra@oute= cette !"'ne 0ans !e %"ch"er .etc.ld.so.con* et tape= ldcon*ig S" c4est !a pre+"Cre %o"s -ue vous "nsta!!e= "#$%& vous 0eve= taper !a co++an0e su"vante* vous pouve= passer ? !4.tape su"vante s" vous up'ra0e= "#$%& ; sh ..m#sql,!.!.2'.scripts.m#sql/install/db ,,datadir0.usr.local.m#sql.data 14a" 0u cr.er !e !"en su"vant pr.a!ab!e+ent ln ,s ha/*ederated.so ha/*ederated(.so )o"!? !e r.su!tat obtenu Installing "#$%& s#stem tables... 23 4illing help tables... 23 5o start m#sqld at boot time #ou ha)e to cop# support,*iles.m#sql.ser)er to the right place *or #our s#stem P&6A$6 76"6"867 52 $65 A PA$$927: 427 5H6 "#$%& root ;$67 < 5o do so= start the ser)er= then issue the *ollo>ing commands? .usr.local.m#sql.bin.m#sqladmin ,u root pass>ord 'ne>,pass>ord' .usr.local.m#sql.bin.m#sqladmin ,u root ,h tahiti.-er)ao.*r pass>ord 'ne>,pass>ord' Alternati)el# #ou can run? .usr.local.m#sql.bin.m#sql/secure/installation >hich >ill also gi)e #ou the option o* remo)ing the test databases and anon#mous user created b# de*ault. 5his is strongl# recommended *or production ser)ers. $ee the manual *or more instructions. @ou can start the "#$%& daemon >ith? cd .usr.local.m#sql A .usr.local.m#sql.bin.m#sqld/sa*e B @ou can test the "#$%& daemon >ith m#sql,test,run.pl ,,user0m#sql ,,basedir0.usr.local.m#sql

Apache+PHP+MySQL

http;66www.%un"&.or'

cd .usr.local.m#sql.m#sql,test A perl m#sql,test,run.pl Please report an# problems >ith the .usr.local.m#sql.scripts.m#sqlbug script< Pour "n%o !es bases sont "nsta!!.es par 0.%aut sous .)ar.lib.m#sql. S" ce n4est pas 0.@? %a"t cr.er !e 'roupe m#sql groupadd m#sql Pu"s !4ut"!"sateur m#sql 0u 'roupe m#sql useradd m#sql ,c C"#$%& $er)erC ,d .de).null ,g m#sql ,s .sbin.nologin Les bases se trouvent par 0.%aut sous .)ar.lib.m#sql* m#sql 0o"t en Gtre propr".ta"re cho>n ,7 m#sql .)ar.lib.m#sql "0e+ pour !e 'roupe chgrp ,7 m#sql .)ar.lib.m#sql on va .'a!e+ent +ettre !es 0ro"ts ? 255 s"non seu! root aura accCs ? !a base MySQL. chmod D!! .)ar.lib.m#sql n "nsta!!e +a"ntenant !e %"ch"er 0e con%"'urat"on cp support,*iles.m#,medium.cn* .etc.m#.cn* 0ans !e %"ch"er .etc.m#.cn* au n"veau 0e Em#sqldF on ra@outera !es !"'nes su"vantes G set basedir to #our installation path basedir0.usr.local.m#sql G set datadir to the location o* #our data director# datadir0.usr.local.m#sql.data. on 0onne !es 0ro"ts -u" vont b"en cho>n root?s#s .etc.m#.cn* chmod H .etc.m#.cn* Pu"s on !ance !e serveur en tapant; .usr.local.m#sql.bin.m#sqld/sa*e B 1e -u" va 0onner co++e r.su!tat 1II'2! 1J?!D?!1 m#sqld/sa*e &ogging to '.usr.local.m#sql.)ar.po>er.-er)ao.*r.err'. 1II'2! 1J?!D?!1 m#sqld/sa*e $tarting m#sqld daemon >ith databases *rom .)ar.lib.m#sql Avec cette 0ern"Cre vers"on m#sql re%usa"t 0e se !ancer* 0ans !e %"ch"er 04erreur #sous .)ar.lib.m#sql par 0.%aut( @4ava"s I 1II2 12?1J?13 m#sqld started .usr.local.libe(ec.m#sqld? Can't read dir o* '.root.tmp.' K6rrcode? 13L .usr.local.libe(ec.m#sqld? Can't create.>rite to *ile '.root.tmp.ibq%da;A' K6rrcode? 13L

Apache+PHP+MySQL

http;66www.%un"&.or'

I 1II2 12?1J?13 Inno:8? 6rror? unable to create temporar# *ileA errno? 13 I 1II2 12?1J?13 Can't init databases I 1II2 12?1J?13 Aborting @4a" r.so!u ce!a en tapant avant 0e !ancer m#sqld/sa*e e(port 5"P:I70.tmp S" vous obtene= !4erreur su"vante 0ans !e %"ch"er .usr.local.m#sql.data.nom-de-machine.err 13I2I2 12?!1?21 m#sqld/sa*e $tarting m#sqld daemon >ith databases *rom .usr.local.m#sql.data .usr.local.m#sql.bin.m#sqld? 4ile '..m#sql,bin.inde(' not *ound K6rrcode? 13L 13I2I2 12?!1?21 E67727F Aborting c4est un prob!C+e 0e per+"ss"on -u4on peut r.sou0re en tapant cho>n ,7 m#sql .usr.local.m#sql

.1.2 &ancement automatique


/! %aut 04abor0 +o0"%"er !e %"ch"er .etc.m#.cn* -u" a .t. pr.a!ab!e+ent cr.. au n"veau 0e Em#sql.ser)erF on .cr"ra basedir0.usr.local au !"eu 0e .)ar.lib au n"veau 0e EmanagerF on .cr"t de*ault,m#sqld,path0.usr.local.sbin.m#sqld pu"s au n"veau 0e Em#sqld/sa*eF on ra@oute soc-et0.)ar.lib.m#sql.m#sql.socA noter -ue vous pouve= pr.c"ser !4a0resse /P 0e votre serveur. Kn a0+ettant -ue votre poste so"t connect. sur "nternet et -ue vous vou!"e= pas -ue n4"+porte -u" pu"sse acc.0er ? votre serveur "nternet* vous pouve= pr.c"ser !4a0resse /P !oca!e 0e votre serveur pour -ue seu!s !es postes 0e votre r.seau pu"sse y acc.0er* pour ce!a ? !a %"n 0u %"ch"er +y.cn% "! su%%"t 0e 0.co++enter !a !"'ne b"n0Aa00ress et 0e ra@outer !4a0resse /P 0e votre serveur. 9ou@ours 0ans !e +G+e %"ch"er s" vous ave= !4erreur +ent"onn. p!us haut !". au r.perto"re te+pora"re vous pouve= 0.co++enter !a !"'ne su"vante tmpdir0.tmp Ma"ntenant sous Man0r"va on cop"e !e %"ch"er support/*iles.m#sql.ser)er.sh sous .etc.rc.d.init.d et on !e reno++era m#sql cp ..m#sql,!.1.!I.support,*iles.m#sql.ser)er.sh .etc.rc.d.init.d.m#sql n 0onne !es 0ro"ts 04e&.cut"on ? ce %"ch"er chmod D!! .etc.rc.d.init.d.m#sql Pour un !ance+ent auto+at"-ue 0e "#$%& ? !4.tat 0e +arche 3* 4 et 5* on tapera ensu"te ch-con*ig ,,le)el 3 ! m#sql on

Apache+PHP+MySQL

http;66www.%un"&.or'

Kt un arrGt ? !4.tat 0e +arche ,* 1* 2 et 5 ch-con*ig ,,le)el I12H m#sql o** Sous ubuntu n cop"e !e %"ch"er sous .etc.init.d et on !e no++e m#sql* on 0o"t 0ans ce %"ch"er %a"re une 0ern"Cre +o0"% ? !a p!ace 0e source on +et un . #un po"nt(. n 0onne !es 0ro"ts 04e&.cut"on ? ce %"ch"er chmod D!! .etc.init.d.m#sql Pour un !ance+ent auto+at"-ue on tape update,rc.d m#sql de*aults

.1.3 "ise en place des utilisateurs


La pre+"Cre chose ? %a"re est 0e +ettre un +ot 0e passe pour root pour !4accCs ? !4a0+"n"strat"on 0es bases 0e 0onn.es. La co++an0e ? taper en tant -ue root est; .usr.local.m#sql.bin.m#sql/secure/installation vo"!? !e r.su!tat M256? 7;MMIMN A&& PA75$ 24 5HI$ $C7IP5 I$ 76C2""6M:6: 427 A&& "#$%& $67O67$ IM P72:;C5I2M ;$6< P&6A$6 76A: 6ACH $56P CA764;&&@< In order to log into "#$%& to secure it= >e'll need the current pass>ord *or the root user. I* #ou')e 1ust installed "#$%&= and #ou ha)en't set the root pass>ord #et= the pass>ord >ill be blan-= so #ou should 1ust press enter here. 6nter current pass>ord *or root Kenter *or noneL? 23= success*ull# used pass>ord= mo)ing on... $etting the root pass>ord ensures that nobod# can log into the "#$%& root user >ithout the proper authorisation. @ou alread# ha)e a root pass>ord set= so #ou can sa*el# ans>er 'n'. Change the root pass>ordP E@.nF n ... s-ipping. 8# de*ault= a "#$%& installation has an anon#mous user= allo>ing an#one to log into "#$%& >ithout ha)ing to ha)e a user account created *or them. 5his is intended onl# *or testing= and to ma-e the installation go a bit smoother. @ou should remo)e them be*ore mo)ing into a production en)ironment. 7emo)e anon#mous usersP E@.nF @ ... $uccess< Mormall#= root should onl# be allo>ed to connect *rom 'localhost'. 5his ensures that someone cannot guess at the root pass>ord *rom the net>or-. :isallo> root login remotel#P E@.nF @ ... $uccess< 8# de*ault= "#$%& comes >ith a database named 'test' that an#one can

Apache+PHP+MySQL

http;66www.%un"&.or'

access. 5his is also intended onl# *or testing= and should be remo)ed be*ore mo)ing into a production en)ironment. 7emo)e test database and access to itP E@.nF @ , :ropping test database... ... $uccess< , 7emo)ing pri)ileges on test database... ... $uccess< 7eloading the pri)ilege tables >ill ensure that all changes made so *ar >ill ta-e e**ect immediatel#. 7eload pri)ilege tables no>P E@.nF @ ... $uccess< Cleaning up...

All done< I* #ou')e completed all o* the abo)e steps= #our "#$%& installation should no> be secure. 5han-s *or using "#$%&< Le +ot 0e passe peut Gtre 0"%%.rent 0e ce!u" 0u !o'"n. Ma"ntenant on va cr.er un co+pte ut"!"sateur # oli)ier 0ans +on e&e+p!e(* pour ce!a on 0o"t se connecter en tant -u4a0+"n"strateur 0e !a base ? !a base 0e 0onn.e m#sql contenant !es "n%os sur !es ut"!"sateurs et !eurs 0ro"ts. .usr.local.m#sql.bin.m#sql ,u root ,p m#sql 6nter pass>ord? 9elcome to the "#$%& monitor. Commands end >ith A or Qg. @our "#$%& connection id is 1 $er)er )ersion? !.!.2' $ource distribution Cop#right KcL 2III= 2I12= 2racle and.or its a**iliates. All rights reser)ed. 2racle is a registered trademar- o* 2racle Corporation and.or its a**iliates. 2ther names ma# be trademar-s o* their respecti)e o>ners. 5#pe 'helpA' or 'Qh' *or help. 5#pe 'Qc' to clear the current input statement. m#sqlR A pr.sent on va entrer !4ut"!"sateur oli)ier -u" sera un super ut"!"sateur avec !es +G+es 0ro"ts -ue root; m#sqlR N7AM5 A&& P7IOI&6N6$ 2M S.S 52 'oli)ier'T'localhost' R I:6M5I4I6: 8@ 'mot,de,passe' 9I5H N7AM5 2P5I2MA pour cr.er un ut"!"sateur toto -u" n4aura accCs -u4? !a base test avec certa"nes %onct"ons c"t.es c"A0essous ? part"r 0e !a +ach"ne aster"&.%r on tapera m#sqlR N7AM5 $6&6C5=IM$675=;P:A56=:6&656=C76A56=:72P 2M test.S 52 totoTasteri(.*r I:6M5I4I6: b# 'mot,de,passe'A

Apache+PHP+MySQL

http;66www.%un"&.or'

s" vous tape= m#sqlR $6&6C5 S 472" userA vous voye= chacun 0es 0ro"ts attr"bu.s ? vos ut"!"sateurs* vous ave= !a poss"b"!"t. .'a!e+ent 0e pr.c"ser !es 0ro"ts en %onct"on 0e ces co!onnes avec cette co++an0e m#sqlR IM$675 IM52 user ,R OA&;6$K'localhost'='oli)ier'=PA$$927:K'mot,de,passe'L= ,R '@'='@'='@'='@'='@'='@'=' #...( @'='@'='@'='@'='@'='@'='@'= @'='@'='@'='@'='@'=' '=' '=' '=' '='I'='I'='I'='I'LA %uer# 23= 1 ro> a**ected KI.II secL Le no+bre 0e cha+p var"e en %onct"on 0e !a vers"on 0e m#sql. M256 /! n4est pas ob!"'ato"re 0e rentrer !e !o'"n pour !e no+ 04ut"!"sateur et !e +ot 0e passe 0e !o'"n. Ma"ntenant pour pren0re tout La en co+pte m#sqlR 4&;$H P7IOI&6N6$A %uer# 23= I ro>s a**ected KI.IJ secL Pour -u"tter m#sqlRquit

.1.

Cration de tables

Ma"ntenant notre ut"!"sateur o!"v"er va cr.er une tab!e -u" nous serv"ra p!us tar0 pour nos e&p.r"+entat"ons avec Apache. /! 0o"t 04abor0 se connecter; .usr.local.m#sql.bin.m#sql ,u oli)ier ,p 6nter pass>ord? 9elcome to the "#$%& monitor. Commands end >ith A or Qg. @our "#$%& connection id is 2 $er)er )ersion? !.!.2' $ource distribution Cop#right KcL 2III= 2I12= 2racle and.or its a**iliates. All rights reser)ed. 2racle is a registered trademar- o* 2racle Corporation and.or its a**iliates. 2ther names ma# be trademar-s o* their respecti)e o>ners. 5#pe 'helpA' or 'Qh' *or help. 5#pe 'Qc' to clear the current input statement. m#sqlR Pour vo"r !a !"ste 0es bases 0e 0onn.es 0"spon"b!es* on tapera; m#sqlR $H29 :A5A8A$6$A U,,,,,,,,,,,,,,,,,,,,U V :atabase V U,,,,,,,,,,,,,,,,,,,,U V in*ormation/schema V V m#sql V V per*ormance/schema V V test V

Apache+PHP+MySQL

1,

http;66www.%un"&.or'

U,,,,,,,,,,,,,,,,,,,,U ro>s in set KI=II secL n va +a"ntenant cr.er une base 0e 0onn.es essai; m#sqlR C76A56 :A5A8A$6 essaiA %uer# 23= 1 ro> a**ected KI.II secL n va ut"!"ser +a"ntenant cette base 0e 0onn.e m#sqlR ;$6 essai :atabase changed 1o++e !a base v"ent 04Gtre cr.e* e!!e ne cont"ent aucune tab!e* pour s4en conva"ncre "! su%%"t 0e taper; m#sqlR $H29 5A8&6$A 6mpt# set KI.II secL Pour notre pre+"Cre e&e+p!e ApacheUPHPU"#$%&* on va cr.er !a tab!e su"vante; m#sqlR C76A56 5A8&6 coord K ,R nom OA7CHA7K2IL= ,R prenom OA7CHA7K2IL= ,R email OA7CHA7K3IL ,R LA %uer# 23= I ro>s a**ected KI.I3 secL Metons un coup 04oe"! +a"ntenant sur !es tab!es 0"spon"b!es; m#sqlR $H29 5A8&6$A U,,,,,,,,,,,,,,,,,,,,,U V 5ables in essai V U,,,,,,,,,,,,,,,,,,,,,U V coord V U,,,,,,,,,,,,,,,,,,,,,U 1 ro> in set KI.II secL La tab!e nouve!!e+ent cr..e apparaNt b"en. Pour avo"r !e 0.ta"! 0e cette tab!e* on tapera;

m#sqlR :6$C7I86 coordA U,,,,,,,,,,,U,,,,,,,,,,,,,,U,,,,,,,,U,,,,,,U,,,,,,,,,,,U,,,,,,U V 4ield V 5#pe V Mull V 3e# V :e*ault V6(tra V U,,,,,,,,,,,U,,,,,,,,,,,,,,U,,,,,,,,U,,,,,,U,,,,,,,,,,,U,,,,,,U V nom V )archarK2IL V @6$ V V M;&& V V V prenom V )archarK2IL V @6$ V V M;&& V V V email V )archarK3IL V @6$ V V M;&& V V U,,,,,,,,,,,U,,,,,,,,,,,,,,U,,,,,,,,U,,,,,,U,,,,,,,,,,,U,,,,,,U 3 ro>s in set KI.II secL Pour notre 0eu&"C+e e&e+p!e ApacheUPHPU"#$%&* on cr.era !a tab!e su"vante; m#sqlR C76A56 5A8&6 re* K ,R date OA7CHA7K2IL= ,R host OA7CHA7K2IL= ,R ip OA7CHA7K1!L= ,R os OA7CHA7K2IL=

Apache+PHP+MySQL

11

http;66www.%un"&.or'

,R page OA7CHA7K3IL ,R LA %uer# 23= I ro>s a**ected KI.I! secL K!!e cont"en0ra !es "n%or+at"ons sur !es v"s"teurs 0u s"te. A pr.sent pour -u"tter tape= s"+p!e+ent quit

.1.! Perte du mot de passe d'administrateur m#sqld


S" vous ave= per0u !e +ot 0e passe root pour !e r."n"t"a!"ser "! %aut stopper !e serveur .etc.init.d.m#sqld stop n re0.+arre !e 0ae+on en 0.sact"vant !4"0ent"%"cat"on et !4.coute 0u r.seau #a%"n 04.v"ter 04Gtre p"rat. ? ce +o+ent oO "#$%& est vu!n.rab!e( ; .usr.local.m#sql.bin.m#sqld ,,user0m#sql ,,s-ip,grant,tables ,,s-ip,net>or-ing B Ma"ntenant on +o0"%"e !e +ot 0e passe en se connectant ? !a base m#sql .usr.local.m#sql.bin.m#sql m#sql ,u root 9elcome to the "#$%& monitor. Commands end >ith A or Qg. @our "#$%& connection id is 1 $er)er )ersion? !.!.2',log $ource distribution Cop#right KcL 2III= 2I12= 2racle and.or its a**iliates. All rights reser)ed. 2racle is a registered trademar- o* 2racle Corporation and.or its a**iliates. 2ther names ma# be trademar-s o* their respecti)e o>ners. 5#pe 'helpA' or 'Qh' *or help. 5#pe 'Qc' to clear the current input statement. m#sqlR;P:A56 user $65 pass>ord0PA$$927:K'nou)eau,mot,de,passe'L 9H676 user0CrootCA %uer# 23= ro>s a**ected KI=IH secL 7o>s matched? Changed? 9arnings? I n pren0 en co+pte !es chan'e+ent en tapant !a co++an0e su"vante ; m#sqlR 4&;$H P7IOI&6N6$A %uer# 23= I ro>s a**ected KI=I secL on re!ance ensu"te !e 0ae+on m#sqld .etc.init.d.m#sqld restart

.2 Installation d'Apache
Pour Apache* on 0.sarch"ve en tapant; tar ()*+ httpd,2. .3.tar.g+ 1e!a va cr.er !e r.perto"re httpd,2. .3. Avant 04a!!er p!us !o"n* s" Apache est 0.@? "nsta!!. sur votre systC+e on va !e suppr"+er* on va 04abor0 suppr"+er !es +o0u!es PHP* pour v.r"%"er ; rpm ,qa V grep ,i php S" vous obtene= par e&e+p!e

Apache+PHP+MySQL

12

http;66www.%un"&.or'

php,gd,)ersion php,ldap,)ersion mod/php,)ersion php,common,)ersion php,)ersion n suppr"+e en tapant rpm ,e nom,du,pac-age Ma"ntenant on va suppr"+er Apache* pour v.r"%"er s4"! est pr.sent ; rpm ,qa V grep ,i apache S" on obt"ent par e&e+p!e apache,)ersion apache,con*,)ersion apache,modules,)ersion apache,common,)ersion Suppr"+e= !es. /! est poss"b!e -ue pour 0es ra"sons 0e 0.pen0ances -ue vous aye= un re%us 0e 0.s"nsta!!at"on* ce n4est pas 'rave* !4"+portant est -ue !e pacBa'e apache,)ersion so"t au +o"ns suppr"+. pour -u4"! n4y a"t pas 0e con%!"t. Suppr"+e= .ventue!!e+ent !es r.perto"res su"vants .)ar.>>>* .)ar.log.httpd et .etc.httpd. /! %au0ra pr.a!ab!e+ent "nsta!!er !es out"!s apr et apr,util -u4on t.!.char'era sur !e s"te apr.apache.or'. n 0.co+presse !a pre+"Cre arch"ve en tapant tar ()*+ apr,1. .H.tar.g+ ce!a 0onne !e r.perto"re apr,1. .H 0ans !e-ue! on tape success"ve+ent ..con*igure ma-e pu"s en tant -ue root ma-e install on .0"te +a"ntenant !e %"ch"er .etc.ld.so.con* et on ra@oute !a !"'ne su"vante .usr.local.apr.lib on 0.co+presse !a 0eu&"C+e arch"ve en tapant tar ()*+ apr,util,1.!.1.tar.g+ ce!a 0onne !e r.perto"re apr,util,1.!.1 on y tape success"ve+ent ..con*igure ,,>ith,apr0/chemin-absolu/apr,1. .H ma-e pu"s en tant -ue root ma-e install ldcon*ig

Apache+PHP+MySQL

13

http;66www.%un"&.or'

:ans !e r.perto"re 04Apache httpd,2. .3* on tape a!ors; ..con*igure ,,pre*i(0.usr.local.apache2 ,,enable,modules0most Par pre*i( on "n0"-ue -ue !es r.perto"res 04Apache contenant entre autre !e %"ch"er 0e con% se trouveront sous .usr.local.apache2 c4est ut"!e 0ans !e cas oO vous vou!e= %a"re coe&"ster 0eu& vers"ons 04 Apache sur votre systC+e. n tape +a"ntenant; ma-e Kt en%"n en tant -ue root; ma-e install Fa@oute= !a !"'ne .usr.local.apache2.lib 0ans !e %"ch"er .etc.ld.so.con* pu"s tape= ldcon*ig Pour !ancer +a"ntenant Apache* "! %aut taper; .usr.local.apache2.bin.apachectl start Ma"ntenant votre nav"'ateur pr.%.r. 0ans !e cha+p >FL taper http?..localhost ou http?..nomdelamachine et !? !a pa'e 04accue"! 04Apache apparaNt #ou 0u +o"ns un /t EorBs PP(* pour "n%o ce!!eAc" se trouve sous .usr.local.apache2.htdocs. M256 S" vous up'ra0e= 04une anc"enne vers"on* vos %"ch"ers 0e con% ne seront pas .cras.s.

.3 Installation de PHP
Pour php!* on tapera 04abor0 tar ()*1 php,!. .11.tar.b+2 1e!a va cr.er un r.perto"re php,!. .11. A pr.sent 0ans !e r.perto"re 0e php* vous tapere= ..con*igure ,,>ith,ap(s20.usr.local.apache2.bin.ap(s ,,>ith,con*ig,*ile,path0.usr.local.apache2.con* ,,>ith,m#sql ,,enable,bcmath0#es ,,enable,debug0no ,,>ith,gd ,,>ith,+lib ,,>ith,-erberos ,,enable, mbstring ,,>ith,mcr#pt ,,enable,*tp Motes A )ous ave= beso"n 0u pacBa'e *le( contenant le( A !es opt"ons ,,>ith,gd ,,>ith,+lib ,,>ith,-erberos sont ut"!es pour !4ut"!"sat"on 0es +o0s %reep!ayer 0e !a %reebo& A !es opt"ons ,,enable,mbstring ,,>ith,mcr#pt sont n.cessa"res pour php"#Admin e!!es re-u"Crent !4"nsta!!at"on 0u pacBa'e libH mcr#pt,de) avec ses 0.pen0ances #ou libmcr#pt,de)el su"vant !a 0"str"but"on( 9ape= +a"ntenant ma-e Pu"s en tant -ue root ma-e install

Apache+PHP+MySQL

14

http;66www.%un"&.or'

1ette 0ern"Cre co++an0e va "nsta!!er !e +o0u!e PHP sous .usr.local.apache2.modules et +o0"%"er !e %"ch"er httpd.con* en ra@outant &oad"odule php!/module modules.libphp!.so

n +o0"%"era +a"ntenant +anue!!e+ent !e %"ch"er httpd.con* pour -u4Apache prenne en co+pte PHP* ? !a su"te 0es !"'nes Add5#pe application.(,compress .W Add5#pe application.(,g+ip .g+ .tg+ n ra@oute Add5#pe application.(,httpd,php .php .php3 .php .php! .phtml Add5#pe application.(,httpd,php,source .phps Par a"!!eurs ? !a !"'ne :irector#Inde( inde(.html n ra@outera :irector#Inde( inde(.html inde(.htm inde(.php inde(.php3 inde(.php inde(.php! A pr.sent on va cop"er !e %"ch"er php.ini,production se trouvant 0ans !e r.perto"re 0e PHP php,!. .11 pour !e +ettre sous .usr.local.apache2.con* et en !e reno++ant php.ini cp ..php,!. .11.php.ini,production .usr.local.apache2.con*.php.ini :ans !e cas 04une anc"enne "nsta!!at"on 0e php* vous ave= tout "nt.rGt ? repart"r 0u nouveau %"ch"er php,dist.ini %ourn" et 0e !e re+o0"%"er. :ans !e r.perto"re .usr.local.apache.htdocs on trouve !es %"ch"ers -u" seront access"b!es ? part"r 0e !a pa'e 04accue"! 0e votre serveur Apache. n re!ance Apache .usr.local.apache2.bin.apachectl restart 1r.er +a"ntenant !e %"ch"er in*ophp.php contenant XPphp phpin*oKLA PR Que vous p!acere= sous .usr.local.apache2.htdocs* 0ans !4>FL 0e votre nav"'ateur pr.%.r.* taper http?..localhost.in*ophp.php ou http?..nommachine.in*ophp.php et !? +a'"-ue 0evra"t s4a%%"cher 0es "n%o sur !a con%"'urat"on 0e PHP sur votre systC+e.

Apache+PHP+MySQL

15

http;66www.%un"&.or'

A99KQ9/ Q pour un %onct"onne+ent opt"+a! 0e m#sql avec php* "! %au0ra ra@outer pr.c"ser !a pos"t"on 0u %"ch"er socBet 0e m#sql 0ans !e %"ch"er php.ini m#sql.de*ault/soc-et 0 .)ar.lib.m#sql.m#sql.socs"non avec php"#Admin vous pourr"e= avo"r une erreur 0u sty!e G2II2 , &e ser)eur ne rpond pas. Kou l'inter*ace de conne(ion KCsoc-etCL )ers le ser)eur "#$%& local n'est pas correctement con*igureL

! Con*iguration basique
!.1 Prsentation de l'arborescence d'Apache
L4"nsta!!at"on va cr.er un r.perto"re .usr.local.apache2 contenant; A r.perto"re bin cont"ent !es e&.cutab!es 04Apache A r.perto"re cgi,bin cont"ent !es scr"pts 18/ A r.perto"re error cont"ent !es +essa'es 04erreur 0ans 0e +u!t"p!es !an'ues* !a !an'ue est cho"s"e en %onct"on 0e !a con%"'urat"on 0u nav"'ateur. Les +essa'es sont ent"Cre+ent con%"'urab!es. A r.perto"re lib cont"ent 0es b"b!"othC-ues A r.perto"re build A r.perto"re con* cont"ent !es %"ch"ers 0e con%"'urat"on 04Apache , r.perto"re htdocs cont"ent !a pa'e 04accue"! 04Apache , r.perto"re icons cont"ent 0es "c7nes -u" servent nota++ent pour "0ent"%"er !es types 0e %"ch"er.

Apache+PHP+MySQL

15

http;66www.%un"&.or'

, r.perto"re include cont"ent !es "nc!u0es 04Apache , r.perto"re modules cont"ent !es +o0u!es 04Apache , r.perto"re logs cont"ent !es %"ch"ers 0e !o' 04Apache , r.perto"re man cont"ent !es +ans 04Apache Le r.perto"re 0e !o' cont"ent essent"e!!e+ent 0eu& %"ch"ers; A access/log !"stant !es accCs au serveur A error/log !"stant !es erreurs en tout 'enre Le r.perto"re 0e +o0u!es modules cont"ent !es +o0u!es ut"!"sab!es par Apache* pour "n%o un +o0u!e est une e&tens"on !o'"c"e!!e ? Apache* !u" per+ettant par e&e+p!e 04"nterpr.ter !e PHP #+o0u!e libphp!.so(. 1e ne sont -ue !es +o0u!es char'.s 0yna+"-ue+ent -u" sont 0ans ce r.perto"re. Le r.perto"re .usr.local.apache2.con* cont"ent; A !e %"ch"er 0e con%"'urat"on 04Apache http.con* A mime.t#pes %"&e !e type 0e %"ch"er su"vant !4e&tens"on 0u 0"t %"ch"er #. docR+swor0* .psRpostscr"pt* ...(* La per+et au c!"ent -u" se connecte sur !e serveur* 0e savo"r co++ent "nterpr.ter !e %"ch"er su"vant son e&tens"on. A magic sert pour !e +o0u!e mod/mime/magic )ous trouvere= .'a!e+ent un tas 04autres %"ch"ers 0e con%"' %ourn"s co++e e&e+p!e 0ans !e r.perto"re con*.e(tra

!.2 &e *ichier de con*iguration d'Apache


Le %"ch"er 0e con% 04 Apache se trouve sous .usr.local.apache2 et se no++e httpd.con** vo"c" !es po"nts -ue @e @u'e "+portant 0ans !e %"ch"er; #...( G 7pertoire racine d'Apache $er)er7oot C.usr.local.apacheC #...( G d*inition de l'adresse IP du port du ser)eur G &isten? Allo>s #ou to bind Apache to speci*ic IP addresses and.or G ports= in addition to the de*ault. $ee also the XOirtualHostR G directi)e. G G Change this to &isten on speci*ic IP addresses as sho>n belo> to G pre)ent Apache *rom glomming onto all bound IP addresses KI.I.I.IL G G&isten 12.3 .!H.DJ?JI G a)ec un deu(iYme ser)eur apache= )ous pou)e+ indiquer un port JIJI G dans l'url du na)igateur il *audra mettre http?..url?JIJI &isten JI #...( G 2n lance initialement httpd en tant que root= puis immdiatement G c'est l'utilisateur nobod# Kgroupe nobod#L qui en de)ient le proprio G ainsi s'il # a une *aille dans Apache= le hac-er au lieu de de)enir root G de)ient daemon a)ec les droits qui )ont a)ec G pour )ri*ier que daemon est bien le proprio G ps au( V grep httpd ;ser daemon Nroup dameon

Apache+PHP+MySQL

12

http;66www.%un"&.or'

G $er)erAdmin? @our address= >here problems >ith the ser)er should be G e,mailed. 5his address appears on some ser)er,generated pages= such G as error documents. G 6n cas de problYme un email sera en)o# au >ebmaster= mette+ donc G ici l'adresse email du >ebmaster $er)erAdmin oli)ierTasteri(.-er)ao.*r #...( G :ocument7oot? 5he director# out o* >hich #ou >ill ser)e #our G documents. 8# de*ault= all requests are ta-en *rom this director#= but G s#mbolic lin-s and aliases ma# be used to point to other locations. G C'est dans ce rpertoire qu'on )a trou)er la page d'accueil d'Apache :ocument7oot C.usr.local.apache.htdocsC #...( G :*inition des *ichiers d'entre :irector#Inde( inde(.html inde(.html.)ar inde(.htm inde(.php inde(.php inde(.php #...( G nom du *ichier d'erreur 6rror&og logs.error/log G ni)eau de log G &og&e)el? Control the number o* messages logged to the error/log. G Possible )alues include? debug= in*o= notice= >arn= error= crit= G alert= emerg. G &og&e)el >arn #...( G ordre de pr*rence des langues G &anguagePriorit# allo>s #ou to gi)e precedence to some languages G in case o* a tie during content negotiation. G G Zust list the languages in decreasing order o* pre*erence. 9e ha)e G more or less alphabeti+ed them here. @ou probabl# >ant to change this. G &anguagePriorit# *r en da nl et de el it 1a -r no pl pt pt,br lt+ ca es s) t>

!.3 &ancement automatique de l'application


!.3.1 $ous "andri)a."ageia
Pour un !ance+ent auto+at"-ue on pren0ra !e %"ch"er apachectl se trouvant sous .usr.local.apache2.bin et on !e p!acera sous .etc.rc.d.init.d* et on !e reno++era httpd2

cp .usr.local.apache2.bin.apachectl .etc.rc.d.init.d.httpd2 n ra@outera en 0.but 0e %"ch"er @uste aprCs G<.bin.sh G<.bin.sh

Apache+PHP+MySQL

13

http;66www.%un"&.or'

G $tartup script *or the Apache 9eb $er)er G G ch-con*ig? 3 ! J! 1! G description? Apache is a 9orld 9ide 9eb ser)er. It is used to ser)e Q G H5"& *iles and CNI. G processname? httpd Pour un !ance+ent auto+at"-ue ? !4.tat 0e +arche 3*4 et 5 on 0o"t nor+a!e+ent taper; ch-con*ig ,,le)el 3 ! httpd2 on Kt pour un arrGt ? !4.tat 0e +arche ,* 1* 2 et 5 ch-con*ig ,,le)el I12H httpd2 o** Pour !ancer !e serveur* "! su%%"ra +a"ntenant 0e taper; .etc.rc.d.init.d.httpd2 start

!.3.2 $ous ubuntu


)o"!? un scr"pt 0e !ance+ent* "! %aut !4appe!er httpd2 et !e p!acer sous .etc.init.d G<.bin.bash G G apache $tart the apache2 H55P ser)er. G G 5he )ariables belo> are M25 to be changed. 5he# are there to ma-e the G script more readable. MA"60apache :A6"2M0.usr.local.apache2.bin.httpd PI:4I&60.usr.local.apache2.logs.httpd.pid C2M40.usr.local.apache2.con*.httpd.con* APACH6C5&0.usr.local.apache2.bin.[\MA"6]ctl G note? $$: is required onl# at startup o* the daemon. $$:0^>hich start,stop,daemon^ 6MO0Cen) ,i &AMN0C PA5H0.bin?.usr.bin?.usr.local.binC trap CC 1 G Chec- that >e're not being started b# inetd i* egrep ,q ,i C_EE?space?FFS$er)er5#peEE?space?FFUinetC [C2M4 then e(it I *i test/con*igKL \ i* E < ,( [APACH6C5& FA then echo C[APACH6C5& is not e(ecutable= e(itingC e(it I *i G ensure >e don't lea- en)ironment )ars into apachectl APACH6C5&0C[6MO [APACH6C5&C i* < [APACH6C5& con*igtest 2R .de).null then print* CCon*iguration s#nta( error detected. Mot reloading.QnQnC [APACH6C5& con*igtest

Apache+PHP+MySQL

19

http;66www.%un"&.or'

*i ]

e(it 1

should/startKL \ i* E < ,( [:A6"2M FA then echo Capache is not e(ecutable= not startingC e(it I *i ] case C[1C in startL should/start test/con*ig echo ,n C$tarting >eb ser)er? [MA"6C [6MO [$$: ,,start ,,pid*ile [PI:4I&6 ,,e(ec [:A6"2M R .de).null AA stopL echo ,n C$topping >eb ser)er? [MA"6C start,stop,daemon ,,stop ,,pid*ile [PI:4I&6 ,,o-nodo rm ,r* .)ar.lib.apache.mod,band>idth.lin-.S AA reload V *orce,reloadL test/con*ig echo ,n C7eloading [MA"6 con*igurationC start,stop,daemon ,,stop ,,pid*ile [PI:4I&6 ,,signal ;$71 AA restartL test/con*ig echo ,n C7estarting [MA"6C i* < start,stop,daemon ,q ,,stop ,,pid*ile [PI:4I&6 ,,signal H;PA then [6MO [$$: ,,start ,,pid*ile [PI:4I&6 ,,e(ec [:A6"2M R .de).null *i AA SL echo C;sage? .etc.init.d.[MA"6 \startVstopVreloadV*orce,reloadVrestart]C e(it 1 AA esac i* E [P ,eq I FA then echo . e(it I else echo C *ailedC e(it 1 *i n 0onne !es 0ro"ts 04e&.cut"on chmod D!! .etc.init.d.httpd2 Pour !e !ancer auto+at"-ue au 0.+arra'e "! %au0ra taper update,rc.d httpd2 de*aults

Apache+PHP+MySQL

2,

http;66www.%un"&.or'

!. &es pages >ebs utilisateurs


:ans !e %"ch"er httpd.con* on 0o"t ra@outer ;ser:ir public/html X:irector# C.home.S.public/htmlCR 2ptions Inde(es 4ollo>$#m&in-s Includes 6(ecCNI Allo>2)erride All 7equire all granted X.:irector#R et re!ance= httpd* !es ut"!"sateurs -u" veu!ent avo"r une ho+epa'e perso 0evront p!acer !eurs %"ch"ers 0ans un r.perto"re public/html p!ac. 0ans !eur ho+e0"rectory. Les pa'es seront access"b!es ? part"r 0e !4>FL http;66serveurAapache6Sut"!"sateur Le prob!C+e avec !e r.perto"re public/html 0es ut"!"sateurs et -u4"! %aut +ettre 255 au n"veau 0e !a ho+e 0"rectory* ce -u" est part"cu!"Cre+ent '.nant au n"veau s.cur"t.. )ous pouve= sp.c"%"er -ue cha-ue ut"!"sateur 0o"t cr.er ses pa'es sous .home.http.login,utilisateur en .cr"vant pour !a var"ab!e ;ser:ir ;ser:ir .home.httpd A"ns" pour !4ut"!"sateur toto -uan0 vous tapere= co++e >FL http?..ser)eur,apache.`toto * apache "ra chercher !e %"ch"er inde(.htm sous .home.httpd.toto. n peut a!!er p!us !o"n en sp.c"%"ant un r.perto"re part"cu!"er* .home.httpd.toto.html par e&e+p!e* en .cr"vant; ;ser:ir .home.httpd.S.html

!.! &es alias


S" vous ne vou!e= pas +ettre en p!ace un serveur :QS* vous ave= un +oyen p!us s"+p!e* !es a!"as. 1oncrCte+ent* votre serveur s4appe!!e obeli( * vous vou!e= ren0re access"b!e !es %"ch"ers ht+! se trouvant sous .usr.doc.html * !es ut"!"sateurs 0evront taper 0ans !eur nav"'ateur pr.%.r.; http?..obeli(.doc. Pour ce!a 0ans votre %"ch"er .etc.httpd.con*.httpd.con** vous a!!e= ra@outer; Alias .icons. C.usr.local.apache.icons.C Alias .doc C.usr.doc.html.C on ra@oute ensu"te pour chacun 0es r.perto"res X:irector# C.usr.doc.htmlCR 2ptions Inde(es 4ollo>$#m&in-s Includes 6(ecCNI Allo>2)erride All 7equire all granted X.:irector#R M256 S" vous +ettre .doc. ? !a p!ace 0e .doc 0ans !4>FL "! %au0ra taper http?..obeli(.doc.* s" vous o+ette= !e 0ern"er .= vous aure= une erreur.

H Con*iguration a)ance
H.1 Protection d'une page
La protect"on 04une pa'e pour !4ut"!"sateur oli)ier se %a"t 0e +an"Cre trCs s"+p!e* tout 04abor0 0ans !e %"ch"er 0e con%"'urat"on 04apache on 0o"t avo"r !a !"'ne

G d*inition des *ichiers de protection des pages Access4ileMame .htaccess

Apache+PHP+MySQL

21

http;66www.%un"&.or'

"! %aut b"en .v"0e++ent re!ancer apache. 9ous !es %"ch"ers ? accCs !"+"t. 0o"vent Gtre concentr.s 0ans un +G+e r.perto"re .home.oli)ier.public/html.reser)e par e&e+p!e* "! su%%"t 0e cr.er 0ans ce!u"Ac" un %"ch"er -u4on 0evra no++er .htaccess contenant; Auth;ser4ile auth.oli)ier.users AuthNroup4ile auth.oli)ier.group AuthMame CAcces 7estreintC Auth5#pe 8asic require group autorise Le %"ch"er oli)ier.users va conten"r une !"ste 04ut"!"sateurs* "! va se trouver sous !e r.perto"re .usr.local.apache2.auth #.ventue!!e+ent ? cr.er(* pour "n%o vous pouve= chan'er !e che+"n .usr.local.apache2 en +o0"%"ant !a va!eur 0e !a var"ab!e $er)er7oot -u4on trouve 0ans !e %"ch"er httpd.con*. Le %"ch"er oli)ier.group correspon0 ? une !"ste 0es 'roupes 0e personnes* ces +G+es personnes ayant .t. 0.%"n" 0ans !e %"ch"er oli)ier.users. Le pr"nc"pe cons"ste ? cr.er un 'roupe 0e personnes autor"s.es et ? !eur attr"buer un +ot 0e passe ? chacune* seu! ce 'roupe pourra acc.0er ? !a sect"on r.serv.e. Pour cr.er ces %"ch"ers "! su%%"t* en tant -ue root* 04une part 0e cr.er !e r.perto"re .usr.local.apache2.auth* pu"s 0e taper; htpass>d ,c .usr.local.apache2.auth.oli)ier.users oli)ier Pour "n%o cet e&.cutab!e se trouve 0ans !e r.perto"re 04"nsta!!at"on 04apache pr.c"s.+ent sous httpd, 2. .3.support. L4opt"on ,c correspon0 ? !a cr.at"on 0u %"ch"er oli)ier.users. n va a!ors avo"r ? rentrer un +ot 0e passe pour !4ut"!"sateur oli)ier. Me> pass>ord? n con%"r+e 7e,t#pe ne> pass>ord? Adding pass>ord *or user oli)ier Pour cr.er un autre ut"!"sateur )eronique vous tapere= !a +G+e co++an0e sans !4opt"on 0e cr.at"on ; htpass>d .etc.httpd.auth.oli)ier.users )eronique 9ou@ours en tant -ue root* cr.er !e %"ch"er .usr.local.apache2.auth.oli)ier.group -u" cont"en0ra !a !"ste 0es personnes autor"s.es ? acc.0er au& pa'es r.serv.es ; autorise? oli)ier )eronique Ma"tenant -uan0 ? part"r 0e votre nav"'ateur pr.%.r. -uan0 vous a!!e= rentrer co++e >FL http?..obeli(.`oli)ier.reser)e* vous aure= une %enGtre popup -u" va s4ouvr"r vous 0e+an0ant 0e rentrer votre no+ 04ut"!"sateur et !e +ot 0e passe pr.a!ab!e+ent rentr.. Qote= -ue pour -ue -ue!-u4un ne pu"sse @etter un coup 04oe"! 0ans !es %"ch"ers .htaccess 0e vos ut"!"sateurs= !e %"ch"er httpd.con* 0o"t conten"r !a 0"rect"ve su"vante; X4iles ` C_Q.htCR 2rder allo>=den# :en# *rom all $atis*# All X.4ilesR

Apache+PHP+MySQL

22

http;66www.%un"&.or'

H.2 &es hates )irtuels


n peut +ettre en p!ace 0es h7tes v"rtue!s* en 04autres ter+es un ut"!"sateur pour un +G+e serveur Apache cro"ra en vo"r p!us"eurs. K&e+p!e* so"t votre serveur Apache obeli( #a0resse /P 1'2.1HJ.13.11(* votre 0o+a"ne brei+land.b+* on va cr.er !es h7tes v"rtue!s >>>.asteri(.brei+land.b+ et >>>.ide*i(.brei+land.b+ -u" vont po"nter chacun vers un en0ro"t 0"%%.rent 0u 0"s-ue #respect"ve+ent .usr.local.asteri( et .usr.local.ide*i( chacun contenant 0es pa'es ht+!(. n va ra@outer tout ? !a %"n 0u %"ch"er; XOirtualHost 1'2.1HJ.13.11R $er)erMame obeli(.brei+land.b+ :ocument7oot .usr.local.apache.htdocs 6rror&og logs.obeli(,error/log 5rans*er&og logs.obeli(,access/log X.OirtualHostR XOirtualHost 1'2.1HJ.13.11R $er)erMame >>>.asteri(.brei+land.b+ :ocument7oot .usr.local.asteri( 6rror&og logs.asteri(,error/log 5rans*er&og logs.asteri(,access/log X.OirtualHostR XOirtualHost 1'2.1HJ.13.11R $er)erMame >>>.ide*i(.brei+land.b+ :ocument7oot .usr.local.ide*i( 6rror&og logs.ide*i(,error/log 5rans*er&og logs.ide*i(,access/log X.OirtualHostR pour chacun 0es r.perto"res @e 0o"s cr.er ensu"te !es "nstruct"ons su"vantes X:irector# C.usr.local.asteri(CR 2ptions Inde(es 4ollo>$#m&in-s Includes 6(ecCNI Allo>2)erride All 7equire all granted X.:irector#R Fe!ance= Apache en tapant; .etc.rc.d.init.d.httpd restart Ma"ntenant nous a!!ons cr.er nos h7tes asteri( et ide*i(* pour ce!a vous ave= 0eu& +.tho0es; A ra@outer >>>.asteri(.brei+land.b+ et >>>.ide*i(.brei+land.b+ 0ans .etc.hosts sur !a +G+e !"'ne -ue votre serveur Apache #obeli( 0ans notre e&e+p!e(. 1'2.1HJ.13.11 obeli( obeli(.brei+land.b+ >>>.asteri(.brei+land.b+ >>>.ide*i(.brei+land.b+ Qor+a!e+ent s" vous %a"tes un p"n' sur >>>.ide*i(.brei+land.b+ La 0evra"t +archer* pour !es postes c!"ents "! %au0ra ra@outer !a +G+e !"'ne 0ans !e %"ch"er hosts #non n.cessa"re(. A s" vous 0"spose= 04un serveur :QS sur votre +ach"ne* au n"veau 0e votre con%"' :QS 0ans votre %"ch"er brei+land.b+ -u" se trouve sous .)ar.named vous 0eve= ra@outer tout ? !a %"n; >>>.asteri( A 1'2.1HJ.13.11 >>>.ide*i( A 1'2.1HJ.13.11

Apache+PHP+MySQL

23

http;66www.%un"&.or'

Fe!ance= !e :QS en tapant; .etc.rc.d.init.d.named restart Pour tester tape= 0ans un she!!; ping >>>.asteri(.brei+land.b+ Ma"ntenant 0ans !e cha+p >FL 0e votre nav"'ateur pr.%.r.; http?..>>>.asteri(.brei+land.b+ Kt !?* nor+a!e+ent vous 0evr"e= vo"r s4a%%"cher !a pa'e -ue vous ave= p!ac. sous .usr.local.asteri( :ans !4hypothCse oO vous ut"!"se= 0eu& serveurs Apache #vers"ons 1.3 et 2 par e&e+p!e(* vous pouve= sp.c"%"er !e port 3, pour Apache 1.3 et !e port 3,3, pour Apache 2 en %"&ant 0ans !e %"ch"er 0e con%"'urat"on &isten ? 3,3,. Au n"veau 0e !a 0.c!arat"on 0es h7tes v"rtue!s "! %au0ra +ettre -ue!-ue chose co++e La XOirtualHost 1'2.1HJ.13.11?JIJIR $er)erMame tosh.-er)ao.*r :ocument7oot .usr.local.apache2.htdocs 6rror&og logs.tosh,error/log 5rans*er&og logs.tosh,access/log X.OirtualHostR

D Nestion de bases de donnes a)ec "#$%&


D.1 5ests de *onctionnement a)ec "#$%&
n suppose -ue vous ave= "nsta!!.* con%"'ur. "#$%& et cr.. !es 0eu& e&e+p!es 0u para'raphe "nsta!!at"on "#$%&. n suppose auss" -ue !e serveur s4appe!!e obeli( et !4ut"!"sateur oli)ier. )o"c" une pa'e .cr"te en PHP -u" va acc.0er ? !a base 0e 0onn.e essai et ? sa tab!e coord. XP [ser)eur0ClocalhostCA [login0Coli)ierCA [pass0Cmot,de,passeCA [base0CessaiCA [table0CcoordCA [id0"@$%&/C2MM6C5K[ser)eur=[login=[passLA m#sql/select/dbK[baseLA [nom0ChoarauCA [prenom0Coli)ierCA [email0Coli)ier.hoarauT*nac.netCA [quer#0CIM$675 IM52 [table OA&;6$K'[nom'='[prenom'='[email'LCA [result0m#sql/quer#K[quer#=[idLA echo C$aisie termineCA PR P!acer ce scr"pt 0ans `.public/html et appe!er !e bd1.php :ans votre nav"'ateur pr.%.r.* 0ans !e cha+p >FL sa"s"sse= ; http?..obeli(.`oli)ier.bd1.php A pr"or" y a pas 'ran0 chose -u" s4est pass.* +a"ntenant connecte= vous ? votre base essai 0ans un she!!

Apache+PHP+MySQL

24

http;66www.%un"&.or'

Eoli)ierTobeli( oli)ierF[ m#sql ,u oli)ier ,p essai 6nter pass>ord? 9elcome to the "#$%& monitor. Commands end >ith A or Qg. @our "#$%& connection id is 1 $er)er )ersion? !.!.2' $ource distribution Cop#right KcL 2III= 2I12= 2racle and.or its a**iliates. All rights reser)ed. 2racle is a registered trademar- o* 2racle Corporation and.or its a**iliates. 2ther names ma# be trademar-s o* their respecti)e o>ners. 5#pe 'helpA' or 'Qh' *or help. 5#pe 'Qc' to clear the current input statement. m#sqlR $6&6C5 S 472" coordA U,,,,,U,,,,,,,U,,,,,,,,,,,,,,,,,,,,U V nom V prenom V email V U,,,,,U,,,,,,,U,,,,,,,,,,,,,,,,,,,,U V hoarau V oli)ier V oli)ier.hoarauT*nac.net V U,,,,,U,,,,,,,U,,,,,,,,,,,,,,,,,,,,U 1 ro> in set KI.II secL 14est bon La %onct"onne. Passons ? un e&e+p!e p!us po"ntu* on va entrer !es "n%or+at"ons concernant vos v"s"teurs 0ans une base "#$%& * cr.er !a tab!e te!!e -ue 0.cr"te 0ans !4e&e+p!e 2 0e !a pa'e "#$%&* cr.er +a"ntenant !e scr"pt PHP. XP [page0geten)KCH55P/7646767CLA [ip0geten)K C76"256/A::7CLA [host0gethostb#addrK[ipLA [d 0 dateKCd.m.@ H?i?sCLA [e(pl0geten)KCH55P/;$67/AN6M5CLA [ser)eur0ClocalhostCA [login0Coli)ierCA [pass0Cmot,de,passeCA [base0CessaiCA [table0Cre*CA [id0"@$%&/C2MM6C5K[ser)eur=[login=[passLA m#sql/select/dbK[baseLA [quer#0CIM$675 IM52 [table OA&;6$K'[d'='[host'='[ip'='[e(pl'='[page'LCA [result0m#sql/quer#K[quer#=[idLA echo C[d [hostK[ipL [e(pl [pageCA PR Qo++e= ce scr"pt bd2.php et p!ace= !e 0ans `.public/html . :ans votre nav"'ateur pr.%.r. tape= 0ans !e cha+p >FL http?..obeli(.`oli)ier.bd2.php

Apache+PHP+MySQL

25

http;66www.%un"&.or'

)ous 0evr"e= vo"r !a 0ate* !e no+ 0e votre +ach"ne avec son a0resse /P et 0es "n%os sur votre nav"'ateur. A pr.sent connectons nous ? !a base; oli)ierTobeli( oli)ierF[ m#sql ,u oli)ier ,p essai 6nter pass>ord? 9elcome to the "#$%& monitor. Commands end >ith A or Qg. @our "#$%& connection id is 1 $er)er )ersion? !.!.2' $ource distribution Cop#right KcL 2III= 2I12= 2racle and.or its a**iliates. All rights reser)ed. 2racle is a registered trademar- o* 2racle Corporation and.or its a**iliates. 2ther names ma# be trademar-s o* their respecti)e o>ners. 5#pe 'helpA' or 'Qh' *or help. 5#pe 'Qc' to clear the current input statement.

S et votre

m#sqlR $6&6C5 S 472" re*A U,,,,,,,,,,,,,,,U,,,,,,,,,,,,,,,U,,,,,,,,,,U,,,,,,,,,,,,,,,,,U,,,,,U V date V host V ip V os V page V U,,,,,,,,,,,,,,,U,,,,,,,,,,,,,,,U,,,,,,,,,,U,,,,,,,,,,,,,,,,,U,,,,,U V 2 .I .2III IJ?3 ?I! V asteri(.armoric.b+ V 1'2.1HJ.13.11 V "o+illa. .H1 EenF Kb V U,,,,,,,,,,,,,,,U,,,,,,,,,,,,,,,U,,,,,,,,,,U,,,,,,,,,,,,,,,,,U,,,,,U 1 ro> in set KI.II secL 14est bon !e v"s"teur a b"en .t. pr"s en co+pte.

Ma"ntenant -ue vous save= co++ent Apache %onct"onne avec "#$%& et PHP* !a"sse= !"bre cours ? votre "+a'"nat"on.

D.2 Administration des bases "#$%& a)ec php"#Admin


php"#Admin est un ense+b!e 0e scr"pts PHP -u" per+et 04a0+"n"strer 0es bases "#$%& ? part"r 04un nav"'ateur. )ous pouve= !e r.cup.rer ? !4>FL www.php+ya0+"n.net. Kn 0.ta"! phpMyA0+"n per+et 0e; A cr.er et suppr"+er 0es bases 0e 0onn.es* A .0"ter* a@outer ou suppr"+er 0es cha+ps* A taper 0es co++an0es SQL* A '.rer !es c!.s 0e cha+ps* A ... L4arch"ve se pr.sente sous !a %or+e 04un tarba!! -u4on 0.co+presse en tapant ; tar ()*1 php"#Admin,3.!.D,all,languages.tar.b+2 1e!a va cr.er 0ans !e r.perto"re 0e trava"! un r.perto"re php"#Admin,3.!.D,all,languages. :ans ce r.perto"re vous ave= un %"ch"er con*ig.inc.sample.php* "! %aut !e cop"er en con*ig.inc.php* 0ans ce %"ch"er "! %aut +o0"%"er !es cha+ps su"vants ; Pour cette var"ab!e on peut +ettre un peu n4"+porte -uo"* La sert ensu"te pour ch"%%rer 0e +an"Cre a!.ato"re. [c*gE'blo>*ish/secret'F 0 '1e suis toto'A .S @2; ";$5 4I&& IM 5HI$ 427 C223I6 A;5HP T6 pour !e reste @4a" !a"ss. !es va!eurs par 0.%aut ? savo"r

Apache+PHP+MySQL

25

http;66www.%un"&.or'

.S Authentication t#pe S. [c*gE'$er)ers'FE[iFE'auth/t#pe'F 0 'coo-ie'A .S $er)er parameters S. [c*gE'$er)ers'FE[iFE'host'F 0 'localhost'A [c*gE'$er)ers'FE[iFE'connect/t#pe'F 0 'tcp'A [c*gE'$er)ers'FE[iFE'compress'F 0 *alseA .S $elect m#sqli i* #our ser)er has it S. [c*gE'$er)ers'FE[iFE'e(tension'F 0 'm#sql'A [c*gE'$er)ers'FE[iFE'Allo>MoPass>ord'F 0 *alseA Ma"ntenant on 0o"t ren0re access"b!e !e r.perto"re php"#Admin 04une pa'e web* pour ce!a 0eu& so!ut"ons; A #so!ut"on s"+p!e( p!acer php"#Admin 0ans .usr.local.apache.htdocs et au n"veau 0e !a pa'e 04accue"! 04apache %a"re un !"en vers .usr.local.apache.htdocs.php"#Admin,3.!.D,all,languages.inde(.php A #so!ut"on pr.con"s.e(* cr.er un h7te v"rtue! po"ntant vers ..php"#Admin,3.!.D,all,languages -u4on appe!era >>>.sql.brei+land.b+ . M256 S" La vous 'Cne -ue n4"+porte -u" 04un nav"'ateur pu"sse a!!er 0ans !e r.perto"re php"#Admin* +ette= y 0es restr"ct"ons 04accCs avec un %"ch"er .htaccess. Avec !a so!ut"on h7te v"rtue!* ? part"r 04un nav"'ateur -uan0 on s.!ect"onne >>>.sql.brei+land.b+ on to+be 04abor0 sur une bann"Cre 0e !o'"n* ensu"te sur une %enGtre avec %ra+e avec ? 'auche !a !"ste 0es bases 0e 0onn.es 0"spon"b!es et ? 0ro"te* !e +enu su"vant;

Pour trava"!!er sur une base 0e 0onn.es part"cu!"Cres "! su%%"t 0e !a s.!ect"onner 0ans !e cho"& 0.rou!ant ? 'auche* on retrouve 04a"!!eurs notre base essai* pour en cr.er une autre "! su%%"t 0e cho"s"r 8ases de donnes pu"s Crer une base de donnes. S" on s.!ect"onne essai par e&e+p!e on obt"ent

Apache+PHP+MySQL

22

http;66www.%un"&.or'

)ous pouve= 0onc cr.er 0es nouve!!es tab!es* %a"re 0es re-uGtes $%&* etc. A noter -ue s" vous ave= une erreur 0e char'e+ent 0e php"#Admin 0u sty!e JKrreur !ors 0u char'e+ent 0e !a sess"onJ "! %au0ra .0"ter !e %"ch"er .usr.local.apache2.con*.php.ini et +o0"%"er !a !"'ne su"vante session.sa)e/path 0 C.tmpC vous +ette= !e r.perto"re te+pora"re -ue vous vou!e=

J $cripts CNI
Pour act"ver !es scr"pts 18/* !e %"ch"er httpd.con* est 0.@? con%"'ur. pour* on y trouve nota++ent !a !"'ne -u" "n0"-ue oO trouver !es scr"pts; $criptAlias .cgi,bin. .usr.local.apache2.cgi,bin. Le but 0e !4e&erc"ce est 0e cr.er un scr"pt per! 18/ -u" va tra"ter un %or+u!a"re -ue!con-ue 04une pa'e H9ML. )ous a!!e= cr.er votre scr"pt per! sous .usr.local.apache2.cgi,bin* et !e no++er *orm.pl* vo"c" son contenu; G<.usr.bin.perl use CNIA [html0ne> CNIA print [html,RheaderA print CXH5"&RQnCA print CXH6A:RQnCA print CX5I5&6RPremier script CNI perlX.5I5&6RQnCA print CX.H6A:RQnCA print CX82:@RQnCA print CXH1R5raitement du *ormulaireX.H1RQnCA print CMom ?CA print [html,RparamK'nom'LA print CXpRQnCA print C6mail ?CA print [html,RparamK'email'LA print CXpRQnCA print CCommentaire?CA print [html,RparamK'comment'LA print CX.82:@RQnCA print CX.H5"&RQnCA :onner !es 0ro"ts -u" vont b"en avec ce %"ch"er; chmod D!! *orm.pl Kn tant -u4ut"!"sateur stan0ar0 # oli)ier 0ans notre e&e+p!e(* cr.er +a"ntenant !e %"ch"er H9ML su"vant -ue vous appe!ere= *ormulaire.htm XhtmlR Xbod#R Xh2R4ormulaireX.h2R X*orm action0Chttp?..obeli(.cgi,bin.*orm.plC "65H2:0N65R Mom? Xinput t#pe0Cte(tC name0nom si+e02IRXbrR 6mail? Xinput t#pe0Cte(tC name0email si+e03IRXbrR Commentaire? Xinput t#pe0Cte(tC name0comment si+e01IIRXbrR Xinput t#pe0submit )alue0C6n)o#erCR Xinput t#pe0reset )alue0Cremettre +roCR X.*ormR

Apache+PHP+MySQL

23

http;66www.%un"&.or'

X.bod#R X.htmlR )o"!? +a"ntenant -uan0 vous a!!e= acc.0er ? http?..obeli(.`oli)ier.*ormulaire.htm * vous a!!e= avo"r une pa'e 0u sty!e;
Haut du formulaire

Qo+; K+a"!; 1o++enta"re;


Envoyer remettre zro
Bas du formulaire

Kn appuyant sur 6n)o#er La va 0.c!encher !4e&.cut"on 0u scr"pt CNI per!* -u" va provo-uer !4a%%"cha'e 0es va!eurs pr.c.0e++ent sa"s"es.

' PHP et &:AP


n peut co+p"!er PHP pour pouvo"r ut"!"ser 0es co++an0es '.rant une base L:AP* pour ce!a au para'raphe 0e co+p"!at"on 0e PHP on ra@outera au& opt"ons 0e con*igure !4opt"on ; ,,>ith,ldap0.)ar.lib.ldap .)ar.lib.ldap 0evant Gtre re+p!ac. par !e che+"n oO se trouve votre base &:AP. Feco+p"!e= pu"s r."nsta!!e= !e +o0u!e -u" va b"en ; ma-e Kt en tant -ue root ma-e install Fe!ance= Apache .etc.rc.d.init.d.httpd restart )o"!? un pet"t pro'ra++e -u" va nous per+ettre 0e ra@outer une entr.e 0ans !a base* !"bre ? vous +a"ntenant 0e cr.er 0es %or+u!a"res 0e sa"s"e* 0e 0estruct"on* et 0e recherche; XP .. nom du ser)eur &:AP [ser)er0Casteri(CA .. identi*ication de l'administrateur de la base [rootdn0Ccn0"anager= dc0brei+land= dc0b+CA ..mot de passe administrateur [rootp>0CsecretCA ..conne(ion la base [result0ldap/connectK[ser)erLA i* K[result001L \ ldap/bindK[result=[rootdn=[rootp>LA ] ..6nregistrement d'une entre dans la base echoC6nregistrement de 8en1amin HoarauQnCA [dn0Cdc0brei+land= dc0b+CA [nom0CHoarauCA [prenom0C8en1aminCA [mail0Cben1amin.hoarauT*uni(.orgCA [in*oECcnCF0[nom.C C.[prenomA [in*oECmailCF0[mailA [in*oECob1ectclassCF0CpersonCA

Apache+PHP+MySQL

29

http;66www.%un"&.or'

ldap/addK[result=Ccn0[nom [prenom=[dnC=[in*oLA ldap/closeK[resultLA echo C&'enregistement a russiCA PR Appe!e= ce %"ch"er ldap.php3* vous pouve= !e tester et v.r"%"er -ue !4entr.e a b"en .t. sa"s"e 0ans !a base.

1I $curiser Apache et PHP dans un en)ironnement chroot


1I.1Prsentation
1ette pa'e pr.sente !4"nsta!!at"on et !a con%"'urat"on 04 Apache 2. .3 avec PHP!. .11 et "#$%& !.!.2' 0ans un env"ronne+ent s.cur"s. ? base 0e chroot. 1hroot per+et 04"so!er !4e&.cut"on 04un pro'ra++e 0ans un espace c"rconscr"t et !"+"t. #souvent appe!. @a"! ou pr"son(. 14est ? 0"re -ue s" un hacBer arr"ve ? pro%"ter 04un %a"!!e 0ans !e pro'ra++e* "! restera !"+"t. ? une arborescence restre"nte avec un no+bre trCs !"+"t. 0e co++an0es.

1I.2Installation de "#$%&
1I.2.1 Installation de "#$%& a)ec les sources
:ans !e r.perto"re 0e trava"!* on 0.co+presse !4arch"ve; tar ()*+ m#sql,!.!.2'.tar.g+ 1e!a cr.e !e r.perto"re m#sql,!.!.2'* sur +a Man0r"va @4a" 0u "nsta!!er !e pacBa'e libncurses,de)el. :ans !e r.perto"re 0e "#$%&* on tape a!ors; cma-e . ,:"@$%&/;MIb/A::70.chroot.m#sql.tmp.m#sql.soc,:C"A36/IM$5A&&/P764Ib0.usr.local.m#sql Pu"s ma-e La co+p"!at"on est re!at"ve+ent !on'ue +G+e sur une +ach"ne pu"ssante. n tape +a"ntenant en te+ps -ue root; ma-e install Les e&.cutab!es sont "nsta!!.s par 0.%aut sous .usr.local.bin et !e serveur m#sqld sous .usr.local.libe(ec. /nsta!!e= +a"ntenant !a base 0e 0onn.e en tapant ; ..m#sql,!.!.2'.scripts.m#sql/install/db )o"!? !e r.su!tat obtenu Installing "#$%& s#stem tables... 23 4illing help tables... 23 5o start m#sqld at boot time #ou ha)e to cop# support,*iles.m#sql.ser)er to the right place *or #our s#stem P&6A$6 76"6"867 52 $65 A PA$$927: 427 5H6 "#$%& root ;$67 <

Apache+PHP+MySQL

3,

http;66www.%un"&.or'

5o do so= start the ser)er= then issue the *ollo>ing commands? .usr.local.m#sql.bin.m#sqladmin ,u root pass>ord 'ne>,pass>ord' .usr.local.m#sql.bin.m#sqladmin ,u root ,h po>er.-er)ao.*r pass>ord 'ne>,pass>ord' Alternati)el# #ou can run? .usr.local.m#sql.bin.m#sql/secure/installationm-dir ,p .chroot.m#sql.usr.local.m#sql.data >hich >ill also gi)e #ou the option o* remo)ing the test databases and anon#mous user created b# de*ault. 5his is strongl# recommended *or production ser)ers. $ee the manual *or more instructions. @ou can start the "#$%& daemon >ith? cd .usr.local.m#sql A .usr.local.m#sql.bin.m#sqld/sa*e B @ou can test the "#$%& daemon >ith m#sql,test,run.pl cd .usr.local.m#sql.m#sql,test A perl m#sql,test,run.pl Please report an# problems >ith the .usr.local.m#sql.bin.m#sqlbug script< S" ce n4est pas 0.@? %a"t cr.er !e 'roupe m#sql groupadd m#sql Pu"s !4ut"!"sateur m#sql 0u 'roupe m#sql useradd m#sql ,c C"#$%& $er)erC ,d .de).null ,g m#sql ,s .sbin.nologin Les bases se trouvent par 0.%aut sous .usr.local.m#sql.data* m#sql 0o"t en Gtre propr".ta"re cho>n ,7 m#sql?m#sql .usr.local.m#sql.data n "nsta!!e +a"ntenant !e %"ch"er 0e con%"'urat"on cp support,*iles.m#,medium.cn* .etc.m#.cn* on 0onne !es 0ro"ts -u" vont b"en cho>n root?s#s .etc.m#.cn* chmod H .etc.m#.cn*

1I.2.2 Chrooter "#$%&


n 0o"t cr.er pr.a!ab!e+ent !es r.perto"res su"vants ; m-dir ,p .chroot.m#sql.de) m-dir ,p .chroot.m#sql.etc m-dir ,p .chroot.m#sql.tmp m-dir ,p .chroot.m#sql.usr m-dir ,p .chroot.m#sql.usr.libH m-dir ,p .chroot.m#sql.libH m-dir ,p .chroot.m#sql.)ar.tmp m-dir ,p .chroot.m#sql.usr.local.m#sql.bin m-dir ,p .chroot.m#sql.usr.local.m#sql.data m-dir ,p .chroot.m#sql.usr.local.m#sql.)ar m-dir ,p .chroot.m#sql.usr.local.m#sql.share.english

Apache+PHP+MySQL

31

http;66www.%un"&.or'

m-dir ,p .chroot.m#sql.usr.local.m#sql.share.*rench on cop"e ensu"te !es %"ch"ers n.cessa"res au %onct"onne+ent 0u serveur m#sqld cp .usr.local.m#sql.bin.m#sqld .chroot.m#sql.usr.local.m#sql.bin cp .usr.local.m#sql.share.english.errmsg.s#s .chroot.m#sql.usr.local.m#sql.share.english. cp .usr.local.m#sql.share.*rench.errmsg.s#s .chroot.m#sql.usr.local.m#sql.share.*rench. cp ,7* .usr.local.m#sql.share.charsets .chroot.m#sql.usr.local.m#sql.share cp .etc.hosts .chroot.m#sql.etc. cp .etc.host.con* .chroot.m#sql.etc. cp .etc.resol).con* .chroot.m#sql.etc. cp .etc.group .chroot.m#sql.etc. cp .etc.pass>d .chroot.m#sql.etc. cp .etc.m#.cn* .chroot.m#sql.etc. 0ans !es %"ch"ers .chroot.m#sql.etc.pass>d et .chroot.m#sql.etc.group on ve"!!era ? !a"sser seu!e+ent !4ut"!"sateur et !e 'roup m#sql +a"ntenant on v.r"%"e !a 0.pen0ance 0u 0ae+on m#sqld en tapant ldd .usr.local.m#sql.bin.m#sqld vo"!? !e r.su!tat linu(,)dso.so.1 0R KI(IIIID***2a*cIIIIL libpthread.so.I 0R .libH .libpthread.so.I KI(IIIID*edeJ2!eIIIL lib+.so.1 0R .usr.libH .lib+.so.1 KI(IIIID*edeJI 'IIIL librt.so.1 0R .libH .librt.so.1 KI(IIIID*edeDe 1IIIL libcr#pt.so.1 0R .libH .libcr#pt.so.1 KI(IIIID*edeDb*3IIIL libdl.so.2 0R .libH .libdl.so.2 KI(IIIID*edeD'e*IIIL libstdcUU.so.H 0R .usr.libH .libstdcUU.so.H KI(IIIID*edeDHe2IIIL libm.so.H 0R .libH .libm.so.H KI(IIIID*edeD HIIIIL libgcc/s.so.1 0R .libH .libgcc/s.so.1 KI(IIIID*edeD2 aIIIL libc.so.H 0R .libH .libc.so.H KI(IIIID*edeHedeIIIL .libH .ld,linu(,(JH,H .so.2 KI(IIIID*edeJ DaIIIL on cop"e !es b"b!"othC-ues n.cessa"res 0ans !4env"ronne+ent chroot. cp .libH .libpthread.so.I .chroot.m#sql.libH cp .libH .libcr#pt.so.1 .chroot.m#sql.libH cp .libH .libnsl.so.1 .chroot.m#sql.libH cp .libH .libm.so.H .chroot.m#sql.libH cp .libH .libgcc/s.so.1 .chroot.m#sql.libH cp .libH .libc.so.H .chroot.m#sql.libH cp .libH .ld,linu(,(JH,H .so.2 .chroot.m#sql.libH cp .usr.libH .lib+.so.1 .chroot.m#sql.usr.libH cp .usr.libH .libstdcUU.so.H .chroot.m#sql.usr.libH cp .libH .librt.so.1 .chroot.m#sql.libH cp .libH .libdl.so.2 .chroot.m#sql.libH "! %au0ra .'a!e+ent cop"er !es 0eu& b"b!"othC-ues su"vantes cp .libH .libnss/*iles.so.2 .chroot.httpd.libH cp .libH .libnss/mdns /minimal.so.2 .chroot.httpd.libH +a"ntenant on +o0"%"e !es 0ro"ts 0u r.perto"re .chroot.m#sql et ce!u" 0u r.perto"re te+pora"re cho>n ,7 root?s#s .chroot.m#sql chmod ,7 D!! .chroot.m#sql chmod 1DDD .chroot.m#sql.tmp

Apache+PHP+MySQL

32

http;66www.%un"&.or'

on cr.e un %"ch"er poube!!e .de).null 0ans !4env"ronne+ent chroot m-nod .chroot.m#sql.de).null c 2 2 cho>n root?s#s .chroot.m#sql.de).null chmod HHH .chroot.m#sql.de).null on cop"e ensu"te !a base et on +et m#sql propr".ta"re cp ,7 .usr.local.m#sql.data. .chroot.m#sql.usr.local.m#sql.data cho>n ,7 m#sql?m#sql .chroot.m#sql.usr.local.m#sql.data Pour ter+"ner on "nsta!!e !e pacBa'e su"vant urpmi chrootuid

1I.2.3 Con*iguration de "#$%&


n .0"te !e %"ch"er .etc.m#.cn* vous 0eve= au +o"ns avo"r !es !"'nes su"vantes EclientF port 0 33IH soc-et 0 .chroot.m#sql.tmp.m#sql.socEm#sqldF port 0 33IH soc-et 0 .tmp.m#sql.socs-ip,e(ternal,loc-ing pid,*ile0.tmp.m#sqld.pid s-ip,net>or-ing on !a"sse !e reste par 0.%aut. 1op"e= +a"ntenant .etc.m#.cn* sous .chroot.m#sql.etc cp .etc.m#.cn* .chroot.m#sql.etc on !ance +a"ntenant !e 0ae+on chroot. en tapant chrootuid .chroot.m#sql m#sql .usr.local.m#sql.bin.m#sqld B vo"!? !e r.su!tat 13I3I1 '?22?21 Inno:8? 5he Inno:8 memor# heap is disabled 13I3I1 '?22?21 Inno:8? "ute(es and r>/loc-s use NCC atomic builtins 13I3I1 '?22?21 Inno:8? Compressed tables use +lib 1.2.3 13I3I1 '?22?21 Inno:8? Initiali+ing bu**er pool= si+e 0 12J.I" 13I3I1 '?22?21 Inno:8? Completed initiali+ation o* bu**er pool 13I3I1 '?22?21 Inno:8? highest supported *ile *ormat is 8arracuda. 13I3I1 '?22?21 Inno:8? 9aiting *or the bac-ground threads to start 13I3I1 '?22?22 Inno:8? 1.1.J startedA log sequence number 1!'!HD! 13I3I1 '?22?22 EMoteF $er)er hostname Kbind,addressL? 'I.I.I.I'A port? 33IH 13I3I1 '?22?22 EMoteF , 'I.I.I.I' resol)es to 'I.I.I.I'A 13I3I1 '?22?22 EMoteF $er)er soc-et created on IP? 'I.I.I.I'. 13I3I1 '?22?22 EMoteF 6)ent $cheduler? &oaded I e)ents 13I3I1 '?22?22 EMoteF .usr.local.m#sql.bin.m#sqld? read# *or connections. Oersion? '!.!.2',log' soc-et? '.tmp.m#sql.soc-' port? 33IH $ource distribution Pour v.r"%"er -u4on est b"en 0ans un env"ronne+ent chroot.* on r.cup.re !e P/: 0u process m#sqld en tapant ps au(Vgrep m#sql vo"!? !e r.su!tat

Apache+PHP+MySQL

33

http;66www.%un"&.or'

m#sql

21 '! I.I 3.D 3JJ2'2 3JH2I pts.2

$lU 1I?22 I?II .usr.local.m#sql.bin.m#sqld

en tapant ll .proc.21 '!.root on vo"t b"en un !"en vers .chroot.m#sql S" vous 0"spose= 0.@? 04une base s-! ? up'ra0er "! %au0ra taper ..m#sql/upgrade ,p S"non* on part 0e =.ro* "! %aut +o0"%"er !e +ot 0e passe 04a0+"n"strateur 0e !a base en tapant .usr.local.m#sql.bin.m#sql ,u root vo"!? !e r.su!tat 9elcome to the "#$%& monitor. Commands end >ith A or Qg. @our "#$%& connection id is 1 $er)er )ersion? !.!.2',log $ource distribution Cop#right KcL 2III= 2I12= 2racle and.or its a**iliates. All rights reser)ed. 2racle is a registered trademar- o* 2racle Corporation and.or its a**iliates. 2ther names ma# be trademar-s o* their respecti)e o>ners. 5#pe 'helpA' or 'Qh' *or help. 5#pe 'Qc' to clear the current input statement. m#sqlR$65 PA$$927: 427 rootTlocalhost0PA$$927:K'ne>pass>ord'LA %uer# 23= I ro>s a**ected KI=II secL on suppr"+e !a base 0e test m#sqlR drop database testA %uer# 23= I ro>s a**ected KI=II secL on %a"t !e +.na'e 0ans !a base +ys-! en suppr"+ant !es ut"!"sateurs "nut"!es m#sqlR use m#sqlA :atabase changed m#sqlR delete *rom dbA %uer# 23= 2 ro>s a**ected KI=II secL m#sqlR delete *rom user >here notKhost0ClocalhostC and user0CrootCLA %uer# 23= ro>s a**ected KI=II secL m#sqlR *lush pri)ilegesA %uer# 23= I ro>s a**ected KI=II secL on chan'e !e no+ 0e !4a0+"n"strateur+ys-!0.p"0 m#sqlR update user set user0Cadminm#sqlC >here user0CrootCA %uer# 23= 1 ro> a**ected KI=II secL 7o>s matched? 1 Changed? 1 9arnings? I m#sqlR *lush pri)ilegesA %uer# 23= I ro>s a**ected KI=II secL

Apache+PHP+MySQL

34

http;66www.%un"&.or'

on peut -u"tter !a base m#sqlRquit pour ter+"ner on suppr"+e toutes traces 0e nos +an"ps cat .de).null R `..m#sql/histor#

1I.3Installation d'Apache
1I.3.1 Installation d'Apache
n co++ence en cr.ant un ut"!"sateur et un 'roupe apache en tapant groupadd apache useradd apache ,c CApache $er)erC ,d .de).null ,g apache ,s .sbin.nologin Pour Apache* on 0.sarch"ve en tapant; tar ()*+ httpd,2. .3.tar.g+ 1e!a va cr.er !e r.perto"re httpd,2. .3. /! %au0ra pr.a!ab!e+ent "nsta!!er !es out"!s apr et apr,util -u4on t.!.char'era sur !e s"te apr.apache.or'. n 0.co+presse !a pre+"Cre arch"ve en tapant tar ()*+ apr,1. .H.tar.g+ ce!a 0onne !e r.perto"re apr,1. .H 0ans !e-ue! on tape success"ve+ent ..con*igure ma-e pu"s en tant -ue root ma-e install on .0"te +a"ntenant !e %"ch"er .etc.ld.so.con* et on ra@oute !a !"'ne su"vante .usr.local.apr.lib on 0.co+presse !a 0eu&"C+e arch"ve en tapant tar ()*+ apr,util,1.!.1.tar.g+ ce!a 0onne !e r.perto"re apr,util,1.!.1 on y tape success"ve+ent ..con*igure ,,>ith,apr0/chemin-absolu/apr,1. .H ma-e pu"s en tant -ue root ma-e install ldcon*ig :ans ce r.perto"re on tape a!ors;

Apache+PHP+MySQL

35

http;66www.%un"&.or'

..con*igure ,,pre*i(0.usr.local.apache2 ,,>ith,mpm0pre*or- ,,disable,charset,lite ,,disable,include ,,disable,en) ,,disable,seten)i* ,,disable,status ,,disable,autoinde( ,,disable,asis ,,disable,cgi ,,disable, negotiation ,,disable,imap ,,disable,actions ,,disable,userdir ,,disable,alias ,,enable,so ,,enable,uni(d Par pre*i( on "n0"-ue -ue !es r.perto"res 04Apache contenant entre autre !e %"ch"er 0e con% se trouveront sous .usr.local.apache2 c4est ut"!e 0ans !e cas oO vous vou!e= %a"re coe&"ster 0eu& vers"ons 04 Apache sur votre systC+e. n tape +a"ntenant; ma-e Kt en%"n en tant -ue root; ma-e install Pour avo"r !a !"ste 0es +o0u!es pr."nsta!!.s taper !a co++an0e .usr.local.apache2.bin.httpd ,l vo"!? !a r.ponse Compiled in modules? core.c mod/so.c http/core.c pre*or-.c 1hacun 0e ces +o0u!es est 0"recte+ent "nt.'r. 0ans !4e&.cutab!e 04apache* ? !4e&cept"on 0u +o0u!e php -u" sera char'. 0yna+"-ue+ent 'rUce au +o0u!e :S #0yna+"c share0 ob@ect(.

1I. Chrooter Apache


n 0o"t cr.er pr.a!ab!e+ent !es r.perto"res su"vants m-dir ,p .chroot.httpd.de) m-dir ,p .chroot.httpd.etc m-dir ,p .chroot.httpd.)ar.run m-dir ,p .chroot.httpd.usr.lib m-dir ,p .chroot.httpd.usr.libH m-dir ,p .chroot.httpd.libH m-dir ,p .chroot.httpd.usr.libe(ec m-dir ,p .chroot.httpd.usr.local.apache2.bin m-dir ,p .chroot.httpd.usr.local.apache2.lib m-dir ,p .chroot.httpd.usr.local.apache2.logs.lena.hoarau.org m-dir ,p .chroot.httpd.usr.local.apache2.con* m-dir ,p .chroot.httpd.usr.local.lib m-dir ,p .chroot.httpd.usr.local.apr.lib. m-dir ,p .chroot.httpd.>>> on cop"e +a"ntenant !es %"ch"ers n.cessa"res au %onct"onne+ent 0u 0ae+on httpd cp .usr.local.apache2.bin.httpd .chroot.httpd.usr.local.apache2.bin. cp .usr.local.apache2.con*.mime.t#pes .chroot.httpd.usr.local.apache2.con*. cp .usr.local.apache2.con*.httpd.con* .chroot.httpd.usr.local.apache2.con*. cp .etc.hosts .chroot.httpd.etc. cp .etc.nss>itch.con* .chroot.httpd.etc.

Apache+PHP+MySQL

35

http;66www.%un"&.or'

cp .etc.resol).con* .chroot.httpd.etc. cp .etc.group .chroot.httpd.etc. cp .etc.pass>d .chroot.httpd.etc on cop"e !es +o0u!es ? !4en0ro"t -u" va b"en cp .usr.local.apache2.modules.S .chroot.httpd.usr.local.apache2.modules 0ans !es %"ch"ers .chroot.m#sql.etc.pass>d et .chroot.m#sql.etc.group on ve"!!era ? !a"sser seu!e+ent !4ut"!"sateur et !e 'roup apache n v.r"%"e !es 0.pen0ances 0u 0ae+on en tapant ldd .usr.local.apache2.bin.httpd vo"!? !e r.su!tat linu(,)dso.so.1 0R KI(IIIID***e'*JbIIIL libpcre.so.I 0R .usr.libH .libpcre.so.I KI(IIIID*b'I2* 'IIIL libaprutil,1.so.I 0R .usr.local.apr.lib.libaprutil,1.so.I KI(IIIID*b'I2d2!IIIL libe(pat.so.1 0R .usr.libH .libe(pat.so.1 KI(IIIID*b'I2a*cIIIL libapr,1.so.I 0R .usr.local.apr.lib.libapr,1.so.I KI(IIIID*b'I2JceIIIL libuuid.so.1 0R .libH .libuuid.so.1 KI(IIIID*b'I2Hc'IIIL librt.so.1 0R .libH .librt.so.1 KI(IIIID*b'I2 c1IIIL libcr#pt.so.1 0R .libH .libcr#pt.so.1 KI(IIIID*b'I22D3IIIL libpthread.so.I 0R .libH .libpthread.so.I KI(IIIID*b'I2I!DIIIL libdl.so.2 0R .libH .libdl.so.2 KI(IIIID*b'I1e!3IIIL libc.so.H 0R .libH .libc.so.H KI(IIIID*b'I1aeDIIIL .libH .ld,linu(,(JH,H .so.2 KI(IIIID*b'I31DaIIIL on cop"era 0onc !es b"b!"othC-ues n.cesa"res en tapant cp .libH .libm.so.H .chroot.httpd.libH cp .libH .librt.so.1 .chroot.httpd.libH cp .libH .libcr#pt.so.1 .chroot.httpd.libH cp .libH .libpthread.so.I .chroot.httpd.libH cp .libH .libdl.so.2 .chroot.httpd.libH cp .libH .libc.so.H .chroot.httpd.libH cp .libH .libuuid.so.1 .chroot.httpd.libH cp .libH .ld,linu(,(JH,H .so.2 .chroot.httpd.libH cp .usr.local.apr.lib.libaprutil,1.so.I .chroot.httpd.usr.local.apr.lib cp .usr.local.apr.lib.libapr,1.so.I .chroot.httpd.usr.local.apr.lib cp .usr.local.apache2.lib.libe(pat.so.I .chroot.httpd.usr.libH cp .usr.libH .libe(pat.so.1 .chroot.httpd.usr.libH cp .usr.libH .libpcre.so.I .chroot.httpd.usr.libH n !ance !e 0ae+on httpd en traLant !es appe!s ? 04autres %"ch"ers ou b"b!"othC-ues en tapant strace ,o .tmp.trace .usr.local.apache2.bin.httpd vo"!? ce -ue La 0onne 0ans !e %"ch"er cat .tmp.trace V grep open openKC.de).urandomC= 2/7:2M&@L 03 openKC.etc.gai.con*C= 2/7:2M&@L 0 ,1 6M26M5 KMo such *ile or director#L openKC.usr.local.apache2.con*.httpd.con*C= 2/7:2M&@V2/C&26b6CL 0 3 openKC.usr.local.apache2.modules.libphp!.soC= 2/7:2M&@L 0 openKC.usr.libH .tls.(JH/H .libc,client.so.IC= 2/7:2M&@L 0 ,1 6M26M5 KMo such *ile or director#L

Apache+PHP+MySQL

32

http;66www.%un"&.or'

openKC.usr.libH .tls.libc,client.so.IC= 2/7:2M&@L 0 ,1 6M26M5 KMo such *ile or director#L openKC.usr.libH .(JH/H .libc,client.so.IC= 2/7:2M&@L 0 ,1 6M26M5 KMo such *ile or director#L openKC.usr.libH .libc,client.so.IC= 2/7:2M&@L 0 openKC.usr.libH .libresol).so.2C= 2/7:2M&@L 0 ,1 6M26M5 KMo such *ile or director#L openKC.usr.local.apr.lib.libresol).so.2C= 2/7:2M&@L 0 ,1 6M26M5 KMo such *ile or director#L openKC.etc.ld.so.cacheC= 2/7:2M&@L 0 openKC.libH .libresol).so.2C= 2/7:2M&@L 0 openKC.usr.libH .libmcr#pt.so. C= 2/7:2M&@L 0 openKC.usr.libH .libltdl.so.DC= 2/7:2M&@L 0 openKC.usr.libH .libpam.so.IC= 2/7:2M&@L 0 ,1 6M26M5 KMo such *ile or director#L openKC.usr.local.apr.lib.libpam.so.IC= 2/7:2M&@L 0 ,1 6M26M5 KMo such *ile or director#L openKC.libH .libpam.so.IC= 2/7:2M&@L 0 openKC.usr.libH .libintl.so.JC= 2/7:2M&@L 0 ,1 6M26M5 KMo such *ile or director#L openKC.usr.local.apr.lib.libintl.so.JC= 2/7:2M&@L 0 ,1 6M26M5 KMo such *ile or director#L openKC.libH .libintl.so.JC= 2/7:2M&@L 0 openKC.usr.libH .libm.so.HC= 2/7:2M&@L 0 ,1 6M26M5 KMo such *ile or director#L openKC.usr.local.apr.lib.libm.so.HC= 2/7:2M&@L 0 ,1 6M26M5 KMo such *ile or director#L openKC.libH .libm.so.HC= 2/7:2M&@L 0 openKC.usr.libH .libnsl.so.1C= 2/7:2M&@L 0 ,1 6M26M5 KMo such *ile or director#L openKC.usr.local.apr.lib.libnsl.so.1C= 2/7:2M&@L 0 ,1 6M26M5 KMo such *ile or director#L openKC.libH .libnsl.so.1C= 2/7:2M&@L 0 openKC.usr.libH .lib+.so.1C= 2/7:2M&@L 0 openKC.usr.libH .libssl.so.1.I.IC= 2/7:2M&@L 0 openKC.usr.libH .libcr#pto.so.1.I.IC= 2/7:2M&@L 0 openKC.usr.libH .lib(ml2.so.2C= 2/7:2M&@L 0 openKC.usr.libH .libaudit.so.1C= 2/7:2M&@L 0 ,1 6M26M5 KMo such *ile or director#L openKC.usr.local.apr.lib.libaudit.so.1C= 2/7:2M&@L 0 ,1 6M26M5 KMo such *ile or director#L openKC.libH .libaudit.so.1C= 2/7:2M&@L 0 openKC.etc.nss>itch.con*C= 2/7:2M&@L 0 openKC.etc.host.con*C= 2/7:2M&@L 0 openKC.etc.resol).con*C= 2/7:2M&@L 0 openKC.usr.local.apr.lib.libnss/mdns /minimal.so.2C= 2/7:2M&@L 0 ,1 6M26M5 KMo such *ile or director#L openKC.etc.ld.so.cacheC= 2/7:2M&@L 0 openKC.libH .libnss/mdns /minimal.so.2C= 2/7:2M&@L 0 openKC.usr.local.apr.lib.libnss/*iles.so.2C= 2/7:2M&@L 0 ,1 6M26M5 KMo such *ile or director#L openKC.etc.ld.so.cacheC= 2/7:2M&@L 0 openKC.libH .libnss/*iles.so.2C= 2/7:2M&@L 0 openKC.etc.hostsC= 2/7:2M&@V2/C&26b6CL 0 openKC.etc.hostsC= 2/7:2M&@V2/C&26b6CL 0 openKC.usr.local.apache2.logs.httpd.pidC= 2/7:2M&@V2/C&26b6CL 0 ,1 6M26M5 KMo such *ile or director#L openKC.usr.local.apache2.logs.error/logC= 2/972M&@V2/C76A5V2/APP6M:V2/C&26b6C= IHHHL 0 H openKC.usr.local.apache2.logs.lena.hoarau.org.error/logC= 2/972M&@V2/C76A5V2/APP6M:V 2/C&26b6C= IHHHL 0 H openKC.etc.localtimeC= 2/7:2M&@L 0D on vo"t -ue httpd re-u"ert 0es b"b!"othC-ues -ue ldd ne s"'na!e pas. n !es cop"era en tapant cp .usr.libH .lib(ml2.so.2 .chroot.httpd.usr.libH cp .usr.libH .lib+.so.1 .chroot.httpd.usr.libH cp .libH .libresol).so.2 .chroot.httpd.libH cp .libH .libnsl.so.1 .chroot.httpd.libH cp .libH .libnss/*iles.so.2 .chroot.httpd.libH cp .libH .libnss/mdns /minimal.so.2 .chroot.httpd.libH on +o0"%"e +a"ntenant !es 0ro"ts et propr".ta"re 0u r.perto"re chroot. 04 Apache cho>n ,7 root?s#s .chroot.httpd chmod ,7 ID!! .chroot.httpd

Apache+PHP+MySQL

33

http;66www.%un"&.or'

on cr.e +a"ntenant un %"ch"er poube!!e .de).null en tapant m-nod .chroot.httpd.de).null c 1 3 cho>n root?s#s .chroot.httpd.de).null chmod HHH .chroot.httpd.de).null mknod -m 644 /chroot/httpd//dev/random c 1 8 mknod -m 644 /chroot/httpd//dev/urandom c 1 9 chown root:root /chroot/httpd/dev/random /chroot/httpd/dev/urandom cp .de).urandom .chroot.httpd.de).urandom p!acer +a"ntenant vos %"ch"ers ht+! sous .chroot.httpd.>>> on va cons"0.rer !e s"te pr"nc"pa! p!ac. sous .chroot.httpd.>>>.>>>.-er)ao.org et un secon0a"re sous .chroot.httpd.>>>.*uni(.-er)ao.org

1I. .1 Con*iguration d'Apache


)o"!? !e %"ch"er .chroot.httpd.usr.local.apache2.con*.httpd.con* G 0000000000000000000000000000000000000000000000000 G 8asic settings G 0000000000000000000000000000000000000000000000000 &isten I.I.I.I?JI ;ser apache Nroup apache $er)erAdmin >ebmasterT*uni(.org ;seCanonicalMame 2** $er)er$ignature 2** Hostname&oo-ups 2** $er)er5o-ens Prod $er)er7oot C.usr.local.apache2C :ocument7oot C.chroot.httpd.>>>C Pid4ile .usr.local.apache2.logs.httpd.pid $core8oard4ile .usr.local.apache2.logs.httpd.scoreboard &oad"odule php!/module modules.libphp!.so &oad"odule authn/*ile/module modules.mod/authn/*ile.so &oad"odule authn/core/module modules.mod/authn/core.so &oad"odule auth+/host/module modules.mod/auth+/host.so &oad"odule auth+/group*ile/module modules.mod/auth+/group*ile.so &oad"odule auth+/user/module modules.mod/auth+/user.so &oad"odule auth+/core/module modules.mod/auth+/core.so &oad"odule access/compat/module modules.mod/access/compat.so &oad"odule auth/basic/module modules.mod/auth/basic.so &oad"odule reqtimeout/module modules.mod/reqtimeout.so &oad"odule *ilter/module modules.mod/*ilter.so &oad"odule mime/module modules.mod/mime.so &oad"odule log/con*ig/module modules.mod/log/con*ig.so &oad"odule headers/module modules.mod/headers.so &oad"odule )ersion/module modules.mod/)ersion.so &oad"odule uni(d/module modules.mod/uni(d.so &oad"odule )host/alias/module modules.mod/)host/alias.so &oad"odule dir/module modules.mod/dir.so XI*"odule mod/dir.cR :irector#Inde( inde(.html X.I*"oduleR G 0000000000000000000000000000000000000000000000000 G H55P and per*ormance settings

Apache+PHP+MySQL

39

http;66www.%un"&.or'

G 0000000000000000000000000000000000000000000000000 5imeout 3II 3eepAli)e 2n "a(3eepAli)e7equests 1II 3eepAli)e5imeout 1! XI*"odule pre*or-.cR "in$pare$er)ers ! "a($pare$er)ers 1I $tart$er)ers ! "a(Clients 1!I "a(7equestsPerChild I X.I*"oduleR G 0000000000000000000000000000000000000000000000000 G Access control G 0000000000000000000000000000000000000000000000000 X:irector# .R 2ptions Mone Allo>2)erride Mone 2rder den#=allo> :en# *rom all X.:irector#R X:irector# C.>>>.>>>.-er)ao.orgCR 2rder allo>=den# Allo> *rom all X.:irector#R X:irector# C.>>>.*uni(.-er)ao.orgCR 2rder allo>=den# Allo> *rom all X.:irector#R G 0000000000000000000000000000000000000000000000000 G "I"6 encoding G 0000000000000000000000000000000000000000000000000 XI*"odule mod/mime.cR 5#pesCon*ig .usr.local.apache2.con*.mime.t#pes X.I*"oduleR :e*ault5#pe te(t.plain XI*"odule mod/mime.cR Add6ncoding (,compress .W Add6ncoding (,g+ip .g+ .tg+ Add5#pe application.(,compress .W Add5#pe application.(,g+ip .g+ .tg+ Add5#pe application.(,tar .tg+ X.I*"oduleR G 0000000000000000000000000000000000000000000000000 G &ogs G 0000000000000000000000000000000000000000000000000 i &og&e)el >arn &og4ormat Cch cl cu ct QCcrQC cRs cb QCc\7e*erer]iQC QCc\;ser,Agent]iQCC combined &og4ormat Cch cl cu ct QCcrQC cRs cbC common &og4ormat Cc\7e*erer]i ,R c;C re*erer &og4ormat Cc\;ser,agent]iC agent 6rror&og .usr.local.apache2.logs.error/log Custom&og .usr.local.apache2.logs.access/log combined G 0000000000000000000000000000000000000000000000000 G Oirtual hosts G 0000000000000000000000000000000000000000000000000 XOirtualHost SR :ocument7oot C.>>>.>>>.-er)ao.orgC $er)erMame C>>>.-er)ao.orgC $er)erAlias C>>>.-er)ao.orgC

Apache+PHP+MySQL

4,

http;66www.%un"&.or'

6rror&og logs.>>>.-er)ao.org.error/log Custom&og logs.>>>.-er)ao.org.access/log combined X.OirtualHostR XOirtualHost SR :ocument7oot C.>>>.*uni(.-er)ao.orgC $er)erMame C*uni(.-er)ao.orgC $er)erAlias C*uni(.-er)ao.orgC 6rror&og logs.*uni(.-er)ao.org.error/log Custom&og logs.*uni(.-er)ao.org.access/log combined X.OirtualHostR vous 0eve= cr.er pr.a!ab!e+ent !es r.perto"res pour stocBer !es !o's 0e vos s"tes m-dir .chroot.httpd.usr.local.apache2.logs.*uni(.-er)ao.org m-dir .chroot.httpd.usr.local.apache2.logs.>>>.-er)ao.org cr.er .'a!e+ent !es a!"as -u" vont b"en au n"veau 0e .etc.hosts pour vos h7tes v"rtue!s* c4est ? 0"re -ue s" votre serveur a !4a0resse /P !oca!e 192.153.1.1, et a pour no+ !oca! mana.-er)ao.*r vous 0eve= avo"r 1'2.1HJ.1.1I mana.-er)ao.*r >>>.-er)ao.org *uni(.-er)ao.org vous 0eve= %a"re 0e +G+e pour tous vos c!"ents. Pour !ancer +a"ntenant Apache* "! %aut taper; chroot .chroot.httpd .usr.local.apache2.bin.httpd Ma"ntenant votre nav"'ateur pr.%.r. 0ans !e cha+p >FL taper http?..>>>.-er)ao.org et vous 0evr"e= retrouver vos pa'es.

1I.!Installation de PHP
1I.!.1 Installation a)ec les sources de PHP
Pour php!* on tapera 04abor0 tar ()*1 php,!. .11.tar.b+2 1e!a va cr.er un r.perto"re php,!. .11. A pr.sent 0ans !e r.perto"re 0e php* vous tapere= ..con*igure ,,>ith,ap(s20.usr.local.apache2.bin.ap(s ,,>ith,con*ig,*ile,path0.usr.local.apache2.con* ,,>ith,m#sql ,,enable,debug0no ,,>ith,gette(t ,,>ith,mcr#pt ,,>ith,imap ,,>ith,imap,ssl ,,>ith, libdir0libH ,,>ith,openssl ,,enable,e(i* A noter -ue !4opt"on sa*e/mode n4est p!us pr"se en co+pte 0epu"s !a vers"on 5.3.,. !es pacBa'es su"vants libH mcr#pt,de)el et libH c,client,de)el on tape ensu"te ma-e Pu"s en tant -ue root ma-e install cd .etc.ssl on '.nCre une c!. non ch"%%r.e sur 0"s-ue #pour .v"ter 04avo"r ? sa"s"r un +ot 0e passe ? cha-ue re0.+arra'e 04Apache( ; n "nsta!!era pr.a!ab!e+ent

Apache+PHP+MySQL

41

http;66www.%un"&.or'

openssl genrsa ,out ser)er.-e# 1I2 Nenerating 7$A pri)ate -e#= 1I2 bit long modulus .........UUUUUU ...........................................UUUUUU e is H!!3D KI(1III1L Knsu"te on cr.e un cert"%"cat s"'n. avec cette c!. ; openssl req ,ne> ,-e# ser)er.-e# ,out ser)er.csr @ou are about to be as-ed to enter in*ormation that >ill be incorporated into #our certi*icate request. 9hat #ou are about to enter is >hat is called a :istinguished Mame or a :M. 5here are quite a *e> *ields but #ou can lea)e some blan4or some *ields there >ill be a de*ault )alue= I* #ou enter '.'= the *ield >ill be le*t blan-. ,,,,, Countr# Mame K2 letter codeL EbbF?47 $tate or Pro)ince Mame K*ull nameL E:e*ault Pro)inceF?8retagne &ocalit# Mame Keg= cit#L E:e*ault Cit#F?8rest 2rgani+ation Mame Keg= compan#L E:e*ault Compan# &tdF?*uni( 2rgani+ational ;nit Mame Keg= sectionL EF? Common Mame Keg= #our name or #our ser)er's hostnameL EF?horde.-er)ao.org 6mail Address EF?oli)ier.hoarauT*uni(.org Please enter the *ollo>ing 'e(tra' attributes to be sent >ith #our certi*icate request A challenge pass>ord EF?mot,de,passe An optional compan# name EF?*uni(

1I.!.2 Chrooter PHP


A pr.sent on va cop"er !e %"ch"er php.ini,production se trouvant 0ans !e r.perto"re 0e PHP php,!.3.3 pour !e +ettre sous .chroot.httpd.usr.local.apache2.con* et en !e reno++ant php.ini cp ..php,!. .11.php.ini,production .usr.local.apache2.con*.php.ini n cop"e .'a!e+ent !e +o0u!e php en tapant cp .usr.local.apache2.modules.libphp!.so .chroot.httpd.usr.local.apache2.modules cp .usr.local.bin.phar .chroot.httpd.usr.local.bin cp ,7* .usr.local.include.php .chroot.httpd.usr.local.include cp ,7* .usr.local.lib.php. .chroot.httpd.usr.local.lib cp .usr.local.bin.pecl .chroot.httpd.usr.local.bin cp .usr.local.bin.phpS .chroot.httpd.usr.local.bin cp ,7* .usr.libH .libmcr#pt .chroot.httpd.usr.libH . +a"ntenant on v.r"%"e !es 0.pen0ances 0e b"b!"othC-ues 0u +o0u!e en tapant ldd .usr.local.apache2.modules.libphp!.so vo"!? !e r.su!tat linu(,)dso.so.1 0R KI(IIIID***!1'**IIIL libcr#pt.so.1 0R .libH .libcr#pt.so.1 KI(IIIID*d DHD1eIIIL libc,client.so.I 0R .usr.libH .libc,client.so.I KI(IIIID*d DH I!IIIL libresol).so.2 0R .libH .libresol).so.2 KI(IIIID*d DH1eeIIIL librt.so.1 0R .libH .librt.so.1 KI(IIIID*d D!*eHIIIL libmcr#pt.so. 0R .usr.libH .libmcr#pt.so. KI(IIIID*d D!ddeIIIL libltdl.so.D 0R .usr.libH .libltdl.so.D KI(IIIID*d D!bd3IIIL

Apache+PHP+MySQL

42

http;66www.%un"&.or'

libpam.so.I 0R .libH .libpam.so.I KI(IIIID*d D!'cHIIIL libintl.so.J 0R .libH .libintl.so.J KI(IIIID*d D!DbcIIIL libm.so.H 0R .libH .libm.so.H KI(IIIID*d D!!3'IIIL libdl.so.2 0R .libH .libdl.so.2 KI(IIIID*d D!33!IIIL libnsl.so.1 0R .libH .libnsl.so.1 KI(IIIID*d D!11dIIIL lib+.so.1 0R .usr.libH .lib+.so.1 KI(IIIID*d D *IDIIIL libssl.so.1.I.I 0R .usr.libH .libssl.so.1.I.I KI(IIIID*d D caJIIIL libcr#pto.so.1.I.I 0R .usr.libH .libcr#pto.so.1.I.I KI(IIIID*d D Jc'IIIL lib(ml2.so.2 0R .usr.libH .lib(ml2.so.2 KI(IIIID*d D !DaIIIL libc.so.H 0R .libH .libc.so.H KI(IIIID*d D 2IeIIIL libpthread.so.I 0R .libH .libpthread.so.I KI(IIIID*d D3**2IIIL .libH .ld,linu(,(JH,H .so.2 KI(IIIID*d DD3e IIIL libaudit.so.1 0R .libH .libaudit.so.1 KI(IIIID*d D3dd'IIIL !a p!upart 0es b"b!"othC-ues ont 0.@? .t. cop".s 0ans !4env"ronne+ent chroot. su"te ? !4"nsta!!at"on 04 apache* "! %aut @uste taper cp .usr.local.m#sql.lib.libm#sqlclient.so.1J .chroot.httpd.usr.local.m#sql.lib cp .usr.libH .libmcr#pt.so. .chroot.httpd.usr.libH cp .libH .libaudit.so.1 .chroot.httpd.libH cp .libH .libpam.so.I .chroot.httpd.libH cp .usr.libH .libc,client.so.I .chroot.httpd.usr.libH cp .usr.libH .libssl.so.1.I.I .chroot.httpd.usr.libH cp .usr.libH .libcr#pto.so.1.I.I .chroot.httpd.usr.libH

1I.!.3 Con*iguration de PHP


n va +o0"%"er +a"ntenant !e %"ch"er .chroot.httpd.usr.local.apache2.con*.httpd.con* en ve"!!ant ? ra@outer &oad"odule php!/module ? !a su"te 0es !"'nes Add5#pe application.(,compress .W Add5#pe application.(,g+ip .g+ .tg+ n ra@oute Add5#pe application.(,httpd,php .php .php3 .php .php! .phtml Add5#pe application.(,httpd,php,source .phps Par a"!!eurs ? !a !"'ne :irector#Inde( inde(.html n ra@outera :irector#Inde( inde(.html inde(.php n re!ance Apache cr.er +a"ntenant !e %"ch"er in*ophp.php contenant XPphp phpin*oKLA PR Que vous p!acere= sous .chroot.httpd.>>>* 0ans !4>FL 0e votre nav"'ateur pr.%.r.* taper http?..localhost.in*ophp.php ou http?..nommachine.in*ophp.php et !? +a'"-ue 0evra"t s4a%%"cher 0es "n%o sur !a con%"'urat"on 0e PHP sur votre systC+e. modules.libphp!.so

Apache+PHP+MySQL

43

http;66www.%un"&.or'

A99KQ9/ Q pour un %onct"onne+ent opt"+a! 0e m#sql avec php* "! %au0ra pr.c"ser !a pos"t"on 0u %"ch"er socBet 0e m#sql 0ans !e %"ch"er php.ini m#sql.de*ault/soc-et 0 .tmp.m#sql.socn va .'a!e+ent +o0"%"er !es para+Ctres su"vants; e(pose/php02** PHP ne 0.!"vrera pas 04"n%or+at"on en r.ponse au& re-uGtes %a"tes par 0es c!"ents. displa#/errors 0 2** PHP ne 0.!"vrera ? !4a%%"cha'e #0ans !e nav"'ateur( aucune erreur et warn"n'. log/errors 0 2n Les erreurs et warn"n's seront "nscr"ts 0ans un %"ch"er 0e !o' error/log 0 :.%"n"t"on 0u %"ch"er 0e !o' .usr.local.apache.log s.php.log *ile/uploads 0 2** :.sact"vat"on 0e !4up!oa0 Kn +ettant ? n !es var"ab!es 04env"ronne+ent* 8K9* P S9* etc. 0ev"ennent register/globals02** auto+at"-ue+ent 0es var"ab!es '!oba!es* ce -u" est potent"e!!e+ent 0an'ereu&* en cons.-uence "! est %orte+ent conse"!!. 0e 0.sact"ver ce para+Ctre

1I.H&ancement automatique
1I.H.1 &ancement automatique de "#sql
Qous pouvons passer ? !a cr.at"on 04un %"ch"er 0e !ance+ent m#sqld -u4on p!acera sous .etc.init.d G<.bin.sh

Apache+PHP+MySQL

44

http;66www.%un"&.or'

G Comments to support ch-con*ig on 7edHat &inu( G ch-con*ig? 23 ! H 3H G description? A )er# *ast and reliable $%& database engine. CH7225/"@$%&0.chroot.m#sql CH7225/PHP0.chroot.httpd $2C3650.tmp.m#sql.soc"@$%&:0.usr.local.m#sql.bin.m#sqld PI:4I&60.tmp.m#sqld.pid CH7225;I:0.usr.sbin.chrootuid echo ,n C m#sqlC case C[1C in startL rm ,* [\CH7225/PHP].[\$2C365] nohup [\CH7225;I:] [\CH7225/"@$%&] m#sql [\"@$%&:] R .de).null 2RB1 B sleep ! BB ln [\CH7225/"@$%&].[\$2C365] [\CH7225/PHP ].[\$2C365] AA stopL -ill ^cat [\CH7225/"@$%&].[\PI:4I&6]^ rm ,r* [\CH7225/"@$%&].[\$2C365] AA SL echo CC echo C;sage? ^basename [I^ \startVstop]C RB2 e( it H AA esac e(it I Pour un !ance+ent auto+at"-ue 0e "#$%& ? !4.tat 0e +arche 3* 4 et 5* on tapera ensu"te ch-con*ig ,,le)el 3 ! m#sql on Kt un arrGt ? !4.tat 0e +arche ,* 1* 2 et 5 ch-con*ig ,,le)el I12H m#sql o**

1I.H.2 &ancement automatique d'Apache


nous pouvons passer ? !a cr.at"on 04un %"ch"er 0e !ance+ent apache -u4on p!acera sous .etc.init.d G<.bin.sh G $tartup script *or the Apache 9eb $er)er G G ch-con*ig? 3 ! J! 1! G description? Apache is a 9orld 9ide 9eb ser)er. It is used to ser)e Q G H5"& *iles and CNI. G processname? httpd CH72250.chroot.httpd H55P:0.usr.local.apache2.bin.httpd PI:4I&60.usr.local.apache2.logs.httpd.pid echo ,n C apacheC case C[1C in startL .usr.sbin.chroot [CH7225 [H55P: AA stopL -ill ^cat [\CH7225].[\PI:4I&6]^ AA SL echo CC echo C;sage? ^basename [I^ \startVstop]C RB2 esac e(it I

e(it H

AA

Pour un !ance+ent auto+at"-ue ? !4.tat 0e +arche 3*4 et 5 on 0o"t nor+a!e+ent taper;

Apache+PHP+MySQL

45

http;66www.%un"&.or'

ch-con*ig ,,le)el 3 ! apache on Kt pour un arrGt ? !4.tat 0e +arche ,* 1* 2 et 5 ch-con*ig ,,le)el I12H apache o**

1I.DInstallation d'un blog >ordpress en local


9ordpress vous per+et 0e cr.er un b!o'. La pa'e 0e t.!.char'e+ent 0e !a vers"on %ranLa"se se trouve sur ce s"te http;66www.wor0pressA%r.net6te!echar'e+ents n y r.cupCre !4arch"ve -u4on 0.co+presse 0"recte+ent sous !e r.perto"re .chroot.httpd.>>>. un+ip >ordpress,3.!.1,*r/47.+ip on reno++e !e r.perto"re >ordpress 0ans un no+ 0e r.perto"re appropr". m) >ordpress blog.-er)ao.org +a"ntenant on va cr.er une base >ordpress et un ut"!"sateur admin>p -u" va pouvo"r acc.0er ? !a base .usr.local.m#sql.bin.m#sql ,u adm#sql ,p 6nter pass>ord? 9elcome to the "#$%& monitor. Commands end >ith A or Qg. @our "#$%& connection id is 3 $er)er )ersion? !.!.2',log $ource distribution Cop#right KcL 2III= 2I12= 2racle and.or its a**iliates. All rights reser)ed. 2racle is a registered trademar- o* 2racle Corporation and.or its a**iliates. 2ther names ma# be trademar-s o* their respecti)e o>ners. 5#pe 'helpA' or 'Qh' *or help. 5#pe 'Qc' to clear the current input statement. m#sqlR C76A56 :A5A8A$6 >ordpressA %uer# 23= 1 ro> a**ected KI=I1 secL m#sqlR N7AM5 A&& P7IOI&6N6$ 2M >ordpress.S 52 Cadmin>pCTClocalhostC ,R I:6M5I4I6: 8@ CmotpasseCA %uer# 23= I ro>s a**ected KI=II secL m#sqlR 4&;$H P7IOI&6N6$A %uer# 23= I ro>s a**ected KI=II secL m#sqlR quit 8#e Ma"ntenant 0ans !e %"ch"er .chroot.httpd.usr.local.apache2.con*.httpd.con* on ve"!!era ? ra@outer X:irector# C.>>>.blog.-er)ao.orgCR 2rder allo>=den# Allo> *rom all X.:irector#R et

Apache+PHP+MySQL

45

http;66www.%un"&.or'

XOirtualHost SR :ocument7oot C.>>>.blog.-er)ao.orgC $er)erMame Cblog.-er)ao.orgC 6rror&og logs.blog.-er)ao.org.error/log Custom&og logs.blog.-er)ao.org.access/log combined X.OirtualHostR on re!ance apache. .etc.init.d.apache stop .etc.init.d.apache start n ra@oute !4>FL b!o'.Bervao.or' 0ans !e %"ch"er .etc.hosts. Ma"ntenant on !ance !4"nter%ace 04a0+"n"strat"on 0e wor0press en +ettant 0ans votre nav"'ateur !4>FL su"vant http?..blog.-er)ao.org.>p,admin.install.php Lors 0e !a con%"'urat"on 0e !a base* !es para+Ctres ? sa"s"r sont A Qo+ 0e !a base 0e 0onn.es >ordpress A /0ent"%"ant admin>p A Mot 0e passe J!e +ot 0e passe pr.a!ab!e+ent %"&.J A H7te 0e !a base 0e 0onn.es !oca!host A Pr.%"&e 0e tab!e >pblog1/ /! su%%"t ensu"te 0e su"vre !es "n0"cat"ons. Pour !e reste vous pouve= consu!ter !es no+breu& s"tes sur >ordpress -u4on peut trouver sur !e net. Pour !4up!oa0 0es photos "! %au0ra +o0"%"er .'a!e+ent !e %"ch"er .chroot.httpd.usr.local.apache2.con*.php.ini en +ettant *ile/uploads 0 2n upload/tmp/dir 0 .>>>.blog.-er)ao.org.>p,content.uploads re!ance= apache

11 Anal#ser les logs ddApache


11.1 Prsentation
1ette pa'e pr.sente 0eu& out"!s pour ana!yser !es !o's 04Apache. Le pre+"er >ebali+er est sVre+ent !e p!us connu* !e 0eu&"C+e a>stats est !e nouveau venu 0ans !e 0o+a"ne* "! 'a'ne ? Gtre connu car "! %ourn"t une "n%or+at"on p!us r"che -ue >ebali+er. Les 0eu& out"!s ont !a part"cu!ar"t. 04a%%"cher !eurs r.su!tats 0ans une pa'e web. A>stats %a"t appe! ? un scr"pt 18/* ce -u" n4est pas !e cas 0e >ebali+er -u" pourra serv"r pour un s"te web s.cur"s. #18/ 0.sact"v.( access"b!e sur "nternet.

11.2 Anal#ser les logs d'Apache a)ec >ebali+er


11.2.1 Prsentation
9ebali+er est un out"! -u" per+et 0e pr.senter 0e +an"Cre synth.t"-ue !es !o's 04 apache sous %or+e 0e pa'es ht+! avec 'raph"-ue. )ous pouve= !e r.cup.rer ? !4>FL www.+run"&.net6weba!"=er6 sous !a %or+e 04une arch"ve tarba!! >ebali+er,2.23,I!,src.tg+ .

Apache+PHP+MySQL

42

http;66www.%un"&.or'

11.2.2 Installation
Pr.a!ab!e+ent on "nsta!!era !es pacBa'es su"vants gd,de)el* +lib1,de)el* libpng,de)el* lib1pegH2,de)el* geopip, de)el et db1,de)el n "nsta!!era .'a!e+ent !a base 0e %tp;66%tp.+run"&.net6pub6weba!"=er6'eo0b6 en tant -ue root on cr.e !e r.perto"re su"vant m-dir .usr.share.Neo:8 0ans !e-ue! on 0.sarch"ve !e tarba!! tar ()*+ >ebali+er,geodb,2I1I1II1.tg+ Ma"ntenant on r.cupCre !es 0rapeau&* on !e 0.co+presse 0ans !e r.perto"re su"vant cd .usr.local.apache2.logs tar ()*+ >ebali+er,*lags.tg+ ce!a va 0onner un r.perto"re *lags= on chan'e !e propr".ta"re en tapant cho>n ,7 root?root *lags. :ans un r.perto"re 0e trava"! pour 0.co+presser !4arch"ve pr"nc"pa!e* on tapera; tar ()*+ >ebali+er,2.23,I!,src.tg+ 1e!a va nous cr.er un r.perto"re >ebali+er,2.23,I! 0ans !e-ue! on tape en tant -ue s"+p!e ut"!"sateur; ..con*igure ,,>ith,language0*rench ,,enable,dns ,,enable,geoip L4opt"on enable,dns per+et 04avo"r !e no+ 0e !a +ach"ne -u" s4est connect. sur !e s"te p!ut7t -ue son a0resse /P* c4est -uan0 +G+e p!us par!ant* enable,geoip per+et 04avo"r sa pos"t"on '.o'raph"-ue. n tape +a"ntenant ma-e et en%"n en tant -ue root ma-e install )o"!? !e r.su!tat m-dir ,p .usr.local.bin m-dir ,p .usr.local.share.man.man1 m-dir ,p .usr.local.etc .usr.bin.install ,c >ebali+er .usr.local.bin.>ebali+er .usr.bin.install ,c >cmgr .usr.local.bin.>cmgr rm ,* .usr.local.bin.>eba+ol)er ln ,s >ebali+er .usr.local.bin.>eba+ol)er .usr.bin.install ,c ,m H >ebali+er.1 .usr.local.share.man.man1.>ebali+er.1 .usr.bin.install ,c ,m H >cmgr.1 .usr.local.share.man.man1.>cmgr.1 rm ,* .usr.local.share.man.man1.>eba+ol)er.1 ln ,s >ebali+er.1 .usr.local.share.man.man1.>eba+ol)er.1 .usr.bin.install ,c ,m H sample.con* .usr.local.etc.>ebali+er.con*.sample 1o++e tou@ours s" !es che+"ns ne vous p!a"sent pas; 0onn.es 0e '.o!oca!"sat"on -u4on peut trouver par "c"

Apache+PHP+MySQL

43

http;66www.%un"&.or'

con*igure ,,help

11.2.3 Con*iguration
Ma"ntenant on cr.e !e %"ch"er 0e con%"'urat"on en partant 04un %"ch"er e&e+p!e -u" a .t. "nsta!!. sous .usr.local.etc cp .usr.local.etc.>ebali+er.con*.sample .usr.local.etc.>ebali+er.con* :ans ce %"ch"er on 0o"t 0.%"n"r !es para+Ctres su"vants* !e no+ 0u %"ch"er 0e !o' 04 apache ? ana!yser &og4ile .usr.local.apache2.logs.lena.hoarau.org.access/log

!4e+p!ace+ent 0es %"ch"ers '.n.r.s par >ebali+er 2utput:ir .usr.local.apache2.logs.>ebali+er

!e no+ 0u s"te ? ana!yser HostMame lena.-er)ao.org

!es %"ch"ers -u" seront pr"s en co+pte 0ans !es stats Page5#pe Page5#pe GPage5#pe Page5#pe GPage5#pe htmS cgi phtml php pl

!4e+p!ace+ent oO se trouvera !a base 0e 0onn.e n.cessa"re ? !a r.so!ut"on :QS :M$Cache dns/cache.db

!e no+bre 0e process :M$Children ! on act"ve !a base 0e 0onn.es 0e '.o!oca!"sat"on Neo:8 #es e+p!ace+ent 0e !a base Neo:8:atabase .usr.share.Neo:8.Neo:8.dat on act"ve !es "n%or+at"ons '.o'raph"-ues !".es au& a0resses /P NeoIP #es e+p!ace+ent 0e !a base NeoIP:atabase .usr.share.NeoIP.NeoIP.dat on act"ve !4a%%"cha'e 0es 0rapeau&

Apache+PHP+MySQL

49

http;66www.%un"&.or'

Countr#4lags #es e+p!ace+ent 0u r.perto"re 0es 0rapeau& 4lag:ir .usr.local.apache2.logs.*lags Pour -ue vos propres re-uGtes ne so"ent pas pr"ses en co+pte pour !es v"s"tes #re+p!ace= par votre no+ 0e 0o+a"ne( Hide$ite S-er)ao.*r

Pour -ue vos v"s"tes ne so"ent pas pr"ses en co+pte pour !e co+pte 0es Jre%erersJ Pour !e 0o+a"ne !oca! Hide7e*errer -er)ao.*r

Pour !es accCs 0"rects Hide7e*errer :irect 7equest

pour cacher !es !"ens ? part"r 0e votre s"te Hide7e*errer >>>.*uni(.org pour cacher !es !"ens ? part"r 0e 'oo'!e Hide7e*errer google

11.2.

;tilisation

/! su%%"t 0e taper >ebali+er* par 0.%aut "! !"ra !es para+Ctres pr.sents 0ans !e %"ch"er .usr.local.etc.>ebali+er.con* 9ebali+er O2.23,I! K&inu( 2.H.33.!,des-top,2mnb (JH/H L 4rench ;sing log*ile .usr.local.apache2.logs.lena.hoarau.org.access/log Kcl*L :M$ &oo-up K!L? 12 addresses in H seconds= 2.sec ;sing :M$ cache *ile dns/cache.db ;sing 9ebali+er Neo:8 2I1I1II1,1 Creating output in .usr.local.apache2.logs.>ebali+er Hostname *or reports is 'lena.-er)ao.org' Histor# *ile not *ound... Nenerating report *or $eptembre 2I1I Nenerating report *or 2ctobre 2I1I $a)ing histor# in*ormation... Nenerating summar# report 231 records in 1 seconds= 231.sec S"non !a synta&e est !a su"vante >ebali+er .chemin,dacces.access/log 1e!a nous cr.e ? !4en0ro"t oO vous ave= tap. !a co++an0e !es %"ch"ers ht+! su"vants; inde(.html usage/2II111.html

Apache+PHP+MySQL

5,

http;66www.%un"&.or'

Kt !es 'raph"-ues su"vants; ctr#/usage/2II111.png hourl#/usage/2II111.png dail#/usage/2II111.png usage.png vo"!? ce -ue La 0onne

Apache+PHP+MySQL

51

http;66www.%un"&.or'

$tatistiques d'accYs asteri(.-er)ao.*r


Priode du rsum? 12 derniers mois Nnr le 23,Zun,2II2 ID? 3 5AH5

7sum par mois "ois Mu"n 2,,2 5otau( "o#enne 1ournaliYre 4ichiers Pages Oisites 3 2 2 1 5otau( mensuels Oisites Pages 4ichiers 1 1 2 2 2 2

Hits

$ites 1

3o 4

Hits 3 3

8enerate0 by Eeba!"=er )ers"on 2.,1

Apache+PHP+MySQL

52

http;66www.%un"&.or'

Kt en c!"-uant sur Mu"n 2,,2 on obt"ent

$tatistiques d'accYs asteri(.-er)ao.*r


Priode du rsum? Zuin 2II2 Nnr le 23,Zun,2II2 ID? 3 5AH5 WStat"st"-ues @ourna!"CresX WStat"st"-ues hora"resX W>FLsX WPa'es 04entr.eX WPa'es 0e sort"eX WS"tesX WPaysX $tatistiques mensuelles pour Zuin 2II2 9ota! 0es H"ts 9ota! 0es Y"ch"ers 9ota! Pa'es 9ota! )"s"tes 9ota! 0es Zo 9ota! 0es S"tes un"-ues 9ota! 0es >FLs un"-ues . H"ts par Heure H"ts par Mour Y"ch"ers par Mour Pa'es par Mour )"s"tes par Mour Z ctets par Mour Hits par code de rponse 1o0e 2,, A Z 1o0e 3,4 A Qot Mo0"%"e0 2 1 "o#. I 3 2 2 1 3 2 2 1

1 2 "a( 3 3 2 2 1

Apache+PHP+MySQL

53

http;66www.%un"&.or'

$tatistiques 1ournaliYres pour Zuin 2II2 Zour 22 3 Hits


1,,.,,[

4ichiers 2
1,,.,,[

Pages 2
1,,.,,[

Oisites 1
1,,.,,[

$ites 1
1,,.,,[

3o
1,,.,,[

$tatistiques horaires pour Zuin 2II2 Heure I Hits


"o#. 5otal "o#. ,.,,[

4ichiers
5otal "o#. ,.,,[

Pages
5otal "o#. ,.,,[

3o
5otal

I I

I I

I I

I I

,.,,[

Apache+PHP+MySQL

54

http;66www.%un"&.or'

1 2 3 ! H D J ' 1I 11 12 13 1 1! 1H 1D 1J 1' 2I 21 22 23

I I I I I I I I I I I I I I I 3 I I I I I I I

I I I I I I I I I I I I I I I 3 I I I I I I I

,.,,[ ,.,,[ ,.,,[ ,.,,[ ,.,,[ ,.,,[ ,.,,[ ,.,,[ ,.,,[ ,.,,[ ,.,,[ ,.,,[ ,.,,[ ,.,,[ ,.,,[ 1,,.,,[ ,.,,[ ,.,,[ ,.,,[ ,.,,[ ,.,,[ ,.,,[ ,.,,[

I I I I I I I I I I I I I I I 2 I I I I I I I

I I I I I I I I I I I I I I I 2 I I I I I I I

,.,,[ ,.,,[ ,.,,[ ,.,,[ ,.,,[ ,.,,[ ,.,,[ ,.,,[ ,.,,[ ,.,,[ ,.,,[ ,.,,[ ,.,,[ ,.,,[ ,.,,[ 1,,.,,[ ,.,,[ ,.,,[ ,.,,[ ,.,,[ ,.,,[ ,.,,[ ,.,,[

I I I I I I I I I I I I I I I 2 I I I I I I I

I I I I I I I I I I I I I I I 2 I I I I I I I

,.,,[ ,.,,[ ,.,,[ ,.,,[ ,.,,[ ,.,,[ ,.,,[ ,.,,[ ,.,,[ ,.,,[ ,.,,[ ,.,,[ ,.,,[ ,.,,[ ,.,,[ 1,,.,,[ ,.,,[ ,.,,[ ,.,,[ ,.,,[ ,.,,[ ,.,,[ ,.,,[

I I I I I I I I I I I I I I I I I I I I I I

I I I I I I I I I I I I I I I I I I I I I I

,.,,[ ,.,,[ ,.,,[ ,.,,[ ,.,,[ ,.,,[ ,.,,[ ,.,,[ ,.,,[ ,.,,[ ,.,,[ ,.,,[ ,.,,[ ,.,,[ ,.,,[ 1,,.,,[ ,.,,[ ,.,,[ ,.,,[ ,.,,[ ,.,,[ ,.,,[ ,.,,[

5op 2 sur un total de 2 ;7&s G 1 2 2 1 Hits


55.52[ 33.33[

3o 1 2
33.5,[ 6 51.5,[ 6apacheDpb.'"%

;7&

5op 2 sur un total de 2 ;7&s par 3o G 1 2 1 2 Hits


33.33[ 55.52[

3o 2 1
51.5,[ 6apacheDpb.'"% 33.5,[ 6

;7&

5op 1 sur un total de 1 pages d'entre G 1 2 Hits


55.52[

Oisites 1
1,,.,,[ 6

;7&

5op 1 sur un total de 1 sites G Hits 4ichiers 3o Oisites Mom d'hate

Apache+PHP+MySQL

55

http;66www.%un"&.or'

1,,.,,[

1,,.,,[

1,,.,,[

1,,.,,[ 192.153.25.25

5op 1 sur un total de 1 sites par 3o G 1 3 Hits


1,,.,,[

4ichiers 2
1,,.,,[

3o
1,,.,,[

Oisites 1

Mom d'hate

1,,.,,[ 192.153.25.25

5op 1 sur un total de 1 pa#s G 1 3 Hits


1,,.,,[

4ichiers 2
1,,.,,[

3o

Pa#s
1,,.,,[ QonAreso!u6/nconnu

8enerate0 by Eeba!"=er )ers"on 2.,1 S" La ne vous conv"ent pas* vous pouve= rentrer 0es opt"ons ? >ebali+er* pour en avo"r !a !"ste; >ebali+er ,help >ebali+er peut +a"ntenant Gtre appe!. r.'u!"Cre+ent avec cron* sur +a Man0r"va* @4a" ra@out. !e %"ch"er >ebali+er #avec 0es 0ro"ts en e&.cut"on( sous .etc.cron.dail# G<.bin.bash cd .usr.local.apache.>ebali+er.online .usr.local.bin.>ebali+er .usr.local.apache.logs.online,access/log cd .usr.local.apache.>ebali+er.ohoarau .usr.local.bin.>ebali+er .usr.local.apache.logs.ohoarau,access/log Les stats seront 0onc +"s ? @our tous !es @ours. M256 s" au !ance+ent 0e vous obtene= co++e erreur

Apache+PHP+MySQL

55

http;66www.%un"&.or'

7eading histor# *ile... >ebali+er.hist 6rror? $-ipping o)ersi+ed log record 6rror? $-ipping o)ersi+ed log record 6rror? $-ipping o)ersi+ed log record 6rror? $-ipping o)ersi+ed log record 6rror? $-ipping o)ersi+ed log record 6rror? $-ipping o)ersi+ed log record 14est nor+a! c4est @uste un pet"t +a!"n -u" a envoy. une re-uGte hyper !on'ue pour %a"re to+ber votre serveur* "! se+b!era"t -ue //S so"t sens"b!e ? ce 'enre 04atta-ue. 9ebali+er se contente 04"'norer ce 'enre 0e stats.

11.3Anal#ser les logs d'Apache a)ec a>stats


11.3.1 Prsentation
A>stat est un out"! pour ana!yser !es !o's 04 apache* "! est p!us r"che -ue >ebali+er* vous pouve= !e trouver ? !4>FL awstats.source%or'e.net * c4est une arch"ve au %or+at tarba!! a>stats,D.1.tg+ -u4on r.cup.rera.

11.3.2 Installation et con*iguration


n 0.co+presse !4arch"ve en tapant ; tar ()*+ a>stats,D.1.tg+ 1e!a va nous 0onner !e r.perto"re a>stats,D.1. :ans un pre+"er te+ps on va 0evo"r +o0"%"er !.'Cre+ent !e %"ch"er 0e con%"' 04apache httpd.con* 0ans !e cas oO vous ut"!"se= 0es h7tes v"rtue!s* vo"c" un e&e+p!e 0e con%"'urat"on XOirtualHost 1'2.1HJ.13.11?123 R $er)erMame *uni(.homelinu(.org :ocument7oot .roger.homepage.online 6rror&og logs.online,error/log 5rans*er&og logs.online,access/log Custom&og logs.online,access/log combined X.OirtualHostR n 0o"t +ettre combined pour !e para+Ctre Custom&og. Q4oub!"e= pas 0e re!ancer apache en cas 0e +o0"%"cat"on .etc.rc.d.init.d.httpd restart Ma"ntenant on 0o"t cr.er !e r.perto"re .etc.a>stats m-dir .etc.a>stats Pour !a con%"'urat"on 04a>stats on "ra 0ans !e r.perto"re tools cd a>stats,D.1.tools :ans !e cas 04une +"se ? @our on tapera perl a>stats/updateall.pl ,con*igdir0.etc.a>stats. no> ,a>statsprog0.chemin,absolu.a>stats,D.1.>>>root.cgi,bin.a>stats.pl

.etc.a>stats est !e r.perto"re oO se trouve !es %"ch"ers 0e con%"'urat"on 0e vos serveurs. )o"!? !e r.su!tat 7unning 'C.chemin,absolu.a>stats,D.1.>>>root.cgi,bin.a>stats.plC ,update ,con*ig0*uni(.homelinu(.org?123 ,con*igdir0C.etc.a>stats.C' to update con*ig *uni(.homelinu(.org?123

Apache+PHP+MySQL

52

http;66www.%un"&.or'

;pdate *or con*ig C.etc.a>stats.a>stats.*uni(.homelinu(.org?123 .con*C 9ith data in log *ile C.usr.local.apache.logs.online,access/logC... Phase 1 ? 4irst b#pass old records= searching ne> record... :irect access a*ter last parsed record Ka*ter line 2H'HJL Zumped lines in *ile? 2H'HJ 4ound 2H'HJ alread# parsed records. Parsed lines in *ile? 13I 4ound !2 dropped records= 4ound H! corrupted records= 4ound I old records= 4ound 13 ne> quali*ied records. 7unning 'C.chemin,absolu.a>stats,H.!.>>>root.cgi,bin.a>stats.plC ,con*ig0ohoarau.homelinu(.org?123 ,con*igdir0C.etc.a>stats.C' to ohoarau.homelinu(.org?123 ;pdate *or con*ig C.etc.a>stats.a>stats.ohoarau.homelinu(.org?123 .con*C 9ith data in log *ile C.usr.local.apache.logs.ohoarau,access/logC... Phase 1 ? 4irst b#pass old records= searching ne> record... :irect access a*ter last parsed record Ka*ter line 11D HL Zumped lines in *ile? 11D H 4ound 11D H alread# parsed records. Parsed lines in *ile? I 4ound I dropped records= 4ound I corrupted records= 4ound I old records= 4ound I ne> quali*ied records. 7unning 'C.chemin,absolu.a>stats,H.!.>>>root.cgi,bin.a>stats.plC ,update ,con*igdir0C.etc.a>stats.C' to update con*ig oli)ier.*uni(.org ;pdate *or con*ig C.etc.a>stats.a>stats.oli)ier.*uni(.org.con*C 9ith data in log *ile C.usr.local.apache.logs.oli)ier.oli)ier.*uni(.org.logC... Phase 1 ? 4irst b#pass old records= searching ne> record... :irect access a*ter last parsed record Ka*ter line HI3 L Zumped lines in *ile? HI3 4ound HI3 alread# parsed records. Parsed lines in *ile? I 4ound I dropped records= 4ound I corrupted records= 4ound I old records= 4ound I ne> quali*ied records. 7unning 'C.chemin,absolu.a>stats,H.!.>>>root.cgi,bin.a>stats.plC ,update ,con*igdir0C.etc.a>stats.C' to update con*ig >>>.*uni(.org ;pdate *or con*ig C.etc.a>stats.a>stats.>>>.*uni(.org.con*C 9ith data in log *ile C.usr.local.apache.logs.*uni(.>>>.*uni(.org.logC... Phase 1 ? 4irst b#pass old records= searching ne> record... :irect access a*ter last parsed record Ka*ter line 13'JDL Zumped lines in *ile? 13'JD 4ound 13'JD alread# parsed records. Parsed lines in *ile? I 4ound I dropped records= 4ound I corrupted records= 4ound I old records= 4ound I ne> quali*ied records update ,update con*ig

,con*ig0oli)ier.*uni(.org

,con*ig0>>>.*uni(.org

:ans !e cas 04une pre+"Cre "nsta!!at"on* on tapera #0ans !4e&e+p!e c"A0essous* @e 0"spose 0e 0eu& serveurs Apache #vers"on 1.3 et 2( avec !es serveurs web v"rtue!s http?..*uni(.homelinu(.org?123 et http?..ohoarau.homelinu(.org?123 ( en tant -ue root perl a>stats/con*igure.pl

Apache+PHP+MySQL

53

http;66www.%un"&.or'

vo"!? !e r.su!tat ,,,,, A9$tats a>stats/con*igure 1.I Kbuild 1.JL KcL &aurent :estailleur ,,,,, 5his tool >ill help #ou to con*igure A9$tats to anal#+e statistics *or one >eb ser)er. @ou can tr# to use it to let it do all that is possible in A9$tats setup= ho>e)er *ollo>ing the step b# step manual setup documentation Kdocs.inde(.htmlL is o*ten a better idea. Abo)e all i*? , @ou are not an administrator user= , @ou >ant to anal#+e do>nloaded log *iles >ithout >eb ser)er= , @ou >ant to anal#+e mail or *tp log *iles instead o* >eb log *iles= , @ou need to anal#+e load balanced ser)ers log *iles= , @ou >ant to 'understand' all possible >a#s to use A9$tats... 7ead the A9$tats documentation Kdocs.inde(.htmlL. ,,,,,R 7unning 2$ detected? &inu(= 8$: or ;ni( 9arning? A9$tats standard director# on &inu( 2$ is '.usr.local.a>stats'. I* #ou >ant to use standard director#= #ou should *irst mo)e all content o* A9$tats distribution *rom current director#? .usr.local.linu(.>eb.a>stats,D.1 to standard director#? .usr.local.a>stats And then= run con*igure.pl *rom this location. :o #ou >ant to continue setup *rom this M2M standard director# E#MF P # "c" "! trouve !es %"ch"ers 0e con%"'urat"on 0e +es 0eu& serveurs Apache ,,,,,R Chec- *or >eb ser)er install 4ound 9eb ser)er Apache con*ig *ile '.usr.local.apache.con*.httpd.con*' 4ound 9eb ser)er Apache con*ig *ile '.usr.local.apache2.con*.httpd.con*' /! +o0"%"e !es 0eu& %"ch"ers 0e con%"'urat"on* "! +o0"%"e .'a!e+ent !es %"ch"ers pour +ettre ? @our !e %or+at 04arch"va'e 0es !o's ,,,,,R Chec- and complete >eb ser)er con*ig *ile '.usr.local.apache2.con*.httpd.con*' Add 'X:irector#R' directi)e A9$tats directi)es added to Apache con*ig *ile. ,,,,,R Chec- and complete >eb ser)er con*ig *ile '.usr.local.apache.con*.httpd.con*' 9arning? @ou Apache con*ig *ile contains directi)es to >rite 'common' log *iles 5his means that some *eatures can't >or- Kos= bro>sers and -e#>ords detectionL. :o #ou >ant me to setup Apache to >rite 'combined' log *iles E#.MF P # Add 'Alias .a>statsclasses C.usr.local.linu(.>eb.a>stats,D.1.>>>root.classes.C' Add 'Alias .a>statscss C.usr.local.linu(.>eb.a>stats,D.1.>>>root.css.C' Add 'Alias .a>statsicons C.usr.local.linu(.>eb.a>stats,D.1.>>>root.icon.C' Add '$criptAlias .a>stats. C.usr.local.linu(.>eb.a>stats,D.1.>>>root.cgi,bin.C' Add 'X:irector#R' directi)e A9$tats directi)es added to Apache con*ig *ile. ,,,,,R ;pdate model con*ig *ile '.usr.local.linu(.>eb.a>stats,D.1.>>>root.cgi,bin.a>stats.model.con*' 4ile a>stats.model.con* updated. /! +et ? @our son propre %"ch"er 0e con%"'urat"on ,,,,,R ;pdate model con*ig *ile '.usr.local.linu(.>eb.a>stats,D.1.>>>root.cgi,bin.a>stats.model.con*' 4ile a>stats.model.con* updated. ,,,,,R Meed to create a ne> con*ig *ile P :o #ou >ant me to build a ne> A9$tats con*ig.pro*ile *ile Krequired i* *irst installL E#.MF P

Apache+PHP+MySQL

59

http;66www.%un"&.or'

on "n0"-ue "c" !4>FL 0u serveur web ? ana!yser #a0resse;port( ,,,,,R :e*ine con*ig *ile name to create 9hat is the name o* #our >eb site or pro*ile anal#sis P 6(ample? >>>.m#site.com 6(ample? demo @our >eb site= )irtual ser)er or pro*ile name? R *uni(.homelinu(.org?123 :.%"n"t"on 0u che+"n pour stocBer !es %"ch"ers 0e con%"'urat"on pour cha-ue serveur ? ana!yser ,,,,,R :e*ine con*ig *ile path In >hich director# do #ou plan to store #our con*ig *ileKsL P :e*ault? .etc.a>stats :irector# path to store con*ig *ileKsL K6nter *or de*aultL? R 1r.at"on 0u %"ch"er 0e con%"'urat"on 0u serveur +ent"onn. p!us haut ,,,,,R Create con*ig *ile '.etc.a>stats.a>stats.*uni(.homelinu(.org?123 .con*' Con*ig *ile .etc.a>stats.a>stats.*uni(.homelinu(.org?123 .con* created. Apache est re!anc. auto+at"-ue+ent ,,,,,R 7estart 9eb ser)er >ith '.sbin.ser)ice httpd restart' .etc.init.d.httpd restart? httpd restarted ,,,,,R Add update process inside a scheduler $orr#= con*igure.pl does not support automatic add to cron #et. @ou can do it manuall# b# adding the *ollo>ing command to #our cron? .usr.local.linu(.>eb.a>stats,D.1.>>>root.cgi,bin.a>stats.pl ,update ,con*ig0*uni(.homelinu(.org?123 2r i* #ou ha)e se)eral con*ig *iles and pre*er ha)ing onl# one command? .usr.local.linu(.>eb.a>stats,D.1.tools.a>stats/updateall.pl no> Press 6M567 to continue... A $I"P&6 con*ig *ile has been created? .etc.a>stats.a>stats.*uni(.homelinu(.org?123 .con* @ou should ha)e a loo- inside to chec- and change manuall# main parameters. @ou can then manuall# update #our statistics *or '*uni(.homelinu(.org?123 ' >ith command? R perl a>stats.pl ,update ,con*ig0*uni(.homelinu(.org?123 @ou can also read #our statistics *or '*uni(.homelinu(.org?123 ' >ith ;7&? R http?..localhost.a>stats.a>stats.plPcon*ig0*uni(.homelinu(.org?123 Press 6M567 to *inish... /! a cr.. un %"ch"er 0e con%"'urat"on pour !e s"te concern. .etc.a>stats.a>stats.*uni(.homelinu(.org?123 .con* 0ans ce %"ch"er @4a" +o0"%". !es para+Ctres su"vants; A 1e!u" -u" "n0"-ue !e che+"n 0u %"ch"er 0e !o' brut ? ana!yser &og4ile0C.usr.local.apache.logs.online,access/logC A pour act"ver !a r.so!ut"on 0e no+ :QS :M$&oo-up01 A 1e!u" -u" cont"en0ra !es 0onn.es obtenues

Apache+PHP+MySQL

5,

http;66www.%un"&.or'

:ir:ata0C.usr.local.)ar.a>statsC A Pour "n0"-uer !e %"ch"er "n0e& 0e votre s"te :e*ault4ile0Cinde(.phpC A Pour "'norer !es +arch"nes 0e votre 0o+a"ne $-ipHosts0C12D.I.I.1 76N6bE_1'2Q.1HJQ.13Q.F 76N6bEQ.-er)aoQ.*r[FC A S" votre s"te est "0ent"%". par une autre >FL "! %aut !a ra@outer "c" #+ettre un espace co++e cha+p s.parateur( HostAliases0C*uni(.homelinu(.org?123 C Pense= ? cr.er pr.a!ab!e+ent ce r.perto"re m-dir .usr.local.)ar.a>stats Pour vo"r s" tout +arche on se p!ace +a"ntenant en tant -ue root sous a>stats,D.1.>>>root.cgi,bin et on tape ..a>stats.pl ,con*ig0*uni(.homelinu(.org?123 ,update )o"!? !e r.su!tat Create.;pdate database *or con*ig C.etc.a>stats.a>stats.>>>.online.-er)ao.*r.con*C b# A9$tats )ersion D.1 Kbuild 1.' 3L 4rom data in log *ile C.usr.local.apache2.logs.online,access/logC... Phase 1 ? 4irst b#pass old records= searching ne> record... $earching ne> records *rom beginning o* log *ile... Phase 2 ? Mo> process ne> records K4lush histor# on dis- a*ter 2IIII hostsL... Zumped lines in *ile? I Parsed lines in *ile? 2!! 4ound dropped records= 4ound H corrupted records= 4ound I old records= 4ound 2 ! ne> quali*ied records. Sur !es vers"ons pr.c.0entes "! y ava"t un !.'er bu'* vo"!? une !"'ne typ"-ue 0e !o' 1'2.1HJ.I.11 , , E1'.4eb.2II ?1I?!J?1D UI1IIF CN65 .images.1ournal.gi* H55P.1.1C 3I , Chttp?..*uni(.homelinu(.org?123 .*r.linu(.inde(.phpPre*0tipsBpage0menuC C"o+illa.!.I Kb11A ;A &inu( iHJHA *r,47A r)?1. L Nec-o.2I I3IH3IC r par%o"s Apache arch"ve cec" 1'2.1HJ.I.11 , , E1'.4eb.2II ?1I?!J?2 UI1IIF CN65 . H55P.1.1C 2II 1D '3 A 0.%aut 04"n%or+at"on "! !a"sse 0es cha+ps v"0es et a>stats n4appr.c"e 'uCre #"! n4ana!yse pas !es !o's...(. Me n4a" pas !e recu! su%%"sant pour savo"r s" La .ta"t corr"'. avec !a 5.3. S" vous ave= un 0eu&"C+e s"te v"rtue!* cr.er un autre %"ch"er .etc.a>stats.a>stats.mon,domaine,)irtuel.con* sur !e +G+e +o0C!e -ue pr.c.0e++ent. :ans +on cas "! su%%"t 0e taper cp .etc.a>stats.a>stats.*uni(.homelinu(.org?123 .con* .etc.a>stats.a>stats.ohoarau.homelinu(.org?123 .con*

Apache+PHP+MySQL

51

http;66www.%un"&.or'

:ans ce %"ch"er pense= ? +o0"%"er !es para+Ctres pour !4>FL et !e %"ch"er 0e !o's 04Apache ? ana!yser. A noter -ue vu !a +.tho0e e+p!oy.e #vo"r chap"tre su"vant( pour ut"!"ser a>stats* @4a" suppr"+. !es !"'nes -u4a>stats ? ra@outer 0ans +es %"ch"ers 0e con%"'urat"on 04Apache. S" vous vou!e= ut"!"ser a>stats en tant -ue c'"Ab"n access"b!e 04Apache* vous 0eve= !a"sser ces !"'nes.

11.3.3 ;tilisation
)o"!? co++ent @4ut"!"se a>stats* @4a" cr.. un %"ch"er a>stats #0ro"t e&.cutab!e( sous .etc.cron.dail# -u" s4e&.cute 0onc tous !es @ours et per+et 0e r.a!"ser !es stats pour +es 0eu& a0resses web v"rtue!!es G<.bin.bash .usr.local.linu(.>eb.a>stats,D.1.tools.a>stats/buildstaticpages.pl ,con*ig0ohoarau.homelinu(.org?123 ,update ,lang0*r ,dir0.usr.local.apache2.htdocs.a>stats.ohoarau ,a>statsprog0.usr.local.linu(.>eb.a>stats,H.!.>>>root.cgi,bin.a>stats.pl .usr.local.linu(.>eb.a>stats,D.1.tools.a>stats/buildstaticpages.pl ,con*ig0*uni(.homelinu(.org?123 ,update ,lang0*r ,dir0.usr.local.apache2.htdocs.a>stats.online ,a>statsprog0.usr.local.linu(.>eb.a>stats, H.!.>>>root.cgi,bin.a>stats.pl L4opt"on ,dir per+et 0e sauve'ar0er sous %or+e ht+! !es stat"st"-ues obtenus. Pour ter+"ner !e r.perto"re "con 04a>stats 0o"t Gtre access"b!e sur votre serveur web* pour ce!a 0ans !e %"ch"er 0e con%"'urat"on 04 Apache* @4a" ra@out. !es 0"rect"ves su"vantes Alias .a>statsicons. C.usr.local.linu(.>eb.a>stats,D.1.>>>root.icon.C X:irector# C.usr.local.linu(.>eb.a>stats,D.1.>>>root.iconCR 2ptions Inde(es "ultiOie>s Allo>2)erride Mone 2rder allo>=den# Allo> *rom all X.:irector#R )ous re+p!acere= b"en sVr par !e che+"n en abso!u 04 a>stats. Par a"!!eurs @4a" +"s !es 0ro"ts -u" a!!a"ent b"en pour !e r.perto"re 04a>stats chmod D!! a>stats,D.1. )o"!? ce -ue La 0onne 0ans @e !ance +on scr"pt .etc.cron.dail#.a>stats &aunch update process ,con*ig0ohoarau.homelinu(.org?123 8uild main page? ,con*ig0ohoarau.homelinu(.org?123 8uild alldomains page? ,con*ig0ohoarau.homelinu(.org?123 8uild allhosts page? ,con*ig0ohoarau.homelinu(.org?123 8uild lasthosts page? ,con*ig0ohoarau.homelinu(.org?123 8uild un-no>nip page? ,con*ig0ohoarau.homelinu(.org?123 8uild allrobots page? ,con*ig0ohoarau.homelinu(.org?123 8uild lastrobots page? ,con*ig0ohoarau.homelinu(.org?123 8uild session page? ,con*ig0ohoarau.homelinu(.org?123 8uild urldetail page? ,con*ig0ohoarau.homelinu(.org?123 8uild urlentr# page? ? C.usr.local.linu(.>eb.a>stats,D.1.>>>root.cgi,bin.a>stats.plC ,update ,con*igdir0 C.usr.local.linu(.>eb.a>stats,D.1.>>>root.cgi,bin.a>stats.plC ,staticlin-s ,lang0*r ,output C.usr.local.linu(.>eb.a>stats,D.1.>>>root.cgi,bin.a>stats.plC ,staticlin-s ,lang0*r ,output0alldomains C.usr.local.linu(.>eb.a>stats,D.1.>>>root.cgi,bin.a>stats.plC ,staticlin-s ,lang0*r ,output0allhosts C.usr.local.linu(.>eb.a>stats,D.1.>>>root.cgi,bin.a>stats.plC ,staticlin-s ,lang0*r ,output0lasthosts C.usr.local.linu(.>eb.a>stats,D.1.>>>root.cgi,bin.a>stats.plC ,staticlin-s ,lang0*r ,output0un-no>nip C.usr.local.linu(.>eb.a>stats,D.1.>>>root.cgi,bin.a>stats.plC ,staticlin-s ,lang0*r ,output0allrobots C.usr.local.linu(.>eb.a>stats,D.1.>>>root.cgi,bin.a>stats.plC ,staticlin-s ,lang0*r ,output0lastrobots C.usr.local.linu(.>eb.a>stats,D.1.>>>root.cgi,bin.a>stats.plC ,staticlin-s ,lang0*r ,output0session C.usr.local.linu(.>eb.a>stats,D.1.>>>root.cgi,bin.a>stats.plC ,staticlin-s ,lang0*r ,output0urldetail C.usr.local.linu(.>eb.a>stats,D.1.>>>root.cgi,bin.a>stats.plC

Apache+PHP+MySQL

52

http;66www.%un"&.or'

,con*ig0ohoarau.homelinu(.org?123 ,staticlin-s ,lang0*r ,output0urlentr# 8uild urle(it page? C.usr.local.linu(.>eb.a>stats,D.1.>>>root.cgi,bin.a>stats.plC ,con*ig0ohoarau.homelinu(.org?123 ,staticlin-s ,lang0*r ,output0urle(it 8uild osdetail page? C.usr.local.linu(.>eb.a>stats,D.1.>>>root.cgi,bin.a>stats.plC ,con*ig0ohoarau.homelinu(.org?123 ,staticlin-s ,lang0*r ,output0osdetail 8uild un-no>nos page? C.usr.local.linu(.>eb.a>stats,D.1.>>>root.cgi,bin.a>stats.plC ,con*ig0ohoarau.homelinu(.org?123 ,staticlin-s ,lang0*r ,output0un-no>nos 8uild bro>serdetail page? C.usr.local.linu(.>eb.a>stats,D.1.>>>root.cgi,bin.a>stats.plC ,con*ig0ohoarau.homelinu(.org?123 ,staticlin-s ,lang0*r ,output0bro>serdetail 8uild un-no>nbro>ser page? C.usr.local.linu(.>eb.a>stats,D.1.>>>root.cgi,bin.a>stats.plC ,con*ig0ohoarau.homelinu(.org?123 ,staticlin-s ,lang0*r ,output0un-no>nbro>ser 8uild re*ererse page? C.usr.local.linu(.>eb.a>stats,D.1.>>>root.cgi,bin.a>stats.plC ,con*ig0ohoarau.homelinu(.org?123 ,staticlin-s ,lang0*r ,output0re*ererse 8uild re*ererpages page? C.usr.local.linu(.>eb.a>stats,D.1.>>>root.cgi,bin.a>stats.plC ,con*ig0ohoarau.homelinu(.org?123 ,staticlin-s ,lang0*r ,output0re*ererpages 8uild -e#phrases page? C.usr.local.linu(.>eb.a>stats,D.1.>>>root.cgi,bin.a>stats.plC ,con*ig0ohoarau.homelinu(.org?123 ,staticlin-s ,lang0*r ,output0-e#phrases 8uild -e#>ords page? C.usr.local.linu(.>eb.a>stats,D.1.>>>root.cgi,bin.a>stats.plC ,con*ig0ohoarau.homelinu(.org?123 ,staticlin-s ,lang0*r ,output0-e#>ords 8uild errors I page? C.usr.local.linu(.>eb.a>stats,D.1.>>>root.cgi,bin.a>stats.plC ,con*ig0ohoarau.homelinu(.org?123 ,staticlin-s ,lang0*r ,output0errors I 2I *iles built. "ain H5"& page is 'a>stats.ohoarau.homelinu(.org?123 .html'. &aunch update process ? C.usr.local.linu(.>eb.a>stats,D.1.>>>root.cgi,bin.a>stats.plC ,con*ig0*uni(.homelinu(.org?123 ,update ,con*igdir0 8uild main page? C.usr.local.linu(.>eb.a>stats,D.1.>>>root.cgi,bin.a>stats.plC ,con*ig0*uni(.homelinu(.org?123 ,staticlin-s ,lang0*r ,output 8uild alldomains page? C.usr.local.linu(.>eb.a>stats,D.1.>>>root.cgi,bin.a>stats.plC ,con*ig0*uni(.homelinu(.org?123 ,staticlin-s ,lang0*r ,output0alldomains 8uild allhosts page? C.usr.local.linu(.>eb.a>stats,D.1.>>>root.cgi,bin.a>stats.plC ,con*ig0*uni(.homelinu(.org?123 ,staticlin-s ,lang0*r ,output0allhosts 8uild lasthosts page? C.usr.local.linu(.>eb.a>stats,D.1.>>>root.cgi,bin.a>stats.plC ,con*ig0*uni(.homelinu(.org?123 ,staticlin-s ,lang0*r ,output0lasthosts 8uild un-no>nip page? C.usr.local.linu(.>eb.a>stats,D.1.>>>root.cgi,bin.a>stats.plC ,con*ig0*uni(.homelinu(.org?123 ,staticlin-s ,lang0*r ,output0un-no>nip 8uild allrobots page? C.usr.local.linu(.>eb.a>stats,D.1.>>>root.cgi,bin.a>stats.plC ,con*ig0*uni(.homelinu(.org?123 ,staticlin-s ,lang0*r ,output0allrobots 8uild lastrobots page? C.usr.local.linu(.>eb.a>stats,D.1.>>>root.cgi,bin.a>stats.plC ,con*ig0*uni(.homelinu(.org?123 ,staticlin-s ,lang0*r ,output0lastrobots 8uild session page? C.usr.local.linu(.>eb.a>stats,D.1.>>>root.cgi,bin.a>stats.plC ,con*ig0*uni(.homelinu(.org?123 ,staticlin-s ,lang0*r ,output0session 8uild urldetail page? C.usr.local.linu(.>eb.a>stats,D.1.>>>root.cgi,bin.a>stats.plC ,con*ig0*uni(.homelinu(.org?123 ,staticlin-s ,lang0*r ,output0urldetail 8uild urlentr# page? C.usr.local.linu(.>eb.a>stats,D.1.>>>root.cgi,bin.a>stats.plC ,con*ig0*uni(.homelinu(.org?123 ,staticlin-s ,lang0*r ,output0urlentr# 8uild urle(it page? C.usr.local.linu(.>eb.a>stats,D.1.>>>root.cgi,bin.a>stats.plC ,con*ig0*uni(.homelinu(.org?123 ,staticlin-s ,lang0*r ,output0urle(it 8uild osdetail page? C.usr.local.linu(.>eb.a>stats,D.1.>>>root.cgi,bin.a>stats.plC ,con*ig0*uni(.homelinu(.org?123 ,staticlin-s ,lang0*r ,output0osdetail 8uild un-no>nos page? C.usr.local.linu(.>eb.a>stats,D.1.>>>root.cgi,bin.a>stats.plC ,con*ig0*uni(.homelinu(.org?123 ,staticlin-s ,lang0*r ,output0un-no>nos 8uild bro>serdetail page? C.usr.local.linu(.>eb.a>stats,D.1.>>>root.cgi,bin.a>stats.plC ,con*ig0*uni(.homelinu(.org?123 ,staticlin-s ,lang0*r ,output0bro>serdetail 8uild un-no>nbro>ser page? C.usr.local.linu(.>eb.a>stats,D.1.>>>root.cgi,bin.a>stats.plC ,con*ig0*uni(.homelinu(.org?123 ,staticlin-s ,lang0*r ,output0un-no>nbro>ser 8uild re*ererse page? C.usr.local.linu(.>eb.a>stats,D.1.>>>root.cgi,bin.a>stats.plC ,con*ig0*uni(.homelinu(.org?123 ,staticlin-s ,lang0*r ,output0re*ererse 8uild re*ererpages page? C.usr.local.linu(.>eb.a>stats,D.1.>>>root.cgi,bin.a>stats.plC ,con*ig0*uni(.homelinu(.org?123 ,staticlin-s ,lang0*r ,output0re*ererpages 8uild -e#phrases page? C.usr.local.linu(.>eb.a>stats,D.1.>>>root.cgi,bin.a>stats.plC ,con*ig0*uni(.homelinu(.org?123 ,staticlin-s ,lang0*r ,output0-e#phrases

Apache+PHP+MySQL

53

http;66www.%un"&.or'

8uild -e#>ords page? C.usr.local.linu(.>eb.a>stats,D.1.>>>root.cgi,bin.a>stats.plC ,con*ig0*uni(.homelinu(.org?123 ,staticlin-s ,lang0*r ,output0-e#>ords 8uild errors I page? C.usr.local.linu(.>eb.a>stats,D.1.>>>root.cgi,bin.a>stats.plC ,con*ig0*uni(.homelinu(.org?123 ,staticlin-s ,lang0*r ,output0errors I 2I *iles built. "ain H5"& page is 'a>stats.*uni(.homelinu(.org?123 .html'. s" vous ave= une erreur 0u sty!e bash? .usr.local.linu(.>eb.a>stats,D.1.tools.a>stats/buildstaticpages.pl? .usr.bin.perl_"? bad interpreter? Aucun *ichier ou rpertoire de ce t#pe "! su%%"t 04.0"ter !e %"ch"er a>stats/buildstaticpages.pl et 0e v"rer !e \M aprCs perl #avec mcedit par e&e+p!e(. Ma"ntenant sous !es r.perto"res .usr.local.apache2.htdocs.a>stats.online et .usr.local.apache2.htdocs.a>stats.ohoarau @e +e retrouve avec 0es %"ch"ers ht+!* pour !e pre+"er !e %"ch"er 04entr.e est a>stats.*uni(.homelinu(.org?123 .html et pour !4autre a>stats.ohoarau.homelinu(.org?123 .html A part"r 04une pa'e web access"b!e sur votre serveur web #pa'e 04accue"! par e&e+p!e(* @4a" %a"t un !"en vers ces pa'es 0e stat"st"-ues. /! %au0ra .ventue!!e+ent ra@outer !e r.perto"re .usr.local.apache2.htdocs.a>stats.online 0ans une 0"rect"ve :irector# 0ans !e %"ch"er httpd.con* s" n.cessa"re. )o"!? -ue!-ues aperLus #non e&haust"%s(

Apache+PHP+MySQL

54

http;66www.%un"&.or'

Apache+PHP+MySQL

55

http;66www.%un"&.or'

11. Anal#se+ les logs d'un site hberg non localement


Pour Gtre concret* @4a" +on s"te %un"&.or' -u" est h.ber'. che= on!"ne* @4a" +oyen 0e r.cup.rer !es !o's 04Apache bruts* cha-ue @our un %"ch"er !o' est cr.. et -u" a pour synta&e >>>.*uni(.org/AAAAmm11.log.g+ #AAAA ann.e* ++ +o"s* @@ @our(* ce %"ch"er se trouve 0ans !e r.perto"re log/apache -u" se trouve au n"veau 0e !a rac"ne. 9ant -ue !a ta"!!e +a& n4est pas atte"nte* !es %"ch"ers !o's sont cr..s* c4est ? +o" 0e !es suppr"+er !oca!e+ent. S" avec cron* @e 0e+an0e une +"se ? @our 0es stats -uot"0"enne* @e !e 0e+an0e pour !a ve"!!e. )o"!? !e scr"pt -u" per+et 0e r.cup.rer !es stats 0e !a ve"!!e* et -u" !e p!ace 0ans !e r.perto"re .usr.local.apache.logs.*uni( G<.bin.bash G construction du *ormat de la date 1our0^date Uce^ mois310C1an)ier mars mai 1uillet aoet octobre dcembreC mois3I0Ca)ril 1uin septembre no)embreC i* E [1our ,eq C1C FA then mois0^date Uc8^ G ca c'est le mois de *)rier= modi*ier )entuellement hier0C2JC *or mois31 do i* E [mois00 CE[mois31FCF then hier031 *i done *or mois3I do i* E [mois00 CE[mois3IFCF then hier03I *i

Apache+PHP+MySQL

55

http;66www.%un"&.or'

done else hier0^e(pr [1our , 1^ *i longueur0^e(pr length [hier^ i* E [longueur ,eq C1C FA then hier0I[hier *i anneemois0^date UcNcm^ )eille0[anneemois[hier G 1e me dplace dans le rpertoire qui )a bien et 1e supprime les )ieu( *ichiers log cd .usr.local.apache.logs.*uni( rm ,* .usr.local.apache.logs.*uni(.S.log G rcupration des logs par *tp >get ,c *tp?..pri)*tp.pro.pro(ad.net.log/apache.>>>.*uni(.org/[)eille.log.g+ ,,user0login ,,pass>ord0motdepasse G 1e dcompresse l'archi)e et la renomme gun+ip >>>.*uni(.org/[)eille.log.g+ m) >>>.*uni(.org/[)eille.log >>>.*uni(.org.log G pour ne pas a)oir *aire le mnage des *ichiers logs sur le ser)eur *tp= on le ralise automatiquement *tp ,n XXla*in open pri)*tp.pro.pro(ad.net user login motdepasse cd log/apache binar# delete >>>.*uni(.org/[)eille.log.g+ b#e la*in G 1e lance l'anal#se des logs par >ebali+er G les rsultats se retrou)eront dans .usr.local.apache.logs.*uni( .usr.local.bin.>ebali+er .usr.local.apache.logs.*uni(.>>>.*uni(.org.log Pour r.a!"ser 0es stats avec a>stats* @4a" cr.. un %"ch"er .etc.a>stats.a>stats.>>>.*uni(.org.con* 0ans !e-ue! @4a" +o0"%". !es para+Ctres su"vants &og4ile0C.usr.local.apache.logs.*uni(.>>>.*uni(.org.logC $ite:omain0C>>>.*uni(.orgC HostAliases0C>>>.*uni(.orgC )o"!? !a co++an0e ? ra@outer ? !a %"n 0u scr"pt pour !ancer une ana!yse par a>stats .usr.local.linu(.>eb.a>stats,D.1.tools.a>stats/buildstaticpages.pl ,con*ig0>>>.*uni(.org ,update ,lang0*r ,dir0.usr.local.apache2.htdocs.a>stats.*uni( ,a>statsprog0.usr.local.linu(.>eb.a>stats,D.1.>>>root.cgi, bin.a>stats.pl Les %"ch"ers r.su!tats vont se retrouver sous .usr.local.apache2.htdocs.a>stats.*uni( P!acer +a"ntenant ce scr"pt sous .etc.cron.dail# pour -u4"! so"t appe!. tous !es @ours #? 4h 0u +at pour une Man0r"va par 0.%aut(.

Apache+PHP+MySQL

52

http;66www.%un"&.or'

12Installer un moteur de recherche a)ec Ht?..dig


12.1Prsentation
Ht?..:ig est un +oteur 0e recherche per%or+ant pour votre s"te "ntranet* "! peut +ettre en "n0e& vos s"tes web "nternes +a"s auss" ceu& se trouvant sur !e net. /! +arche sur p!us"eurs p!ate %or+es* 0ont .v"0e++ent !"nu&. :ans !a su"te 0e +a pa'e @e pr.sente un s"te "ntranet ayant pour a0resse >>>.*uni(.-er)ao.*r et tournant sous Apache. n va r.a!"ser un +oteur 0e recherche pour ce s"te ? !4a"0e 0e Ht?..:ig access"b!e ? part"r 0e ce +G+e s"te. La con%"'urat"on par 0.%aut est trCs sat"s%a"sante* vous pouve= n.an+o"ns consu!ter !a 0oc !"vr.e avec !e pacBa'e -u" 0.ta"!!e toutes !es subt"!"t.s 0e !a con%"'urat"on. La 0ern"Cre vers"on stab!e est !a 3.1.5 -u4on peut trouver sur !e s"te o%%"c"e! 0e Ht?..:ig* !a Man0raBe 3.2 et !a 9., %ourn"ssent !a vers"on 3.2., -u" est une vers"on "nstab!e. 1ette pa'e pr.sente !a pre+"Cre vers"on.

12.2Installation a)ec tarball


n r.cup.rera !es sources ? !4a0resse http;66www.ht0"'.or'* e!!e se pr.sente sous !a %or+e 04un tarba!! htdig, 3.1.H.tar.g+ 0e 2Mo* -u4on 0.co+pressera en tapant; tar ()*+ htdig,3.1.H.tar.g+ 1e!a va cr.er un r.perto"re htdig,3.1.H 0ans !e-ue! on tapera con*igure avec !es opt"ons su"vantes ; ..con*igure ,,pre*i(0.chemin,d,install ,,>ith,cgi,bin,dir0chemin,cgi,apache ,,>ith,image,dir0rpertoire, contenant,image ,,>ith,search,dir0rpertoire,contenant,script,recherche )o"!? !a co++an0e -ue @4a" .usr.local.apache.htdocs.htdig ; tap.e che= +o" aprCs avo"r cr.. pr.a!ab!e+ent !e r.perto"re

..con*igure ,,pre*i(0.usr.local.htdig ,,>ith,cgi,bin,dir0.usr.local.apache.cgi,bin ,,>ith,image, dir0.usr.local.apache.htdocs.htdig ,,>ith,search,dir0.usr.local.apache.htdocs.htdig Me ne passa"s pas cette .tape avec !a Man0raBe 2.1 pour une so+bre h"sto"re 0e hea0ers 1++. Pu"s ma-e Kt en%"n en tant -ue root ma-e install 1e!a va +ettre en p!ace un %"ch"er htsearch 0ans !e r.perto"re cgi,bin 04apache et ra@oute= un scr"pt 0e recherche sous !e r.perto"re htdocs.htdig 04apache 0ont on verra !4ut"!"t. p!us tar0. Les b"na"res sont sous .usr.local.htdig.bin* !e %"ch"er 0e con% sous .usr.local.htdig.con* et !es bases 0e 0onn.es sous .usr.local.htdig.db.

12.3Con*iguration
n trouvera !e %"ch"er 0e con%"'urat"on sous .usr.local.htdig.con* #.etc.htdig pour une "nsta!!at"on par rp+(* "! se no++e htdig.con** vo"c" !es !"'nes ? +o0"%"er .ventue!!e+ent G d*inition de l'emplacement of se trou)eront les bases de donnes sur le site intranet G attention= elles peu)ent gtre asse+ grosses= pour in*o pour mon site intranet contenant mes pages G >>>.*uni(.org les bases *ont un total de 12"o < G a)ec une install par rpm le chemin est .)ar.lib.htdig database/dir? .usr.local.htdig.db G :*inition de l'adresse partir de laquelle htdig doit construire ses bases de donnes G mette+ ici l';7& de )otre intranet G )ous pou)e+ )entuellement mettre l';7& de n'importe quel site sur internet start/url? http?..>>>.*uni(.-er)ao.*r. G )otre site peut contenir des liens )ers des sites e(trieurs= cette )ariable permet de G limiter la rechercher des pages de )otre domaine limit/urls/to?L [\start/url] G :*inition des pages ne pas inde(er= ce sont donc celles qui sont dans G http?..>>>.*uni(.-er)ao.*r.cgi,bin par e(emple ici

Apache+PHP+MySQL

53

http;66www.%un"&.or'

e(clude/urls?cL

.cgi,bin. .cgi

G *ichiers qui seront ignors pendant l'inde(ation bad/e(tensions? .>a) .g+ .+ .sit .au .+ip .tar .hq( .e(e .com .gi* Q .1pg .1peg .ai** .class .map .ram .tg+ .bin .rpm .mpg .mo) .a)i G adresse email de l'administrateur maintainer? oli)ierT-er)ao.*r G Par d*aut un e(trait de chaque page est archi) dans la base= )ous pou)e+ limiter G )idemment cette taille ma(/head/length? 1IIII G si )ous rcupre+ des pages sur internet Kinde(ation de sites sur internetL )ous pou)e+ aussi G limiter la taille des pages rcuprer ma(/doc/si+e?cL 2IIIII G G "ost people e(pect some sort o* e(cerpt in results. 8# de*ault= i* the G search >ords aren't *ound in conte(t in the stored e(cerpt= htsearch sho>s G the te(t de*ined in the no/e(cerpt/te(t attribute? G KMone o* the search >ords >ere *ound in the top o* this document.L G 5his attribute instead >ill sho> the top o* the e(cerpt. G no/e(cerpt/sho>/top? true G G :epending on #our needs= #ou might >ant to enable some o* the *u++# search G algorithms. 5here are se)eral to choose *rom and #ou can use them in an# G combination #ou *eel com*ortable >ith. 6ach algorithm >ill get a >eight G assigned to it so that in combinations o* algorithms= certain algorithms get G pre*erence o)er others. Mote that the >eights onl# a**ect the ran-ing o* G the results= not the actual searching. G 5he a)ailable algorithms are? G e(act G endings G metaphone G pre*i( G sounde( G s#non#ms G 8# de*ault onl# the Ce(actC algorithm is used >ith >eight 1. G Mote that i* #ou are going to use the endings= metaphone= sounde(= G or s#non#ms algorithms= #ou >ill need to run ht*u++# to generate G the databases the# use. G search/algorithm? e(act?1 s#non#ms?I.! endings?I.1 G G 5he *ollo>ing are the templates used in the builtin search results G 5he de*ault is to use compiled )ersions o* these *iles= >hich produces G slightl# *aster results. Ho>e)er= uncommenting these lines ma-es it G )er# eas# to change the *ormat o* search results. G $ee Xhttp?..>>>.htdig.org.hts/templates.html *or more details. G G template/map? &ong long [\common/dir].long.html Q G $hort short [\common/dir].short.html G template/name? long G G 5he *ollo>ing are used to change the te(t *or the page inde(. G 5he de*aults are 1ust boring te(t numbers. 5hese images spice G up the result pages quite a bit. K4eel *ree to do >hate)er= thoughL G ne(t/page/te(t? Ximg src0C.htdig.buttonr.gi*C border0CIC align0CmiddleC >idth0C3IC height0C3IC alt0Cne(tCR

Apache+PHP+MySQL

59

http;66www.%un"&.or'

no/ne(t/page/te(t? pre)/page/te(t? Ximg src0C.htdig.buttonl.gi*C border0CIC align0CmiddleC >idth0C3IC height0C3IC alt0Cpre)CR no/pre)/page/te(t? page/number/te(t? 'Ximg src0C.htdig.button1.gi*C border0CIC align0CmiddleC >idth0C3IC height0C3IC alt0C1CR' Q 'Ximg src0C.htdig.button2.gi*C border0CIC align0CmiddleC >idth0C3IC height0C3IC alt0C2CR' Q 'Ximg src0C.htdig.button3.gi*C border0CIC align0CmiddleC >idth0C3IC height0C3IC alt0C3CR' Q 'Ximg src0C.htdig.button .gi*C border0CIC align0CmiddleC >idth0C3IC height0C3IC alt0C CR' Q 'Ximg src0C.htdig.button!.gi*C border0CIC align0CmiddleC >idth0C3IC height0C3IC alt0C!CR' Q 'Ximg src0C.htdig.buttonH.gi*C border0CIC align0CmiddleC >idth0C3IC height0C3IC alt0CHCR' Q 'Ximg src0C.htdig.buttonD.gi*C border0CIC align0CmiddleC >idth0C3IC height0C3IC alt0CDCR' Q 'Ximg src0C.htdig.buttonJ.gi*C border0CIC align0CmiddleC >idth0C3IC height0C3IC alt0CJCR' Q 'Ximg src0C.htdig.button'.gi*C border0CIC align0CmiddleC >idth0C3IC height0C3IC alt0C'CR' Q 'Ximg src0C.htdig.button1I.gi*C border0CIC align0CmiddleC >idth0C3IC height0C3IC alt0C1ICR' G 5o ma-e the current page stand out= >e >ill put a border arround the G image *or that page. G no/page/number/te(t? 'Ximg src0C.htdig.button1.gi*C border0C2C align0CmiddleC >idth0C3IC height0C3IC alt0C1CR' Q 'Ximg src0C.htdig.button2.gi*C border0C2C align0CmiddleC >idth0C3IC height0C3IC alt0C2CR' Q 'Ximg src0C.htdig.button3.gi*C border0C2C align0CmiddleC >idth0C3IC height0C3IC alt0C3CR' Q 'Ximg src0C.htdig.button .gi*C border0C2C align0CmiddleC >idth0C3IC height0C3IC alt0C CR' Q 'Ximg src0C.htdig.button!.gi*C border0C2C align0CmiddleC >idth0C3IC height0C3IC alt0C!CR' Q 'Ximg src0C.htdig.buttonH.gi*C border0C2C align0CmiddleC >idth0C3IC height0C3IC alt0CHCR' Q 'Ximg src0C.htdig.buttonD.gi*C border0C2C align0CmiddleC >idth0C3IC height0C3IC alt0CDCR' Q 'Ximg src0C.htdig.buttonJ.gi*C border0C2C align0CmiddleC >idth0C3IC height0C3IC alt0CJCR' Q 'Ximg src0C.htdig.button'.gi*C border0C2C align0CmiddleC >idth0C3IC height0C3IC alt0C'CR' Q 'Ximg src0C.htdig.button1I.gi*C border0C2C align0CmiddleC >idth0C3IC height0C3IC alt0C1ICR' G local )ariables? G mode? te(t G e)al? Ki* Keq >indo>,s#stem '(L Kprogn Ksetq *ont,loc-,-e#>ords Klist 'KC_G.SC . *ont,loc-,-e#>ord,*aceL 'KC_Ea,+A,WFE_ ?FUC . *ont,loc-,*unction,name,*aceL 'KCEU[FS?C . *ont,loc-,comment,*aceL LL K*ont,loc-, modeLLL G end? A noter -u4avec une "nsta!!at"on par rp+ !e %"ch"er est auto+at"-ue+ent rense"'n. 04aprCs !e %"ch"er 0e con%"'urat"on 04Apache. n trouvera en %"n 0e %"ch"er G Automaticall# set up b# htdig 7P"= *rom #our current Apache httpd.con*... G Oeri*# and con*igure these= and set maintainer abo)e= be*ore running G .usr.bin.rundig. G $ee .usr.doc.htdigS.attrs.html *or descriptions o* attributes.

Apache+PHP+MySQL

2,

http;66www.%un"&.or'

G 5he ;7&KsL >here htdig >ill start. $ee also limit/urls/to abo)e. start/url? http?..asteri(.-er)ao.*r G 5his ma-es sure that >e don't spider the >eb local/urls/onl#? true G 5hese attributes allo> inde(ing ser)er )ia local *iles#stem rather than H55P. local/urls? http?..asteri(.-er)ao.*r.0.)ar.>>>.html. local/user/urls? http?..asteri(.-er)ao.*r.0.home.=.public/html. A +o0"%"er se!on votre convenance. n va +a"ntenant e&p!orer !e s"te web et r.cup.rer !es pa'es en tapant .usr.local.htdig.bin.htdig ,i)s Mote ? 9aper .usr.bin.htdig ,i)s pour une "nsta!! par rp+ Qe vous "n-u".te= pas s" votre s"te est .cr"t en PHP* La +arche auss" trCs b"en. L4opt"on ,i per+et 04e%%acer !es recherches pr.c.0entes et 0e repart"r 0e =.ro* !4opt"on ,) est !4opt"on JverbeuseJ. n cr.e ? pr.sent !4"n0e& en tapant ; .usr.local.htdig.bin.htmerge ,)s Pour "n%o avec !4opt"on ,m !es tab!es sont s"+p!e+ent +"ses ? n"veau. Pour une "nsta!!at"on avec rp+ !a synta&e est un peu 0"%%.rente* vous 0eve= taper; .usr.bin.htmerge ,) ,m .etc.htdig.htdig.con* 1e sera !a +G+e co++an0e ? taper pour une +"se ? @our.

12. ;tilisation
A part"r 0e votre nav"'ateur pr.%.r. au n"veau 0e !4>FL tape=; ;7&? http?..>>>.*uni(.-er)ao.*r.htdig.search.html #Pour une "nsta!! avec rp+* vous pouve= o+ettre !e search.html(

)o"!? !e r.su!tat 0e !a recherche

Apache+PHP+MySQL

21

http;66www.%un"&.or'

Les pa'es sont c!ass.es su"vant -u4e!!es co!!ent p!us ou +o"ns avec !a recherche* +a"s vous pouve= .ventue!!e+ent +o0"%"er !e type 0e tr" # $ort b#(. Pour "n%o on ut"!"se un +o0C!e 0e pr.sentat"on 0es r.su!tats se trouvant sous .usr.local.htdig.common #.usr.share.htdig pour une "nsta!!at"on avec rp+( avec header.html -u" pr.cC0e !a !"ste 0es r.su!tats *ooter.html -u" su"t !a !"ste 0es r.su!tats nomatch.html -uan0 on ne trouve r"en s#nta(.html en cas 04erreur 0e synta&e >rapper.html entGte et p"e0 0e pa'e

Apache+PHP+MySQL

22

http;66www.%un"&.or'

You might also like