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