Vous êtes sur la page 1sur 16

Linux

Administration
Tome 4
Les services applicatifs Internet : Web, email, FTP

Jean-Franois Bouchaudy

soft et Groupe Eyrolles, 2009, ISBN : 978-2-212-12248-0

Module 2 : Apache

ATELIERS
Tche 1 : Le Web (optionnel) ................................................................................ 5 mn Tche 2 : Le protocole HTTP (optionnel) ............................................................. 10 mn Tche 3 : Utiliser un serveur Apache sans configuration ...................................... 10 mn Tche 4 : Installer Apache version 1.3 partir des sources (optionnel) ................ 15 mn Tche 5 : Configurer de manire lmentaire Apache .......................................... 10 mn Tche 6 : Les fichiers .htaccess ............................................................................. 10 mn Tche 7 : Les sites virtuels par nom ...................................................................... 15 mn Tche 8 : Les sites virtuels par adresse (optionnel) ............................................... 10 mn Tche 9 : Les pages dynamiques ........................................................................... 30 mn Tche 10 : Restreindre les accs ............................................................................ 15 mn Tche 11 : SSL ...................................................................................................... 15 mn Tche 12 : Proxy (optionnel) ................................................................................. 10 mn Tche 13 : Proxy-reverse (optionnel) .................................................................... 15 mn Tche 14 : Les performances (optionnel) .............................................................. 15 mn Tche 15 : Les journaux ........................................................................................ 10 mn

Tche 1 : Le Web
Au lieu dutiliser le serveur instru, cette tche peut tre accomplie avec le serveur local (localhost) mais aprs la tche Utiliser un serveur Apache sans configuration . 1. Est-ce que le navigateur Lynx est install ? Sil ne lest pas, il faut linstaller.
[root@linux1 ~]# rpm -q lynx lynx-2.8.5-28.1 [root@linux1 ~]# yum -q -y install lynx

2. Parcourir le site instru avec Lynx.


[root@linux1 ~]# lynx 'http://instru' Le titre Gros titre [printer.png] .... Le Web ! cliquer ici

Commands: Use arrow keys to move, '?' for help, 'q' to quit, '<-' to go back. Arrow keys: Up and Down to move. Right to follow a link; Left to go back. H)elp O)ptions P)rint G)o M)ain screen Q)uit /=search [delete]=history list

Utilisation de Lynx : <Page suivante>, <Page prcdente> Ctrl-N, Ctrl-P , ou <Return> G Avancer ou reculer dune page. Avancer ou reculer de deux lignes. Se positionner sur le lien suivant, prcdent. Activer un lien (il faut tre dessus). Revenir sur la page prcdente. Saisir une URL. 2-41

Eyrolles/Tsoft - Linux Administration : les services applicatifs Internet

Module 2 : Apache
M z Ctrl-R <Backspace> H / Q 3. Parcourir le site instru avec Firefox. 4. Utiliser Lynx de manire scriptable.
[root@linux1 ~]# lynx -dump 'http://instru/bonjour.html' Le Web C'est merveilleux avec Apache.

Revenir la page daccueil. Stopper le transfert courant. Rafrachir la page courante. Revisiter une des URL parcourues. Afficher laide en ligne. Effectuer une recherche dune chane. Quitter Lynx.

5. Idem, mais on prcise le numro de port.


[root@linux1 ~]# lynx -dump 'http://instru.pinguins:80/bonjour.html'

6. Tlcharger une page avec loutil wget.


[root@linux1 ~]# wget 'http://instru/bonjour.html' --11:05:22-- http://instru/bonjour.html Resolving instru... 192.168.0.200 Connecting to instru|192.168.0.200|:80... connected. HTTP request sent, awaiting response... 200 OK Length: 124 [text/html] Saving to: `bonjour.html' 100%[=======================================>] 124 11:05:22 (4.14 MB/s) - `bonjour.html' saved [124/124] [root@linux1 ~]# ls -l bonjour* -rw-r--r-- 1 root root 124 Feb 18 10:05 bonjour.html --.-K/s in 0s

7. Visualiser les sources HTML des pages.


[root@linux1 ~]# lynx -source -dump 'http://instru' <HTML> <!-- commentaire --> <HEAD> <TITLE>Le titre</TITLE> </HEAD> <BODY> <H1>Gros titre</H1> <IMG SRC="printer.png"> <p>.... Le Web ! <A HREF="bonjour.html">cliquer ici</A> </BODY> </HTML> [root@linux1 ~]# lynx -source -dump 'http://instru/bonjour.html' <HTML> <HEAD> <TITLE>Bonjour</TITLE> </HEAD> <BODY> <H1>Le Web</H1> C'est merveilleux avec Apache. </BODY>

2-42

Eyrolles/Tsoft - Linux Administration : les services applicatifs Internet

Module 2 : Apache
</HTML> [root@linux1 ~]#

Remarque : le navigateur Firefox peut afficher galement le code source dune page avec le menu [Afficher][Code source de la page].

Tche 2 : Le protocole HTTP


Au lieu dutiliser le serveur instru, cette tche peut tre accomplie avec le serveur local (localhost) mais aprs la tche Utiliser un serveur Apache sans configuration . 1. Saisir une requte HTTP sous telnet et visualiser la rponse du serveur. Remarque : il faut valider deux fois aprs avoir saisi la requte (GET ).
[root@linux1 ~]# telnet instru 80 Trying 192.168.0.200... Connected to instru.pinguins (192.168.0.200). Escape character is '^]'. GET /bonjour.html HTTP/1.0 HTTP/1.1 200 OK Date: Wed, 18 Feb 2009 10:38:09 GMT Server: Apache/2.2.3 (CentOS) Last-Modified: Wed, 18 Feb 2009 09:05:12 GMT ETag: "4837d-7c-b79c6200" Accept-Ranges: bytes Content-Length: 124 Connection: close Content-Type: text/html; charset=UTF-8 <HTML> <HEAD> <TITLE>Bonjour</TITLE> </HEAD> <BODY> <H1>Le Web</H1> C'est merveilleux avec Apache. </BODY> </HTML> Connection closed by foreign host. [root@linux1 ~]#

2. Utiliser lanalyseur de protocole tcpdump. a) Vrifier si tcpdump est install, sil ne lest pas, linstaller.
[root@linux1 ~]# rpm -q tcpdump tcpdump-3.9.4-12.el5 [root@linux1 ~]# yum -q -y install tcpdump

b) Activer une capture en tche de fond. On capture lintgralit des paquets (1500 octets). La capture est mmorise dans le fichier /tmp/http.tcp. On ne sintresse quau trafic associ au Web (port 80).
[root@linux1 ~]# tcpdump -s 1500 -w /tmp/http.tcp port 80 & [1] 5172 [root@linux1 ~]# tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 1500 bytes

c) Effectuer une session Web.


[root@linux1 ~]# lynx -dump 'http://instru/' > /dev/null 2>&1

Eyrolles/Tsoft - Linux Administration : les services applicatifs Internet

2-43

Module 2 : Apache
d) Mettre fin la capture et la visualiser.
[root@linux1 ~]# pkill tcpdump [root@linux1 ~]# 10 packets captured 20 packets received by filter 0 packets dropped by kernel [1]+ Done tcpdump -X -s 1500 -w /tmp/http.tcp port 80 [root@linux1 ~]# tcpdump -r /tmp/http.tcp reading from file /tmp/http.tcp, link-type EN10MB (Ethernet) 11:46:20.895650 IP linux1.pinguins.57604 > instru.pinguins.http: S 1329016960:1329016960(0) win 5840 <mss 1460,sackOK,timestamp 167016541 0,nop,wscale 4> 11:46:20.897874 IP instru.pinguins.http > linux1.pinguins.57604: S 1206286457:1206286457(0) ack 1329016961 win 5792 <mss 1460,sackOK,timestamp 168474230 167016541,nop,wscale 4> ...

3. Utiliser lanalyseur de protocole graphique Wireshark. Remarque : dans lexemple suivant, on visualise une capture effectue par tcpdump. Cest la manire usuelle dutiliser Wireshark en production. Cela permet notamment deffectuer la capture sur un poste non graphique. videmment, Wireshark est capable de raliser lui-mme des captures. Le logiciel libre Wireshark est disponible sous Windows. a) Vrifier si Wireshark est install, sinon linstaller.
[root@linux1 ~]# rpm -q wireshark-gnome wireshark-gnome-0.99.7-1.el5 [root@linux1 ~]# yum -q -y install wireshark-gnome

b) Visualiser la capture effectue avec tcpdump.


[root@linux1 ~]# wireshark /tmp/http.tcp

4. Utiliser le mode trace de Lynx.


[root@linux1 ~]# lynx -trace -dump 'http://instru/bonjour.html' [root@linux1 ~]# more Lynx.trace ... HTParse: aName:`http://instru/bonjour.html' relatedName:`' want: host HTParse: result:`instru' LYCookie: Searching for 'instru:80', '/bonjour.html'. Composing Authorization for instru:80/bonjour.html HTAASetup_lookup: No template matched `bonjour.html' (so probably not protected) HTTP: Not sending authorization (yet). Writing: GET /bonjour.html HTTP/1.0\r Host: instru\r Accept: text/html, text/plain, audio/mod, image/*, application/msword, applicati on/pdf, application/postscript, text/sgml, */*;q=0.01\r ...

5. Utiliser loutil lwp-request. a) Vrifier si loutil lwp-request est install, sinon linstaller.
[root@linux1 ~]# rpm -q perl-libwww-perl perl-libwww-perl-5.805-1.1.1 [root@linux1 ~]# yum -q -y install perl-libwww-perl

2-44

Eyrolles/Tsoft - Linux Administration : les services applicatifs Internet

Module 2 : Apache
b) Activer la commande sans option, la syntaxe est affiche.
[root@linux1 ~]# lwp-request Usage: lwp-request [-options] <url>... -m <method> use method for the request (default is 'GET') -f make request even if lwp-request believes method is illegal -b <base> Use the specified URL as base -t <timeout> Set timeout value -i <time> Set the If-Modified-Since header on the request -c <conttype> use this content-type for POST, PUT, CHECKIN -a Use text mode for content I/O -p <proxyurl> use this as a proxy -P don't load proxy settings from environment -H <header> send this HTTP header (you can specify several) -u -U -s -S -e -d -o <format> -v -h -x Display method and URL before any response Display request headers (implies -u) Display response status code Display response status chain Display response headers Do not display content Process HTML content in various ways Show program version Print this message Extra debugging output

c) Utiliser la commande sans option.


[root@linux1 ~]# lwp-request "http://instru/bonjour.html" <HTML> <HEAD>

d) Afficher la requte.
[root@linux1 ~]# lwp-request -U GET http://instru/bonjour.html User-Agent: lwp-request/2.07 <HTML> <HEAD> "http://instru/bonjour.html" |head

e) Afficher len-tte de la rponse sans le corps de celle-ci ainsi que le titre du document.
[root@linux1 ~]# lwp-request -e -d "http://instru/bonjour.html" Connection: close Date: Wed, 18 Feb 2009 11:00:42 GMT Accept-Ranges: bytes ETag: "4837d-7c-b79c6200" Server: Apache/2.2.3 (CentOS) Content-Length: 124 Content-Type: text/html; charset=UTF-8 Last-Modified: Wed, 18 Feb 2009 09:05:12 GMT Client-Date: Wed, 18 Feb 2009 11:03:56 GMT Client-Peer: 192.168.0.200:80 Client-Response-Num: 1 Title: Bonjour

Eyrolles/Tsoft - Linux Administration : les services applicatifs Internet

2-45

Module 2 : Apache
f) Ajouter une ligne de requte (ici lhte virtuel).
[root@linux1 ~]# lwp-request -U -H "Host: vhost" "http://instru/bonjour.html" GET http://instru/bonjour.html Host: vhost User-Agent: lwp-request/2.07 <HTML> <HEAD>

Tche 3 : Utiliser un serveur Apache sans configuration


1. Vrifier si Apache est install, sil ne lest pas, linstaller.
[root@linux1 ~]# rpm -q httpd httpd-2.2.3-11.el5_1.centos.3 [root@linux1 ~]# yum -q -y install httpd

2. Activer le service Apache automatiquement chaque dmarrage. Lister ensuite les niveaux dans lesquels il est actif.
[root@linux1 ~]# chkconfig httpd on [root@linux1 ~]# chkconfig httpd --list httpd 0:off 1:off 2:on 3:on

4:on

5:on

6:off

3. Dmarrer le service Apache.


[root@linux1 ~]# service httpd start Starting httpd: [ OK ]

4. Vrifier la prsence du service.


[root@linux1 ~]# service httpd status httpd (pid 5391 5390 5389 5388 5387 5386 5385 5384 5382) is running... [root@linux1 ~]# ps -e |grep httpd 5382 ? 00:00:00 httpd 5384 ? 00:00:00 httpd [root@linux1 ~]# netstat -ant | grep ':80' tcp 0 0 :::80 :::* LISTEN

5. Accder la page daccueil.


[root@linux1 ~]# lynx -dump 'http://localhost' | head Apache 2 Test Page powered by CentOS This page is used to test the proper operation of the Apache HTTP server after it has been installed. If you can read this page it means that the Apache HTTP server installed at this site is working properly.

6. Visualiser les journaux (erreur et accs).


[root@linux1 ~]# tail /var/log/httpd/error_log ... [Wed Feb 18 12:49:41 2009] [notice] Apache/2.2.3 (CentOS) configured -- resuming normal operations [Wed Feb 18 12:59:47 2009] [error] [client 127.0.0.1] Directory index forbidden by Options directive: /var/www/html/ [root@linux1 ~]# tail /var/log/httpd/access_log 127.0.0.1 - - [18/Feb/2009:12:59:47 +0100] "GET / HTTP/1.0" 403 5043 "-" "Lynx/2.8.5rel.1 libwww-FM/2.14 SSL-MM/1.4.1 OpenSSL/0.9.8b"

2-46

Eyrolles/Tsoft - Linux Administration : les services applicatifs Internet

Module 2 : Apache
7. Crer un site Web. a) Se dplacer la racine des documents.
[root@linux1 ~]# cd /var/www/html

b) Crer les pages Web.


[root@linux1 html]# vi bonjour.html <HTML> <HEAD> <TITLE>Bonjour</TITLE> </HEAD> <BODY> <H1>Le Web</H1> C'est merveilleux avec Apache. </BODY> </HTML> [root@linux1 html]# vi index.html <HTML> <!-- commentaire --> <HEAD> <TITLE>Le titre</TITLE> </HEAD> <BODY> <H1>Gros titre</H1> <IMG SRC="workstation.png"> <p>.... Le Web ! <A HREF="bonjour.html">cliquer ici</A> </BODY> </HTML> [root@linux1 html]# cp /usr/share/firstboot/pixmaps/workstation.png [root@linux1 html]# cd

c) Tester laccs au site avec Lynx et Firefox.


[root@linux1 ~]# lynx 'http://localhost/'

Tche 4 : Installer Apache version 1.3 partir des sources


Remarque : Apache 1.3 est disponible sous forme package sur les systmes Debian. Ce nest pas le cas sous RedHat. Si lon dsire utiliser cette version, il faut linstaller partir des sources. 1. Tlcharger les sources dApache 1.3.
[root@linux1 ~]# wget 'http://apache.cict.fr/httpd/apache_1.3.41.tar.gz'

2. Vrifier si les outils de dveloppement (compilateur, ) sont installs, sil ne le sont pas, les installer.
[root@linux1 ~]# rpm -q gcc gcc-4.1.2-42.el5 [root@linux1 ~]# yum -q -y groupinstall 'Development Tools'

3. Dcompresser et d-tarer le tarball.


[root@instru ~]# tar xzf apache_1.3.41.tar.gz

4. Lire la documentation.
[root@instru ~]# cd apache_1.3.41 [root@instru apache_1.3.41]# ls -F ABOUT_APACHE htdocs/ Makefile.tmpl cgi-bin/ icons/ NOTICE conf/ INSTALL NWGNUenvironment.inc

NWGNUtail.inc README README.configure

WARNING-WIN.TXT

Eyrolles/Tsoft - Linux Administration : les services applicatifs Internet

2-47

Module 2 : Apache
config.layout LICENSE NWGNUhead.inc README-WIN.TXT configure* logs/ NWGNUmakefile src/ [root@instru apache_1.3.41]# more README [root@instru apache_1.3.41]# more INSTALL [root@instru apache_1.3.41]# more README.configure

5. Crer le Makefile.
[root@instru apache_1.3.41]# ./configure Creating Makefile in src/lib/expat-lite Creating Makefile in src/modules/standard [root@instru apache_1.3.41]# more Makefile

6. Compiler Apache.
[root@instru apache_1.3.41]# make gcc -DLINUX=22 -DHAVE_SET_DUMPABLE -DUSE_HSREGEX -DUSE_EXPAT -I../lib/expatlite -DNO_DL_NEEDED `../apaci` -o checkgid -L../os/unix -L../ap checkgid.o -lm -lap -los -lm -lcrypt make[2]: Leaving directory `/root/apache_1.3.41/src/support' <=== src/support make[1]: Leaving directory `/root/apache_1.3.41' <=== src

7. Installer Apache.
[root@instru apache_1.3.41]# make install ... ./src/helpers/install.sh -c -m 644 ./conf/magic /usr/local/apache/conf/magic <=== [config] make[1]: Leaving directory `/root/apache_1.3.41' +--------------------------------------------------------+ | You now have successfully built and installed the | | Apache 1.3 HTTP server. To verify that Apache actually | | works correctly you now should first check the | | (initially created or preserved) configuration files | | | | /usr/local/apache/conf/httpd.conf | | | and then you should be able to immediately fire up | | Apache the first time by running: | | | | /usr/local/apache/bin/apachectl start | | | Thanks for using Apache. The Apache Group | | http://www.apache.org/ | +--------------------------------------------------------+ [root@instru apache_1.3.41]# cd

Remarque : pour installer Apache, nous avons d installer le compilateur C. Ce nest pas conseill sur un systme en exploitation. Il est prfrable dinstaller Apache sur une machine de dveloppement et ensuite de crer un tarball (cd /usr/local ; tar cvzf /tmp/apache.tgz apache) quil suffit de transfrer et dinstaller sur le serveur en exploitation.

2-48

Eyrolles/Tsoft - Linux Administration : les services applicatifs Internet

Module 2 : Apache
8. Dmarrer le service. a) Arrter temporairement le serveur packag.
[root@linux1 ~]# service httpd stop Stopping httpd: [ OK ]

b) Dmarrer le serveur cr partir des sources.


[root@linux1 ~]# /usr/local/apache/bin/apachectl start /usr/local/apache/bin/apachectl start: httpd started [root@linux1 ~]# ps -e |grep httpd | tail -2 5719 ? 00:00:00 httpd 5720 ? 00:00:00 httpd

Remarque : si lon dsire dmarrer automatiquement Apache au boot, il faut copier le script apachectl dans le rpertoire /etc/init.d et crer un lien dans le rpertoire ad hoc, par exemple /etc/rc5.d/S80apachectl. Lutilisation de la commande chkconfig ou de loutil dadministration Webmin facilite les oprations. 9. Accder la page daccueil.
[root@linux1 ~]# lynx -dump 'http://localhost' |head If you can see this, it means that the installation of the [1]Apache web server software on this system was successful. You may now add content to this directory and replace this page.

10. Visualiser les journaux de bord.


[root@linux1 ~]# tail /usr/local/apache/logs/error_log [Wed Feb 18 15:28:49 2009] [notice] Apache/1.3.41 (Unix) configured -- resuming normal operations [Wed Feb 18 15:28:49 2009] [notice] Accept mutex: sysvsem (Default: sysvsem) [root@linux1 ~]# tail /usr/local/apache/logs/access_log 127.0.0.1 - - [18/Feb/2009:15:30:57 +0100] "GET / HTTP/1.0" 200 1456

11. Lister larborescence du serveur.


[root@linux1 ~]# ls -F /usr/local/apache/ bin/ cgi-bin/ conf/ htdocs/ icons/ include/ libexec/ logs/ man/ proxy/

12. Lister les modules statiques.


[root@linux1 ~]# /usr/local/apache/bin/httpd -l |pr -4t Compiled-in modul mod_negotiation mod_cgi.c mod_alias.c http_core.c mod_status.c mod_asis.c mod_access.c mod_env.c mod_include.c mod_imap.c mod_auth.c mod_log_config. mod_autoindex.c mod_actions.c mod_setenvif.c mod_mime.c mod_dir.c mod_userdir.c suexec: disabled;

13. Arrter le service Open Source et redmarrer le service packag.


[root@linux1 ~]# /usr/local/apache/bin/apachectl stop /usr/local/apache/bin/apachectl stop: httpd stopped [root@linux1 ~]# service httpd start Starting httpd:

OK

Tche 5 : Configurer de manire lmentaire Apache


1. Sauvegarder la configuration et la modifier. Le serveur coute sur le port 8000. Le responsable du serveur possde ladresse e-mail cochise@reserve.apache. La racine des documents est le rpertoire /www/html. Les journaux sont dans le rpertoire /www/logs. On modifie les directives correspondantes.
[root@linux1 ~]# cd /etc/httpd/conf

Eyrolles/Tsoft - Linux Administration : les services applicatifs Internet

2-49

Module 2 : Apache
[root@linux1 conf]# cp httpd.conf httpd.conf.init [root@linux1 conf]# vi httpd.conf [root@linux1 conf]# grep -e '^Listen' -e '^ServerAdmin' -e '^DocumentRoot' -e '^ErrorLog' -e '^CustomLog' httpd.conf Listen 8000 ServerAdmin cochise@reserve.apache DocumentRoot "/www/html" ErrorLog /www/logs/error_log CustomLog /www/logs/access_log common [root@linux1 conf]# cd

2. Crer le site Web.


[root@linux1 [root@linux1 [root@linux1 [root@linux1 [root@linux1 ~]# ~]# ~]# ~]# ~]# mkdir -p /www/html /www/logs chmod -R a+rx /www echo '<h1>Hug</h1>' > /www/html/index.html chmod a+r /www/html/index.html ls -lR /www

3. Vrifier la syntaxe du fichier de configuration.


[root@linux1 ~]# apachectl configtest Syntax OK

4. Redmarrer le serveur. Vrifier sa prsence.


[root@linux1 ~]# service httpd restart Stopping httpd: [ OK ] Starting httpd: [ OK ] [root@linux1 ~]# netstat -ant |grep ':8000' tcp 0 0 :::8000 :::* LISTEN [root@linux1 ~]# service httpd status httpd (pid 5932 5931 5930 5929 5928 5927 5926 5924 5923) is running...

Remarque : en exploitation, on vite de redmarrer brutalement un serveur. Il est prfrable de lui demander de se rinitialiser avec la commande apachectl graceful. Les connexions courantes ne sont pas touches. Par contre, les nouvelles utiliseront la nouvelle configuration. 5. Accder la page daccueil du serveur.
[root@linux1 ~]# lynx -dump 'http://localhost:8000' Hug

6. Visualiser les journaux.


[root@linux1 ~]# tail /www/logs/error_log [Wed Feb 18 16:47:39 2009] [notice] Apache/2.2.3 (CentOS) configured -- resuming normal operations [root@linux1 ~]# tail /www/logs/access_log 127.0.0.1 - - [18/Feb/2009:16:53:52 +0100] "GET / HTTP/1.0" 200 13

7. Remettre la configuration dorigine.


[root@linux1 [root@linux1 [root@linux1 [root@linux1 [root@linux1 ~]# cd /etc/httpd/conf conf]# cp httpd.conf httpd.conf.$(date '+%d%H%M') conf]# \cp -f httpd.conf.init httpd.conf conf]# cd ~]# apachectl graceful

2-50

Eyrolles/Tsoft - Linux Administration : les services applicatifs Internet

Module 2 : Apache Tche 6 : Les fichiers .htaccess


1. Modifier la configuration. On commence par supprimer laffichage de la page daccueil standard (/var/www/error/noindex.html) et linterdiction davoir des index en renommant le fichier welcome.conf. Ainsi, il ne sera pas automatiquement inclus dans la configuration la fin du fichier de configuration principal (httpd.conf), on ajoute lautorisation dutiliser des fichiers .htaccess et lindexation automatique des rpertoires partir de la racine des documents /www/htdocs.
[root@linux1 ~]# mv /etc/httpd/conf.d/welcome.conf /etc/httpd/conf.d/welcome [root@linux1 ~]# cd /etc/httpd/conf [root@linux1 conf]# cp httpd.conf httpd.conf.$(date '+%d%H%M') [root@linux1 conf]# \cp -f httpd.conf.init httpd.conf [root@linux1 conf]# vi httpd.conf ... DocumentRoot "/www/htdocs" <Directory "/www/htdocs"> Options +Indexes AllowOverride All </Directory>

Remarque : les directives ajoutes la fin invalident les directives prcdentes de mme nom. 2. Crer le site Web.
[root@linux1 conf]# mkdir -p /www/htdocs/films [root@linux1 conf]# chmod -R 555 /www [root@linux1 conf]# echo "<h1>Luke Skywalker</h1>" > /www/htdocs/luke.html [root@linux1 conf]# echo "<h1>Dark Wador</h1>" > /www/htdocs/wador.html [root@linux1 conf]# echo "<h1>Opration Fantome</h1>" > /www/htdocs/films/liste.html [root@linux1 conf]# chmod -R a+r /www [root@linux1 conf]# cd /www/htdocs/films/ [root@linux1 films]# ln -s ../luke.html skywalker.htm [root@linux1 films]# cd

3. Tester la syntaxe et rinitialiser le serveur.


[root@linux1 ~]# service httpd configtest Syntax OK [root@linux1 ~]# apachectl graceful

4. Tester laccs aux pages. On constate que laccs la page daccueil fournit la liste des fichiers prsents la racine des documents. De mme quand on se dplace dans le rpertoire films. Enfin, le lien skywalker.htm fonctionne. Tester galement avec Firefox.
[root@linux1 ~]# lynx -dump 'http://localhost' Index of / [ICO] [1]Name [2]Last modified [3]Size [4]Description _________________________________________________________________ [DIR] [5]films/ 18-Feb-2009 17:34 [TXT] [6]luke.html 18-Feb-2009 17:26 24 [TXT] [7]wador.html 18-Feb-2009 17:27 20 [root@linux1 ~]# lynx -dump 'http://localhost/films' Index of /films [ICO] [1]Name [2]Last modified [3]Size [4]Description

Eyrolles/Tsoft - Linux Administration : les services applicatifs Internet

2-51

Module 2 : Apache
_________________________________________________________________ [DIR] [5]Parent Directory [TXT] [6]liste.html 18-Feb-2009 17:33 27 [TXT] [7]skywalker.htm 18-Feb-2009 17:26 24 [root@linux1 ~]# lynx -dump 'http://localhost/films/liste.html' Opration Fantome [root@linux1 ~]# lynx -dump 'http://localhost/films/skywalker.htm' Luke Skywalker

5. Modifier dynamiquement la configuration (via un fichier .htaccess).


[root@linux1 [root@linux1 [root@linux1 [root@linux1 ~]# cd /www/htdocs/films/ films]# echo "Options -FollowSymLinks -Indexes" > .htaccess films]# chmod a+r .htaccess films]# cd

6. Tester de nouveau laccs au site Web. Maintenant, lindexation et le suivi des liens symboliques sont interdits.
[root@linux1 ~]# lynx -dump 'http://localhost/films' Forbidden [root@linux1 ~]# lynx -dump 'http://localhost/films/skywalker.htm' Forbidden

7. Remettre la configuration dorigine.


[root@linux1 [root@linux1 [root@linux1 [root@linux1 [root@linux1 [root@linux1 ~]# mv /etc/httpd/conf.d/welcome /etc/httpd/conf.d/welcome.conf ~]# cd /etc/httpd/conf conf]# cp httpd.conf httpd.conf.$(date '+%d%H%M') conf]# \cp -f httpd.conf.init httpd.conf conf]# cd ~]# apachectl graceful

Tche 7 : Les sites virtuels par nom


1. Ajouter des noms de machines au service de nom. Tester laccs aux machines. Dans lexercice, on utilise le fichier /etc/hosts. Pour tester les sites virtuels, cest suffisant. En exploitation, il faut rajouter les noms de machines dans les DNS de lentreprise et les associer ladresse IP de la carte rseau du serveur.
[root@linux1 ~]# cp /etc/hosts /etc/hosts.init [root@linux1 ~]# echo "127.0.0.1 www.sith.starwars" >> /etc/hosts [root@linux1 ~]# echo "127.0.0.1 www.jedi.starwars" >> /etc/hosts [root@linux1 ~]# ping -c3 www.sith.starwars PING www.sith.starwars (127.0.0.1) 56(84) bytes of data. 64 bytes from linux1.pinguins (127.0.0.1): icmp_seq=1 ttl=64 time=0.788 ms 64 bytes from linux1.pinguins (127.0.0.1): icmp_seq=2 ttl=64 time=0.293 ms 64 bytes from linux1.pinguins (127.0.0.1): icmp_seq=3 ttl=64 time=0.261 ms --- www.sith.starwars ping statistics --3 packets transmitted, 3 received, 0% packet loss, time 2004ms rtt min/avg/max/mdev = 0.261/0.447/0.788/0.241 ms [root@linux1 ~]# ping -c3 www.jedi.starwars >/dev/null && echo OK || echo ERR OK

2. Modifier la configuration. On ajoute la configuration des sites virtuels la fin du fichier de configuration.
[root@linux1 ~]# cd /etc/httpd/conf [root@linux1 conf]# vi httpd.conf

2-52

Eyrolles/Tsoft - Linux Administration : les services applicatifs Internet

Module 2 : Apache
... NameVirtualHost 127.0.0.1 <VirtualHost 127.0.0.1> ServerName "www.sith.starwars" DocumentRoot "/www/www.sith.starwars" </VirtualHost> <VirtualHost 127.0.0.1> ServerName "www.jedi.starwars" DocumentRoot "/www/www.jedi.starwars" </VirtualHost> [root@linux1 conf]# cd

3. Tester la configuration, rinitialiser le serveur.


[root@linux1 ~]# apachectl configtest Warning: DocumentRoot [/www/www.sith.starwars] does not exist Warning: DocumentRoot [/www/www.jedi.starwars] does not exist Syntax OK [root@linux1 ~]# apachectl graceful

4. Crer les sites virtuels.


[root@linux1 ~]# mkdir -p /www/www.sith.starwars [root@linux1 ~]# echo "<h1>Viens du cote obscur</h1>" > /www/www.sith.starwars/index.html [root@linux1 ~]# mkdir -p /www/www.jedi.starwars [root@linux1 ~]# echo "<h1>Que la force soit avec toi</h1>" > /www/www.jedi.starwars/index.html [root@linux1 ~]# chmod -R a+r /www ; chmod a+x /www/www*starwars

5. Tester. a) On accde bien aux deux sites virtuels.


[root@linux1 ~]# lynx -dump 'http://www.sith.starwars' Viens du cote obscur [root@linux1 ~]# lynx -dump 'http://www.jedi.starwars' Que la force soit avec toi

b) On atteint le premier site virtuel si lon donne un nom ou une adresse IP qui nest pas trait par une balise VirtualHost.
[root@linux1 ~]# lynx -dump 'http://localhost' Viens du cote obscur

c) Si lon donne ladresse diffrente de celles gres par les sites virtuels par nom, on atteint le site principal.
[root@linux1 ~]# lynx -dump 'http://192.168.0.1' Gros titre

6. Interdire laccs au serveur principal. On modifie la directive Listen pour lassocier la carte qui correspond aux serveurs virtuels. Ensuite, le serveur principal ne peut plus tre atteint, mais ses directives de configuration ont servi paramtrer les serveurs virtuels.
[root@linux1 ~]# vi /etc/httpd/conf/httpd.conf Listen 127.0.0.1:80 [root@linux1 ~]# apachectl graceful [root@linux1 ~]# lynx -dump 'http://192.168.0.1' Looking up 192.168.0.1 Making HTTP connection to 192.168.0.1 Alert!: Unable to connect to remote host.

Eyrolles/Tsoft - Linux Administration : les services applicatifs Internet

2-53

Module 2 : Apache
7. Utiliser des fichiers Include (exercice optionnel). a) Dplacer la configuration des sites virtuels dans des fichiers avec un fichier par site.
[root@linux1 ~]# mkdir /etc/httpd/vhost.d [root@linux1 ~]# vi /etc/httpd/vhost.d/www.sith.starwars.conf NameVirtualHost 127.0.0.1 <VirtualHost 127.0.0.1> ServerName "www.sith.starwars" DocumentRoot "/www/www.sith.starwars" </VirtualHost> [root@linux1 ~]# vi /etc/httpd/vhost.d/www.jedi.starwars.conf NameVirtualHost 127.0.0.1 <VirtualHost 127.0.0.1> ServerName "www.jedi.starwars" DocumentRoot "/www/www.jedi.starwars" </VirtualHost>

b) Modifier la configuration principale pour supprimer la dfinition des sites virtuels et la remplacer par linclusion des fichiers.
[root@linux1 ~]# vi /etc/httpd/conf/httpd.conf ... Include vhost.d/*.conf

c) Vrifier la syntaxe et rinitialiser le serveur.


[root@linux1 ~]# apachectl configtest Syntax OK [root@linux1 ~]# apachectl graceful

d) Tester (exercice n5). 8. Remettre la configuration dorigine.


[root@linux1 [root@linux1 [root@linux1 [root@linux1 [root@linux1 ~]# cd /etc/httpd/conf conf]# cp httpd.conf httpd.conf.$(date '+%d%H%M') conf]# \cp -f httpd.conf.init httpd.conf conf]# cd ~]# apachectl graceful

Tche 8 : Les sites virtuels par adresse


1. Modifier la configuration. On ajoute la configuration des sites virtuels la fin du fichier de configuration.
[root@linux1 ~]# cd /etc/httpd/conf [root@linux1 conf]# vi httpd.conf <VirtualHost 192.168.0.11> DocumentRoot "/www/venus" </VirtualHost> <VirtualHost 192.168.0.21> DocumentRoot "/www/mars" </VirtualHost> [root@linux1 conf]# cd

2. Crer les sites virtuels.


[root@linux1 [root@linux1 [root@linux1 [root@linux1 ~]# ~]# ~]# ~]# mkdir -p /www/venus /www/mars echo "Les femmes viennent de Venus" > /www/venus/index.html echo "Les hommes viennent de Mars" > /www/mars/index.html chmod -R a+r /www ; chmod a+x /www/venus /www/mars

2-54

Eyrolles/Tsoft - Linux Administration : les services applicatifs Internet

Module 2 : Apache
3. Ajouter des cartes rseaux. On cre des cartes rseaux virtuelles. On leur donne une adresse IP. On leur associe un nom de machine dans le service de nom.
[root@linux1 ~]# ifconfig eth0:0 192.168.0.11 [root@linux1 ~]# ifconfig eth0:1 192.168.0.21 [root@linux1 ~]# echo "192.168.0.11 venus" >> /etc/hosts [root@linux1 ~]# echo "192.168.0.21 mars" >> /etc/hosts [root@linux1 ~]# ifconfig | awk '/^eth/ { print ; getline; print }' eth0 Link encap:Ethernet HWaddr 00:01:00:00:00:01 inet addr:192.168.0.1 Bcast:192.168.0.255 Mask:255.255.255.0 eth0:0 Link encap:Ethernet HWaddr 00:01:00:00:00:01 inet addr:192.168.0.11 Bcast:192.168.0.255 Mask:255.255.255.0 eth0:1 Link encap:Ethernet HWaddr 00:01:00:00:00:01 inet addr:192.168.0.21 Bcast:192.168.0.255 Mask:255.255.255.0 [root@linux1 ~]# ping -c1 192.168.0.11 > /dev/null && echo OK OK [root@linux1 ~]# ping -c1 192.168.0.21 > /dev/null && echo OK OK

4. Redmarrer le serveur.
[root@linux1 ~]# apachectl configtest Syntax OK

5. Tester.
[root@linux1 ~]# service httpd restart Stopping httpd: Starting httpd: [root@linux1 ~]# lynx -dump 'http://venus' Les femmes viennent de Venus [root@linux1 ~]# lynx -dump 'http://mars' Les hommes viennent de Mars [root@linux1 ~]# lynx -dump 'http://192.168.0.11' Les femmes viennent de Venus [root@linux1 ~]# lynx -dump 'http://192.168.0.21' Les hommes viennent de Mars [root@linux1 ~]# lynx -dump 'http://linux1' Gros titre [ [ OK OK ] ]

6. Remettre la configuration dorigine.


[root@linux1 [root@linux1 [root@linux1 [root@linux1 [root@linux1 [root@linux1 [root@linux1 conf]# ifconfig eth0:0 down conf]# ifconfig eth0:1 down ~]# cd /etc/httpd/conf conf]# cp httpd.conf httpd.conf.$(date '+%d%H%M') conf]# \cp -f httpd.conf.init httpd.conf conf]# cd ~]# apachectl graceful

Tche 9 : Les pages dynamiques


1. Crer des CGI. a) Vrifier la prsence de la directive ScriptAlias dans la configuration dApache.
[root@linux1 ~]# grep '^\s*ScriptAlias' /etc/httpd/conf/httpd.conf ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"

Eyrolles/Tsoft - Linux Administration : les services applicatifs Internet

2-55