• Aucun résultat trouvé

Web statique : client-serveur. Web et LAMP. Discussion HTTP. Caractéristiques du HTTP

N/A
N/A
Protected

Academic year: 2022

Partager "Web statique : client-serveur. Web et LAMP. Discussion HTTP. Caractéristiques du HTTP"

Copied!
11
0
0

Texte intégral

(1)

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

(2)

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...

(3)

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

(4)

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>

(5)

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

(6)

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

(7)

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 . . .

(8)

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

(9)

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

(10)

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

(11)

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

Références

Documents relatifs

Dans un premier temps, le client envoie une requête de connexion sécurisée au serveur (https au lieu de http). Dans un second temps, le serveur établit la connexion mais il fournit

Un serveur Web est un serveur socket mode connecté (TCP/IP). Vous pourrez donc utiliser au choix Java  ou C/C++ pour vos développements. 2. Ceci est

Pour sélectionner des données nuplet_d_Attributs dans la table MaTable selon une condition Cond, on utilise la requête suivante : SELECT nuplet_d_attributs!. FROM MaTable

Et bien pour plusieurs raisons. Tout d’abord, effectivement cela peut sembler un peu triste, un site qui ne change pas. Mais en y réfléchissant, il existe plein de cas d’usage. Le

— http://SERVEUR/cgi-bin/ : répertoire d’exécution des scripts CGI pointant vers /usr/lib/cgi-bin/ ; Ce serveur est également configuré pour exécuter les scripts PHP

Exercice : trouvez la directive DocumentRoot dans le fichier de configuration et modifiez la racine pour qu’elle pointe vers un répertoire de votre choix (par exemple c:/web )..

In this paper we show this idea in practice by describing a platform for developing Web Client applications using agent programming technologies, in particular Jason for program-

Avec les connaissances que vous avez maintenant, vous êtes en mesure de réaliser de vrais scripts qui pourront vous être utiles pour votre site, comme un mini-chat (ce qu'on va