Web statique : client-serveur Requete HTTP Web et LAMP navigateur Serveur web (apache) Client Reponse HTTP Serveur Discussion HTTP Exemple de requête HTTP GET /page-test.html HTTP/1.1 Host : www.exemple.fr User-Agent : Opera/9.22 (X11 ; Linux x86_64 ; U ; en) Accept : text/html, application/xml ;q=0.9 Accept-Charset : iso-8859-1, utf-8 Exemple de réponse HTTP HTTP/1.1 200 OK Date : Tue, 13 Nov 2007 10 :32 :48 GMT Server : Apache/2.0.52 (CentOS) Accept-Ranges : bytes Connection : close Content-Type : text/html ; charset=utf-8... [HTML de la page]... Caractéristiques du HTTP Un dialogue client-serveur est formé de : Requête HTTP source d'informations variées : IP, version du navigateur, OS, langue, page de provenance, etc. Réponse HTTP entête + contenu contenu pas forcément en HTML : Content-Type (MIME) permet la redirection d'url Exemple de réponse : Redirection HTTP HTTP/1.x 301 Moved Permanently Date : Tue, 13 Nov 2007 10 :32 :48 GMT Location : http ://newserver.fr/page.php
Serveur : Common Gateway Interface navigateur Client Requete HTTP Reponse HTTP Serveur web (apache) Serveur exécute Le serveur web (apache) lance un nouveau processus ce processus envoie un contenu sur la sortie standard apache redirige ce contenu vers le navigateur Lent et lourd Il existe des variantes (FAST_CGI) pour améliorer les performances. processus indépendant (.exe sous Win) Serveur : Modules et langages web On remplace le CGI par une extension du serveur web (module). navigateur Client Requete HTTP Reponse HTTP permet d'utiliser un langage interprété Serveur web (apache) Serveur module PHP compile exécute cette extension (module) est spécique au serveur web. = seuls certains langages sont possibles : PHP, C#, Perl, Ruby, Python... fichier.php Applications 3-tier LAMP : une architecture modulaire et exible navigateur Client 1 Requete HTTP Reponse HTTP 3 Serveur web (apache) Serveur module PHP 2 Base de données (MySQL) 1. Les composantes Linux Apache MySQL Php : fortement lié à Apache (module) 3 parties : client serveur SGDB Les données persistantes sont stockées dans MySQL. 2. Les variantes Pour Windows : EasyPHP, XAMP... Serveurs web : lighttpd... BdD SQL : PostgreSQL, SQLite, Oracle... Langages interprétés : Perl, Python, Ruby...
Installation Une architecture modulaire Documentation : http://localhost/manual/en/mod/ Les composants à installer 1. Apache 2.2.x 2. MySQL 5.0 ou 5.1 3. Php 5.2 ou 5.3 4. PhpMyAdmin 2.11.x ou 3.2.x En pratique 1. aptitude install apache2.2 apache2-doc >... 2. aptitude install phpmyadmin > PHP, MySQL... Cinq niveaux d'intégration des composants 1. Core 2. MPM 3. Base 4. Extension 5. Experimental En pratique (Debian) Répertoires de conguration mods-available module.load nom et chier à charger(.so) module.conf conguration (optionnel) Commandes : a2enmod et a2dismod MPM - Multi-Processing Module Ordonnancement des réponses aux requêtes Modules sans threads (classiques) mpm_prefork (défaut) : le plus stable mpm_itk (contrib.) : variante, un utilisateur par vhost Modules avec threads (processus légers) mpm_worker : multi-threads + multi-processus plus léger, plus réactif mpm_event (var. expérimentale) selon système incompatible avec mod_ssl Remarques modules dépendants du système d'exploitation et du matériel Optimisation : plusieurs paramètres selon le MPM choisi (4 à 6) Conguration Quatre niveaux de contextes 1. Serveur (server cong) 2. Hôte virtuel (virtual host) 3. Directory (cf plus bas) 4..htaccess (selon AllowOverride) Sections de niveau Directory Files, FilesMatch : chier Directory, DirectoryMatch : répertoire Location, LocationMatch : URL Proxy, ProxyMatch
Résolution des URL Base : DocumentRoot Module mod_alias 1. Redirect, RedirectMatch : URL-path -> URL 2. Alias, AliasMatch : URL-path -> FS 3. ScriptAlias, ScriptAliasMatch : URL-path -> FS Module mod_rewrite Moteur de ré-écriture URL -> URL... Contenus dynamiques Trois méthodes principales CGI (Common Gateway Interface) + FastCGI... Modules Apache : mod_perl, mod_php... Méthodes internes à Apache : mod_info, mod_status Gestion des scripts CGI Dénitions des Handlers SetHandler (dans une section) (core) AddHandler, RemoveHandler <handler> <.ext> (mod_mime) Dénition des actions (mod_action) Action <handler mime-type> <script-cgi> (mod_action) Script <methode=put GET> <script-cgi> (mod_action) Voir aussi : ScriptAlias, ScriptAliasMatch Documentation :.../handler.html Authentication et autorisation Gestion multi-sites mod_auth_basic (ou mod_auth_digest) <Location...> AuthUserFile /etc/apache2/docs.htpasswd AuthType basic AuthName "Documents confidentiels" require valid-user </Location> mod_authn_* : authentications spéciques Deux usages principaux hôtes virtuels (plusieurs noms sur un serveur) HTTPS : sites sécurisés (HTTP over SSL) En pratique (Debian) Deux répertoires : sites-available et sites-enabled Commandes : a2ensite et a2dissite Directive de section <VirtualHost> mod_authz_* : autorisations spéciques
Diagnostic PHP - le langage Les logs Apache ErrorLog + LogLevel CustomLog + LogFormat Module mod_status apache2ctl [status fullstatus] page http://localhost/server-status (ou URL personnalisée) Module mod_info page http://localhost/server-info (ou URL personnalisée) historique : 1995-2009 (5.3.0)... un langage de script compilé embarqué dans le HTML (langage de template) évolution progressive et complexication traitement automatisé du texte connectable aux principales BdD (MySQL...) couche objet frameworks de développement PHP - conguration et administration PHP - diagnostic php.ini Les extensions PHP PEAR (PHP Extension and Application Repository) : composants PHP http://pear.php.net PECL (PHP Extension Community Library) : composants compilés (C) http://pecl.php.net paquet Debian php-pear ex. pear install Auth_SASL attention aux recouvrements Pear / Debian phpinfo() php5 CLI (Command Line Interface) Débogage : xdebug : administration et développement
Le monde des bases de données Principaux SGBDR du marché Les applications bureautiques tout-en-un File Maker Pro MS Access... Les applications clients-serveurs (SGBD) modèle relationnel ultra-majoritaire (tables=relations) un standard : SQL (Structured Query Language) autres modèles : objet, attribut-valeur... SGBDR propriétaires Oracle DB2 (IBM) MS SQL Server... SGBDR libres MySQL PostgreSQL Firebird (fork de Borland InterBase) SQLite embarqué (p. ex. Firefox, Thunderbird) SQL : Structured Query Language Un langage de requêtes normalisé Partagé (plus ou moins) par les principaux SGBDR Ayant subi plusieurs évolutions SQL-86 (ANSI/ISO) SQL-89 ou SQL1 SQL-92 ou SQL2 SQL-99 ou SQL3 SQL:2003 SQL:2008 (en cours d'élaboration) Composé de cinq parties principales : LDD (langage de dénition des données) LMD (langage de manipulation des données) LCD (langage de contrôle des données) LCT (langage de contrôle des transactions) SQL procedural : PSM (Persistent Stored Module), CLI (Call Level Interface), Embedded SQL... MySQL c'est... une base de donnée relationnelle créée en 1995 modèle client-serveur une application légère dans le monde des SGBD développée par une société suédoise (ABSoft) Rachetée par Sun Microsytems début 2008. diusée sous double licence libre (GPL) pour un usage interne ou libre propriétaire payant pour un usage propriétaire le plus répandu des SGBDR libres particulièrement utilisé sur le web (LAMP) multi plates-formes : Linux, Windows, OSX, etc. une documentation de référence en ligne (HTML, PDF) http://dev.mysql.com/doc/refman/5.0/en/index.html partiellement conforme au standard SQL
PhpMyAdmin - TP Applications web installation du paquet Debian importation de la base disques.sql manipulation des tables et relations paquet Debian : Mediawiki à la main : GLPI Sauvegarde et archivage Rappel : archives tar (archivage) + gzip / bzip2 (compression) Sauvegarde et archivage Sauvegardes Historiquement, sur bandes = accès longs, séquentiels images (disque ou partition) : dd, partimage, Clonezilla dump + restore : outil Unix historique de sauvegarde, orienté bandes cpio : alternative à tar rsync : commande orientée synchronisation (locale ou distante) Applications complètes Amanda : disques + bandes, ligne de commande BackupPC : disques seulement, interface web...
Sauvegarde et archivage - Unix traditionnel rsync : synchronisation de répertoires dump + restore sauvegarde totale de /etc avec dump restauration interactive de fstab et modprobe.d dans /mnt/vol/etc sauvegarde d'un système de chier au niveau 0 (complète) modication de quelques chiers sauvegarde incrémentale des diérences restauration complète Modes de transfert push : le client envoie ses données pull : le serveur récupère les données ciblées Protocoles réseau utilisables local shell distant : rsh (obsolète), ssh rsync hote :/... rsyncd : démon et protocole spécique rsync hote : :/... rsyncd + shell distant! Fondation : librsync calcul ecace des diérences entre binaires algorithme rolling checksum Surcouches à rsync / librsync rsync simple Idée : snapshots (images du FS) sauvegardes incrémentales via rsync liens durs pour compléter Solutions légères rdi-backup (python) : push+pull rsnapshot (perl) : pull dirvish (perl) : pull rlbackup (C) : push (vise la sécurité) Applications BackupPC (perl) : interface web rsync en local rsync -av (-d) Source Destination Attention à la diérence : Source et Source/ distant - mode push rsync -av -z Source <(user@)host> :/Destination distant - mode pull rsync -av -z <(user@)host> :/Source Destination
rsyncd - protocole de transfert Protocole spécique : TCP/873 Démarrage : 2 méthodes, cf. etc/default/rsync Dénition de modules (partages à la Samba) man rsyncd.conf /usr/share/doc/rsync/examples/rsyncd.conf [home] comment = espace utilisateurs path = /home read only = no uid = 0 # auth users = backuppc # secrets file = /etc/rsyncd.secrets # hosts allow = 192.168.0.0/24 BackupPC - Conguration Debian Conguration : dans /etc/backuppc config.pl (Perl) hosts chaque client : <hote>.pl Méthodes de transfert possibles Unix : rsync, rsyncd, tar Windows : smb, rsyncd Exemple : conguration d'un client en rsyncd $Conf{XferMethod} = 'rsyncd'; $Conf{RsyncdUserName} = 'backuppc'; $Conf{RsyncdPasswd} = 'backuppc'; $Conf{RsyncdAuthRequired} = 1; $Conf{RsyncShareName} = ['home', 'www']; Compléments : suivi de version et réplication Suivi de version Pour les chiers sensibles, par exemple /etc/ Principe : stocker l'historique des versions successives Outils : CVS, Subversion, SVK... Supervision réseau Réplication Pour la sécurité et l'intégrité des données, la redondance les chiers de log (via rsyslog, syslog-ng...) les bases de données (serveurs maître et esclaves) les annuaires (LDAP...)
Introduction à la supervision réseau Pour quoi faire? Statistiques et suivi temporel : collecte, achage Alertes : mail, Instant Messenger, etc. Actions : relancer un service, couper un port Comment? les diérentes options collecte passive (à la ping) agent (client) serveur centralisateur Multiplicité des solutions cf Wikipedia, Network Monitoring Comparison Supervision légère - monit Installer monit : un superviseur simple Surveillance des processus et ressources lancer / relancer un service l'arrêter s'il sature le système Surveillance des changements chiers : date, taille, checksum... Écriture des logs Interface web TP : surveillance du serveur DNS Adapter http://www.debian-administration.org/articles/269 TP Rsyslog - fonctionnalités avancées 1. envoyer les logs d'authentication sur un serveur de collecte 2. avec un horodatage précis (microseconde) 3. par protocole TCP (test du tampon) 4. séparer les logs sudo des autres sur le collecteur 5. passer par un protocole chiré! Nagios - un aperçu Présentation Poids lourd des logiciels de supervision libres Conception très modulaire (plug-ins) Nombreuses interfaces, dont le web Installation (debian) nagios.cfg : conguration principale pour Apache : ajouter un chier htpasswd.users cgi.cfg : use_auth=0 TP : ajouter un hôte à superviser www.debian-administration.org/article/using_ Nagios_to_Monitor_Networks Pour aller plus loin : Centreon
SNMP : Simple (!) Network Monitoring Protocol MIB : base universelle des données supervisables structure hiérarchique (arbre), avec délégation (cf DNS, LDAP) matériels : routeurs, imprimantes, onduleurs... variables : uptime, le d'attente, température, autonomie... complexe : nombreuses normes, navigateurs MIB... http://www.debianadmin.com/ linux-snmp-oids-for-cpumemory-and-disk-statistics. html Implémentation de référence : Net-SNMP un agent (démon) de nombreux plugins (perl, python...) une suite de commandes : snmpwalk... http://www.debianhelp.co.uk/snmp.htm SNMP compatible avec de nombreux logiciels