Cours Introduction - Systèmes/Services - Unix Cours 5 : Serveurs et configuration Le Cocq Michel lecocq@ipgp.fr Licence de Sciences et Technologies - Mention Informatique 16 Février 2016
Rappel plan général Introduction au système UNIX - mardi 12.01.2016 Services, processus, signaux - jeudi 14.01.2016 Scripting shell mardi 19.01.2016 Applications Client/Serveur et Web jeudi 11.02.2016 Serveurs et configuration mardi 16.02.2016 Systèmes/Services - Unix 16 Février 2016 2 / 22
Plan du cours 6 : Serveurs et configuration 1 Serveur Web 2 Votre propre serveur HTTP en python 3 Apache 4 Apache utilisation 5 Apache Configuration Systèmes/Services - Unix 16 Février 2016 3 / 22
Serveur Web Présentation Qu est-ce qu un serveur web? logiciel servant des requêtes sur le protocole HTTP développé pour le World Wide Web. un ordinateur sur lequel tourne un serveur HTTP est un serveur Web. serveur web peut aussi désigner le logiciel en lui même. Systèmes/Services - Unix 16 Février 2016 4 / 22
Serveur Web Présentation Les serveurs HTTP les plus utilisés sont : Apache : HTTP serveur de la Apache Software Foundation. IIS : Internet Information Services de Microsoft (IIS) Sun ONE : Sun Microsystems Systèmes/Services - Unix 16 Février 2016 5 / 22
Serveur Web Présentation Un serveur HTTP est à l écoute des connections sur un port donné. Le port standard pour un serveur HTTP est le numéro 80. Le client d un serveur HTTP est le navigateur Internet. A chaque requête qu il reçoit le serveur présente à l utilisateur la page demandée. Examples quand dans un navigateur internet un internaute saisit l adresse http://www.google.fr/, il envoit une requête au serveur HTTP de l entreprise Google qui transfère des données (une page au format HTML) qui sont interprétées et affichées par votre navigateur. Sur certains serveurs le port d écoute n est pas 80 mais par exemple 1234. Dans ce cas on accèdera au serveur par l adresse suivante : http://www.site.com:1234/. Systèmes/Services - Unix 16 Février 2016 6 / 22
Serveur Web Que peut faire un serveur web? Servir une page (fichier) en ajoutant des entêtes appropriés Exécuter un script et renvoyer le résultat comme une page. CGI (traitement de formulaires, etc). Interpréter des instructions encodées dans des tags HTML Vérifier la machine d origine : gestion d autorisations suivant provenance Vérifier un mot de passe et un login : autorisations suivant utilisateur Systèmes/Services - Unix 16 Février 2016 7 / 22
Serveur Web Que peut faire un serveur web? suite Reconnaître les entêtes de requêtes et servir des pages différentes suivant le client ou ses préférences Avoir des pages différentes selon le navigateur (browser) Parler la langue demandée Voir http://www.apache.org/docs/content-negotiation.html Lister des répertoires Voir http://www.apache.org/docs/mod_dir.html Encrypter les données et sécuriser les transactions protocole https Voir http://www.apache-ssl.org Systèmes/Services - Unix 16 Février 2016 8 / 22
Serveur Web Que peut faire un serveur web? suite et fin Répondre différemment suivant le nom de la machine Une même machine peut porter plusieurs adresses IP (interfaces virtuelles) une seule machine avec une seule carte réseau et une seule adresse IP peut héberger plusieurs serveurs WWW virtuels par exemple : répondre à http://www.toto.fr et http://www.tata.fr en renvoyant des pages différentes et en maintenant des logs et des configs propres à chaque serveur virtuel Systèmes/Services - Unix 16 Février 2016 9 / 22
Votre propre serveur HTTP Python Un petit serveur web en python, rapidement pour pouvoir partager ponctuellement des fichiers. Examples python -c import SimpleHTTPServer;SimpleHTTPServer.test() Lance un petit serveur http sur le port 8000, partageant les fichiers du répertoire courant. Pointez vôtre navigateur sur http://127.0.0.1:8000/ et vous servira le fichier index.html si il existe, sinon il listera le répertoire courant. Systèmes/Services - Unix 16 Février 2016 10 / 22
Apache Principales caractéristiques Ecrit en C (portable), plate forme UNIX (ou Linux) recommandée Multi-processus / multi-thread (daemon httpd) Configuration très flexible Architecture modulaire Comment obtenir Apache? inclu dans la plupart des distributions linux (httpd) sources et binaires sur http://www.apache.org/dist/httpd première version décembre 1995 dernière version : Apache 2.2 Systèmes/Services - Unix 16 Février 2016 11 / 22
Apache Modules compilés (statiques) ou liés dynamiquement (.so ou.dll) permettent d ajouter des fonctionalités, exemples: mod_speling : correction des URL erronées mod_ssl : gestion SSL (https) mod_cgi : gestion protocole CGI mod_alias : définition d alias (URL) etc... plusieurs dizaines de modules directives de configuration spécifiques à chaque module l API des modules est documentée: on peut définir de nouveaux modules (en langage C) si besoin. Systèmes/Services - Unix 16 Février 2016 12 / 22
Apache Les répertoires importants /usr/loca/bin/httpd : l exécutable Apache /etc/apache : les fichiers de configuration httpd.conf /www : le site web /var/log/apache/logs : les journaux Systèmes/Services - Unix 16 Février 2016 13 / 22
Apache start / stop / restart lancer apache : /etc/init.d/httpd start stop apache : /etc/init.d/httpd stop apachectl : Apache HTTP Server Control Interface start Start the Apache httpd daemon. stop Stops the Apache httpd daemon. restart Restarts the Apache httpd daemon. fullstatus Displays a full status report from mod_status. status Displays a brief status report. graceful Gracefully restarts the Apache httpd daemon. graceful-stop Gracefully stops the Apache httpd daemon. configtest Run a configuration file syntax test. Systèmes/Services - Unix 16 Février 2016 14 / 22
Apache Configuration Fichier httpd.conf (RedHat/Fedora: /etc/httpd/conf/httpd.conf) Principales options: ServerName : définit le nom du serveur monserveur.org port TCP (défaut 80) Listen 80 Répertoire où ce trouve le serveur ServerRoot "/etc/httpd" fichier où le serveur écrira le PID du processus /var/run/httpd.pid e Cocq Michel (Licence de Sciences et Technologies Cours Introduction - Mention -Informatique) Systèmes/Services - Unix 16 Février 2016 15 / 22
Apache Configuration (suite) Modules à charger LoadModule ldap_module modules/mod_ldap.so Inclusion d autre fichiers de configuration Include conf.d/*.conf Utilisateur unix utilisé par le daemon (sécurité) User apache Group apache Bien choisir les droits associés à l utilisateur apache (propriétés des fichiers et répertoires) Répertoire racine (pages HTML à servir) DocumentRoot "/var/www/html" Ainsi, http://serveur/page.html sera associé au fichier /var/www/html/page.html Systèmes/Services - Unix 16 Février 2016 16 / 22
Apache Configuration (répertoires) Options associées à chaque répertoire servi <Directory "/var/www/html"> Options Indexes FollowSymLinks # controle d accès Order allow,deny Allow from all </Directory> Examples repertoire secret réservé à une machine: <Directory "/var/www/html/secret"> Order allow,deny Allow from ma.machine.org Deny from all </Directory> Systèmes/Services - Unix 16 Février 2016 17 / 22
Apache Configuration (index) Que faire lorsque le client demande un répertoire? (et non un fichier) http://mon.beau-site.org/ (pas de nom de fichier) Directive DirectoryIndex DirectoryIndex index.html Voir aussi l option Indexes Systèmes/Services - Unix 16 Février 2016 18 / 22
Apache Configuration (logs) Logs d accès et d erreurs configurables ErrorLog logs/error_log LogLevel warn LogFormat "%h %l %u %t %r %>s %b" common CustomLog logs/access_log common 193.101.94.101 - - [21/Nov/2004:17:18:47 +0100] "GET /robots.txt HTTP/1.1" 200 87 "-" "Mozilla/4.0 (compatible; MSIE 5.0; Windows95) VoilaBot BETA 1.2 (http://www.voila.com/)" 195.101.94.101 - - [21/Nov/2004:17:18:58 +0100] "GET /Departement/Visite/Bureaux/O211 HTTP/1.1" 200 6173 "-" "Mozilla/4.0(compatible; MSIE 5.0; Windows 95) VoilaBot BETA 1.2 (http://www.voila.com/)" 81.65.74.2 - - [21/Nov/2004:17:19:07 +0100] "GET /favicon.ico HTTP/1.1" 200 1406 "-" "Mozilla/4.0 (compatible; MSIE 6.0; WindowsNT 5.1)" 218.175.198.189 - - [21/Nov/2004:17:20:28 +0100] "GET /img/logogtr HTTP/1.0" 200 1091 "http://www-gtr.iutv.univ-paris13.fr/equipe" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)" 83.254.108.216 - - [21/Nov/2004:17:20:57 +0100] "GET /Cours/Mat/Communication/DocSyntheses/synthese0 HTTP/1.1" 200 20903 "-""Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; FREE; SV1;.NET CLR 1.0.3705)" 217.175.187.189 - - [21/Nov/2004:17:21:37 +0100] "GET /Departement/Formation HTTP/1.0" 200 6921 "http://www-gtr.iutv.univ-paris13.fr/equipe" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)" Systèmes/Services - Unix 16 Février 2016 19 / 22
Apache Configuration (alias) La directive Alias permet de redéfinir certaines URL Examples Alias /icons/ "/var/www/icons/" Alias /error/ "/var/www/error/" Pour les scripts (CGI), utiliser ScriptAlias /cgi-bin/ "/var/www/cgi-bin/" Pour des ré-écriture plus complexes, voir le module mod_rewrite et sa directive RewriteRule Systèmes/Services - Unix 16 Février 2016 20 / 22
Apache Configuration (cgi) On repère habituellement les scripts CGI par leur extension (ex. ".cgi") ou leur répertoire. Configurations simples typiques Scripts dans un répertoire ScriptAlias /cgi-bin/ "/var/www/cgi-bin/" <Directory "/var/www/cgi-bin"> AllowOverride None Options None Order allow,deny Allow from all </Directory> Ou bien traiter les fichiers.cgi comme des scripts CGI AddHandler cgi-script.cgi Systèmes/Services - Unix 16 Février 2016 21 / 22
Apache (pour en savoir plus...) Après ce bref survol, consulter: apache.org : documentations, logiciels Apache, la référence par Ben Peter Laurie, O Reilly Apache 2.0, guide de configuration Linux, Charles Aulds, Eyrolles 2003. Systèmes/Services - Unix 16 Février 2016 22 / 22