16
Administration Jean-François Bouchaudy Linux Tome 4 Les services applicatifs Internet : Web, email, FTP © soft et Groupe Eyrolles, 2009, ISBN : 978-2-212-12248-0

Linux - Librairie Eyrolles · [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 "-"

  • Upload
    dangtu

  • View
    218

  • Download
    3

Embed Size (px)

Citation preview

Administration

Jean-François Bouchaudy

LinuxTome 4

Les services applicatifs Internet :Web, email, FTP

faux-titre_t4.indd 2 3/06/09 14:39

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

Module 2 : Apache

© Eyrolles/Tsoft - Linux Administration : les services applicatifs Internet 2-41

ATELIERS

Tâche 1 : Le Web (optionnel) ................................................................................ 5 mn

Tâche 2 : Le protocole HTTP (optionnel) ............................................................. 10 mn

Tâche 3 : Utiliser un serveur Apache sans configuration ...................................... 10 mn

Tâche 4 : Installer Apache version 1.3 à partir des sources (optionnel) ................ 15 mn

Tâche 5 : Configurer de manière élémentaire Apache .......................................... 10 mn

Tâche 6 : Les fichiers .htaccess ............................................................................. 10 mn

Tâche 7 : Les sites virtuels par nom ...................................................................... 15 mn

Tâche 8 : Les sites virtuels par adresse (optionnel) ............................................... 10 mn

Tâche 9 : Les pages dynamiques ........................................................................... 30 mn

Tâche 10 : Restreindre les accès ............................................................................ 15 mn

Tâche 11 : SSL ...................................................................................................... 15 mn

Tâche 12 : Proxy (optionnel) ................................................................................. 10 mn

Tâche 13 : Proxy-reverse (optionnel) .................................................................... 15 mn

Tâche 14 : Les performances (optionnel) .............................................................. 15 mn

Tâche 15 : Les journaux ........................................................................................ 10 mn

Tâche 1 : Le Web Au lieu d’utiliser le serveur instru, cette tâche peut être accomplie avec le serveur local (localhost) mais après la tâche « Utiliser un serveur Apache sans configuration ».

1. Est-ce que le navigateur Lynx est installé ? S’il ne l’est pas, il faut l’installer. [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 précédente> Avancer ou reculer d’une page. Ctrl-N, Ctrl-P Avancer ou reculer de deux lignes.

, Se positionner sur le lien suivant, précédent. ou <Return> Activer un lien (il faut être dessus).

Revenir sur la page précédente. G Saisir une URL.

Module 2 : Apache

© Eyrolles/Tsoft - Linux Administration : les services applicatifs Internet 2-42

M Revenir à la page d’accueil. z Stopper le transfert courant. Ctrl-R Rafraîchir la page courante. <Backspace> Revisiter une des URL parcourues. H Afficher l’aide en ligne. / Effectuer une recherche d’une chaîne. Q Quitter Lynx.

3. Parcourir le site instru avec Firefox.

4. Utiliser Lynx de manière scriptable. [root@linux1 ~]# lynx -dump 'http://instru/bonjour.html' Le Web C'est merveilleux avec Apache.

5. Idem, mais on précise le numéro de port. [root@linux1 ~]# lynx -dump 'http://instru.pinguins:80/bonjour.html'

6. Télécharger une page avec l’outil 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 --.-K/s in 0s 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

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>

Module 2 : Apache

© Eyrolles/Tsoft - Linux Administration : les services applicatifs Internet 2-43

</HTML> [root@linux1 ~]#

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

Tâche 2 : Le protocole HTTP Au lieu d’utiliser le serveur instru, cette tâche peut être accomplie avec le serveur local (localhost) mais après la tâche « Utiliser un serveur Apache sans configuration ».

1. Saisir une requête HTTP sous telnet et visualiser la réponse du serveur.

Remarque : il faut valider deux fois après avoir saisi la requête (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 l’analyseur de protocole tcpdump.

a) Vérifier si tcpdump est installé, s’il ne l’est pas, l’installer. [root@linux1 ~]# rpm -q tcpdump tcpdump-3.9.4-12.el5 [root@linux1 ~]# yum -q -y install tcpdump

b) Activer une capture en tâche de fond. On capture l’intégralité des paquets (1500 octets). La capture est mémorisée dans le fichier /tmp/http.tcp. On ne s’intéresse qu’au 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

Module 2 : Apache

© Eyrolles/Tsoft - Linux Administration : les services applicatifs Internet 2-44

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 l’analyseur de protocole graphique Wireshark.

Remarque : dans l’exemple suivant, on visualise une capture effectuée par tcpdump. C’est la manière usuelle d’utiliser Wireshark en production. Cela permet notamment d’effectuer la capture sur un poste non graphique. Évidemment, Wireshark est capable de réaliser lui-même des captures. Le logiciel libre Wireshark est disponible sous Windows.

a) Vérifier si Wireshark est installé, sinon l’installer. [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 effectuée 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 l’outil lwp-request.

a) Vérifier si l’outil lwp-request est installé, sinon l’installer. [root@linux1 ~]# rpm -q perl-libwww-perl perl-libwww-perl-5.805-1.1.1 [root@linux1 ~]# yum -q -y install perl-libwww-perl

Module 2 : Apache

© Eyrolles/Tsoft - Linux Administration : les services applicatifs Internet 2-45

b) Activer la commande sans option, la syntaxe est affichée. [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 Display method and URL before any response -U Display request headers (implies -u) -s Display response status code -S Display response status chain -e Display response headers -d Do not display content -o <format> Process HTML content in various ways -v Show program version -h Print this message -x Extra debugging output

c) Utiliser la commande sans option. [root@linux1 ~]# lwp-request "http://instru/bonjour.html" <HTML> <HEAD> …

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

e) Afficher l’en-tête de la réponse 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

Module 2 : Apache

© Eyrolles/Tsoft - Linux Administration : les services applicatifs Internet 2-46

f) Ajouter une ligne de requête (ici l’hôte 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> …

Tâche 3 : Utiliser un serveur Apache sans configuration 1. Vérifier si Apache est installé, s’il ne l’est pas, l’installer. [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 démarrage.

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. Démarrer le service Apache. [root@linux1 ~]# service httpd start Starting httpd: [ OK ]

4. Vérifier la présence 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. Accéder à la page d’accueil. [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 accès). [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"

Module 2 : Apache

© Eyrolles/Tsoft - Linux Administration : les services applicatifs Internet 2-47

7. Créer un site Web.

a) Se déplacer à la racine des documents. [root@linux1 ~]# cd /var/www/html

b) Créer 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 l’accès au site avec Lynx et Firefox. [root@linux1 ~]# lynx 'http://localhost/'

Tâche 4 : Installer Apache version 1.3 à partir des sources Remarque : Apache 1.3 est disponible sous forme packagée sur les systèmes Debian. Ce n’est pas le cas sous RedHat. Si l’on désire utiliser cette version, il faut l’installer à partir des sources.

1. Télécharger les sources d’Apache 1.3. [root@linux1 ~]# wget 'http://apache.cict.fr/httpd/apache_1.3.41.tar.gz'

2. Vérifier si les outils de développement (compilateur, …) sont installés, s’il 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. Décompresser 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 NWGNUtail.inc WARNING-WIN.TXT cgi-bin/ icons/ NOTICE README conf/ INSTALL NWGNUenvironment.inc README.configure

Module 2 : Apache

© Eyrolles/Tsoft - Linux Administration : les services applicatifs Internet 2-48

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. Créer 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/expat-lite -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 n’est pas conseillé sur un système en exploitation. Il est préférable d’installer Apache sur une machine de développement et ensuite de créer un tarball (cd /usr/local ; tar cvzf /tmp/apache.tgz apache) qu’il suffit de transférer et d’installer sur le serveur en exploitation.

Module 2 : Apache

© Eyrolles/Tsoft - Linux Administration : les services applicatifs Internet 2-49

8. Démarrer le service.

a) Arrêter temporairement le serveur packagé. [root@linux1 ~]# service httpd stop Stopping httpd: [ OK ]

b) Démarrer 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 l’on désire démarrer automatiquement Apache au boot, il faut copier le script apachectl dans le répertoire /etc/init.d et créer un lien dans le répertoire ad hoc, par exemple /etc/rc5.d/S80apachectl. L’utilisation de la commande chkconfig ou de l’outil d’administration Webmin facilite les opérations.

9. Accéder à la page d’accueil. [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 l’arborescence 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. Arrêter le service Open Source et redémarrer 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 ]

Tâche 5 : Configurer de manière élémentaire Apache 1. Sauvegarder la configuration et la modifier.

Le serveur écoute sur le port 8000. Le responsable du serveur possède l’adresse e-mail [email protected]. La racine des documents est le répertoire /www/html. Les journaux sont dans le répertoire /www/logs. On modifie les directives correspondantes. [root@linux1 ~]# cd /etc/httpd/conf

Module 2 : Apache

© Eyrolles/Tsoft - Linux Administration : les services applicatifs Internet 2-50

[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 [email protected] DocumentRoot "/www/html" ErrorLog /www/logs/error_log CustomLog /www/logs/access_log common [root@linux1 conf]# cd

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

3. Vérifier la syntaxe du fichier de configuration. [root@linux1 ~]# apachectl configtest Syntax OK

4. Redémarrer le serveur. Vérifier sa présence. [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 redémarrer brutalement un serveur. Il est préférable de lui demander de se réinitialiser avec la commande apachectl graceful. Les connexions courantes ne sont pas touchées. Par contre, les nouvelles utiliseront la nouvelle configuration.

5. Accéder à la page d’accueil 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 d’origine. [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]# cd [root@linux1 ~]# apachectl graceful

Module 2 : Apache

© Eyrolles/Tsoft - Linux Administration : les services applicatifs Internet 2-51

Tâche 6 : Les fichiers .htaccess 1. Modifier la configuration.

On commence par supprimer l’affichage de la page d’accueil standard (/var/www/error/noindex.html) et l’interdiction d’avoir 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 l’autorisation d’utiliser des fichiers .htaccess et l’indexation automatique des répertoires à 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 ajoutées à la fin invalident les directives précédentes de même nom.

2. Créer 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>Opération 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 réinitialiser le serveur. [root@linux1 ~]# service httpd configtest Syntax OK [root@linux1 ~]# apachectl graceful

4. Tester l’accès aux pages.

On constate que l’accès à la page d’accueil fournit la liste des fichiers présents à la racine des documents. De même quand on se déplace dans le répertoire 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

Module 2 : Apache

© Eyrolles/Tsoft - Linux Administration : les services applicatifs Internet 2-52

_________________________________________________________________ [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 ~]# cd /www/htdocs/films/ [root@linux1 films]# echo "Options -FollowSymLinks -Indexes" > .htaccess [root@linux1 films]# chmod a+r .htaccess [root@linux1 films]# cd

6. Tester de nouveau l’accès au site Web.

Maintenant, l’indexation 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 d’origine. [root@linux1 ~]# mv /etc/httpd/conf.d/welcome /etc/httpd/conf.d/welcome.conf [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]# cd [root@linux1 ~]# apachectl graceful

Tâche 7 : Les sites virtuels par nom 1. Ajouter des noms de machines au service de nom. Tester l’accès aux machines.

Dans l’exercice, on utilise le fichier /etc/hosts. Pour tester les sites virtuels, c’est suffisant. En exploitation, il faut rajouter les noms de machines dans les DNS de l’entreprise et les associer à l’adresse IP de la carte réseau 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

Module 2 : Apache

© Eyrolles/Tsoft - Linux Administration : les services applicatifs Internet 2-53

... 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, réinitialiser 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. Créer 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 accède 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 l’on donne un nom ou une adresse IP qui n’est pas traité par une balise VirtualHost. [root@linux1 ~]# lynx -dump 'http://localhost' Viens du cote obscur

c) Si l’on donne l’adresse différente de celles gérées par les sites virtuels par nom, on atteint le site principal. [root@linux1 ~]# lynx -dump 'http://192.168.0.1' Gros titre

6. Interdire l’accès au serveur principal.

On modifie la directive Listen pour l’associer à la carte qui correspond aux serveurs virtuels. Ensuite, le serveur principal ne peut plus être atteint, mais ses directives de configuration ont servi à paramétrer 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.

Module 2 : Apache

© Eyrolles/Tsoft - Linux Administration : les services applicatifs Internet 2-54

7. Utiliser des fichiers Include (exercice optionnel).

a) Déplacer 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 définition des sites virtuels et la remplacer par l’inclusion des fichiers. [root@linux1 ~]# vi /etc/httpd/conf/httpd.conf ... Include vhost.d/*.conf

c) Vérifier la syntaxe et réinitialiser le serveur. [root@linux1 ~]# apachectl configtest Syntax OK [root@linux1 ~]# apachectl graceful

d) Tester (exercice n°5).

8. Remettre la configuration d’origine. [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]# cd [root@linux1 ~]# apachectl graceful

Tâche 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. Créer les sites virtuels. [root@linux1 ~]# mkdir -p /www/venus /www/mars [root@linux1 ~]# echo "Les femmes viennent de Venus" > /www/venus/index.html [root@linux1 ~]# echo "Les hommes viennent de Mars" > /www/mars/index.html [root@linux1 ~]# chmod -R a+r /www ; chmod a+x /www/venus /www/mars

Module 2 : Apache

© Eyrolles/Tsoft - Linux Administration : les services applicatifs Internet 2-55

3. Ajouter des cartes réseaux.

On crée des cartes réseaux 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. Redémarrer le serveur. [root@linux1 ~]# apachectl configtest Syntax OK

5. Tester. [root@linux1 ~]# service httpd restart Stopping httpd: [ OK ] Starting httpd: [ OK ] [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

6. Remettre la configuration d’origine. [root@linux1 conf]# ifconfig eth0:0 down [root@linux1 conf]# ifconfig eth0:1 down [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]# cd [root@linux1 ~]# apachectl graceful

Tâche 9 : Les pages dynamiques 1. Créer des CGI.

a) Vérifier la présence de la directive ScriptAlias dans la configuration d’Apache. [root@linux1 ~]# grep '^\s*ScriptAlias' /etc/httpd/conf/httpd.conf ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"