Beruflich Dokumente
Kultur Dokumente
!! !!
Objets manipuls sur le serveur sont reprs par leur URL Bas sur le protocole HTTP
HTTP
!!
HTTP: HyperText Transfert Protocol Protocole au dessus de TCP/IP. Dfinit le langage utilis pour les changes entre client et serveur Web HTTP est un protocole dit stateless (sans tat), ce qui implique quil est ncessaire dtablir une connexion chaque requte
!!
!!
!!
URL
!! URL:
Uniform Resource Locator !! fournit un shma dadressage pour spcifier les ressources de lInternet. !! La forme dun URL est la suivante
! ! ! ! ! !
protocole://site:port/chemin, avec: protocole: HTTP, HTTPS, FTP, ! site: le nom dune machine ou adresse IP Port: numro de port identifie un programme qui s'excute sur le serveur. (port standard) Chemin: chemin d'accs a la ressource Ex: http://www.ensa.ac.ma/grt/index.php
Slection dun URL . Le client envoie une requte HTTP au serveur. Le serveur:
! ! ! !
reoit la requte, tablie une connexion de type socket avec le client expdie le fichier HTML demand ferme la connexion.
!!
serveur
!! !! !! !! !! !! !!
Demande de connexion Attente de la rponse du serveur tablissement de la connexion Envoi dune requte (URL) Rponse du serveur Affichage de la rponse Fermeture de la connexion
Clients HTTP
!!
Autre nom:
! ! !
User agent HTTP Browser Web Navigateur Web le tout premier : NCSA Mosaic Internet Explorer (le plus utilis) Mozillz Firefox Safari Netscape Konqueror !
!!
Exemples:
! ! ! ! ! ! !
Serveurs Web
!!
Apache (Apache Group) IIS (Microsoft) Sun Java System Web Server (Sun) Google Lighttpd (libre) NSCA HTTPD (le premier serveur web)
Serveurs Web
Top Servers Across All Domains August 1995 November 2013 http://news.netcraft.com/archives/web_server_survey.html
Serveurs Web
2&()3$4567$*
44.33% 24.25% 14.00% 4.81%
Apache: Historique
!!
Avril 1995, version 0.6.2, 600 serveurs, 3% du march mondial Un an plus tard, le plus populaire avec 43,000 serveurs, 29% du march. 2002: plus de 20 millions de serveurs Apache, 53% du march Novembre 2010, plus de 148 millions de serveurs Apache, 60% du march Novembre 2013, plus de 348 millions de serveurs Apache, 45% du march
!!
!!
!!
!!
Apache: Avantages
!! !! !! !! !! !!
cest un logiciel libre ; portable (il tourne sur la plupart des UNIX et mme sur Windows NT) ; Souvent disponible sur les distributions Linux. le dveloppement est actif ; Riche en fonctionnalits. Modulable et configurable.
Apache: Installation
!!
Installation
apt-get install apache2
!!
!!
!! !!
!!
Fichiers de Configurations :
!!
Ci-dessous les fichiers de configuration, ils sont stocks dans le rpertoire /etc/apache2/
!
envvars: est utilis pour dfinir des variables d'environnement propres apache ; ports.conf contient la directive listen qui spcifie les adresses et les ports d'coutes ; apache2.conf est le fichier principal de configuration c'est partir de lui que tous les autres fichiers sont chargs ; conf.d est un rpertoire qui contient plusieurs petits fichiers qui seront analyss par apache. Le seul fichier pour le moment est charset, qui spcifie l'encodage utiliser par dfaut ; mods-available contient la liste des modules d'apache installs ; mods-enabled celle des modules utiliss ; sites-available contient la liste des vhosts installs ; sites-enabled celle des vhosts utiliss.
! ! ! !
Ports.conf
!! !!
Contient la directive listen qui spcifie les adresses et les ports d'coutes ; Vous devez spcifier au moins le port. Apache coutera alors sur toutes les interfaces.
#interface (local ou internet) connecte sur port standard Listen X.X.X.X:80 ou Listen *:80 # toutes les interfaces connectes sur port ssl Listen 443
Apache2.conf
!! !!
ServerRoot "/etc/apache2"
!!
Inclusion des fichiers, contenus dans le dossier des mods, qui sont activs
! !
!!
!! !! !!
Inclusion d'autres fichiers de configuration inclusion des configurations des sites actifs
Dir.conf
!!
/etc/apache2/mods-available/dir.conf Il contient la directive DirectoryIndex qui spcifie une liste de nom de fichiers (index.html, index.php, index.htm) qui correspond la page daccueil
!
!!
sites-available
!!
!!
Ce dossier contient les diffrents vhosts (Virtual Host ou Hte Virtuel.) que vous utiliserez. Ils vous permettent de dfinir plusieurs sites sur une mme machine, Un vhost est compris dans un bloc <VirtualHost>, ces blocs dfinissent la "porte" de la validit des directives qui y sont dfinies.
sites-available/default
# ServerName dfinie le nom utilis pour le vhost. Mettez le nom de l'hote du domaine
ServerName www.domain.com
# ServerAlias dfinie les autres sous domaines pour lesquels le serveur rpondra.
ServerAlias domain.com *.domain.com
# ServerAdmin vous permet de spcifier un email utiliser en cas de problme, sur une page d'erreur 404 par exemple.
ServerAdmin administrateur.web@domain.com
# DocumentRoot dfinit le dossier racine dans lequel seront stocks les fichiers du site.
DocumentRoot /var/www
Configuration
!!
Apres la configuration de apache2.conf et siteavialables/default Supprimer l'ancien liens symboliques de la configuration d'origine
!
!!
a2dissite default
!!
Il faut maintenant activer le vhost en crant un lien symbolique du fichier de sites-available/ vers sites-enabled/:
!
a2ensite default
Test de configuration
!! !!
Le virtual Hosting permet pour un serveur de se faire passer pour plusieurs machines virtuelles Il permet dhberger sur le mme serveur plusieurs sites WEB identifis par des noms de domaines diffrents. Les diffrents types :
! !
!!
!!
Par IP : Le but est d'afficher des sites diffrents sur chaque adresse IP / interface.
www.site1.ma
www.site2.ma
<VirtualHost 192.168.1.1> DocumentRoot /var/www/site1 ServerName www.site1.ma </VirtualHost> <VirtualHost 172.16.0.1> DocumentRoot /var/www/site2 ServerName www.site2.ma </VirtualHost>
Par nom : Le but est d'hberger plusieurs domaines sur une adresse IP.
www.site1.ma www.site2.ma
NameVirtualHost *:80 <VirtualHost *:80> DocumentRoot /var/www/site1 ServerName www.site1.ma </VirtualHost> <VirtualHost *:80> DocumentRoot /var/www/site2 ServerName www.site2.ma </VirtualHost>
Dclarer ce site dans le fichier de base donne de DNS Crer le dossier /var/www/site1 Crer le fichier de configuration de site1.ma pour apache
! !
Copier le fichier sites-avialable /default vers sites-avialable/site1 puis modifier le de cette faon
ServerAdmin admin@site1.ma ServerName www.site1.ma ServerAlias site1.ma DocumentRoot /var/www/site1
4.!
5.!
Contrle d accs
Trois modes de contrle d accs : !! Contrle des rpertoires :
! !
!! !! !! !!
Le serveur analyse les contrles sur les rpertoires, puis sur les fichiers et enfin sur les URL Dans la pratique on utilise presque exclusivement les directives <Directory>
Directory
!! !!
!!
Cette directive spcifie que les directives contenues entre son dbut et sa fin seront applicables seulement au rpertoire pass en argument.
Exemple:
AllowOverride None : utilise les droits daccs dj dfini sur le rpertoire et non dfini sur .htaccess Order deny,allow : applique les rgles allow puis deny deny from all : bloque les requtes de nimporte quel hte ou nom de domaine. allow from 192.168.1.45
</Directory>
!!
Options -Indexes
!!
Lauthentification au niveau de lutilisateur permet laccs aux fichiers aprs avoir demand lutilisateur un nom et un mot de passe Les directives suivantes seront systmatiquement respectes avant toute autorisation:
! ! ! ! !
AuthType basic : type dauthentification communment adopt ; AuthName texte : affichera le texte comme invite dans la boite de dialogue ; AuthUserFile chemin/fichier : prcise le fichier qui contient les comptes et mots de passe des utilisateurs ayant droit daccs ; AuthGroupFile chemin/fichier : prcise le fichier qui contient les grpupes des utilisateurs ayant droit daccs Require valid-user | liste-noms : tous, ou seulement les comptes numrs dans la liste, auront accs au rpertoire.
Exemple :
<Directory /var/www/grt>
AuthType Basic AuthName authentification # ce qui saffiche sur la fentre AuthUserFile /etc/apache2/httppasswd # le fichier password #AuthGroupFile /etc/httpd/groupe # le fichier groupe #Require group profs Require valid-user order deny,allow deny from all allow from site.ma
</Directory>
!!
!!
cd /etc/apache2/ htpasswd -cb httppasswd nom motdepasse Pour ajouter un autre utilisateur, utilisez la mme commande sans option -c
.htaccess
!!
!!
!!
Le fichier .htaccess permet de contrler, avec davantage de prcision, le serveur en fonction des personnes qui crent et grent leurs rpertoires de donnes. AccessFileName .htaccess, autorise lemploi dun fichier de contrle de la configuration au niveau de chaque rpertoire Si le serveur dcouvre un fichier portant ce nom dans un rpertoire, il lui applique les commandes de configuration incluses dans ce fichier, en fonction de la directive AllowOverride All
.htaccess
Exemple de fichier .htaccess
AuthType Basic AuthName "Accs priv" AuthUserFile /etc/httpd/htpasswd require valid-user # require user toto koko # require group profs
Les erreurs
!!
Configuration :
ErrorDocument <numero> <personnalisation>
!!
Redirection distante:
ErrorDocument 500 http://www.labo-linux.org
Redirection locale :
ErrorDocument 404 /erreurs/404.html
Message personnalis :
ErrorDocument 403 Message derreur
Les erreurs
!! Les
! ! !
codes d'erreurs :
1xx : Seulement pour informations 2xx : Action russie 3xx : Une autre action est ncessaire (redirection par exemple) 4xx : Erreur dans la requte (client) 5xx : Erreur interne au serveur
! !
Les logs
!! !! !! !!
Apache enregistre sans arrt son activit dans ses journaux : /var/log/apach2/error_log :
!
journal denregistrement des incidents et des erreurs journal denregistrement des requtes des clients ErrorLog : Toutes les erreurs sur les
ErrorLog logs/error_log
/var/log/apache2/access_log :
!
Modules
!!
Ils permettent d'ajouter des fonctionnalits Apache (PHP, ASP, Perl ...) Pour ajouter des modules, utiliser les directives LoadModule et AddModule dans le fichier httpd.conf Exemple:
LoadModule php5_module /usr/lib/modules/libphp5.so
!!
!!
!!
!!
Site Web scuris via protocole SSL en utilisant un Certificat auto-sign. Activation du module SSL
!
!!
Pour que le protocole SSL puisse fonctionner avec le Serveur HTTP Apache2, il faut activer le module ssl avec la commande : a2enmod ssl puis recharger la configuration d'Apache: /etc/init.d/apache2 reload
Cration du certificat
!
crer le certificat SSL auto sign par openssl. openssl req -x509 -nodes -days 365 -newkey rsa:1024 -out / etc/apache2/server.crt -keyout /etc/apache2/server.key
! ! ! !
! !
req: gnre et traite les demandes de certificats au format PKCS#10. Elle peut crer des certificats auto-sign x509 -nodes donne le type de certificat voulu days 365 indique la dure de validit (en jours) de votre certificat newkey rsa:1024 demande une cl RSA de 1024 bits. il est dconseill de crer une cl plus grosse pour des histoires de compatibilit out /etc/apache2/server.crt est le chemin de votre certificat keyout /etc/apache2/server.key est le chemin de la cl prive
Country Name (2 letter code) [GB]: MA State or Province Name (full name) [Some-State]: MAROC Locality Name (eg, city) [ ]: MARRAKECH Organization Name (eg, company; recommended) [ ]: ensa Organizational Unit Name (eg, section) [ ]: ensa Common Name (eg, YOUR name) [ ]: indiquer le nom de domaine que vous dsirez scuriser. En ce qui nous concerne, il s'agit du domaine : site.ma. Email Address [ ]: admin@site.ma
!!
Listen 443
Copier le fichier sites-avialable /default-ssl vers sites-avialable/ site1-ssl, puis modifier le de cette faon
ServerAdmin admin@site1.ma ServerName www.site1.ma ServerAlias site1.ma DocumentRoot /var/www/site1
! ! !
Remplacer <Directory /var/www> par <Directory /var/www/site1> Remplacer SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem par SSLCertificateFile /etc/apache2/server.crt Remplacer SSLCertificateKeyFile /etc/ssl/private/ssl-certsnakeoil.key par SSLCertificateKeyFile /etc/apache2/server.key
2.!
3.!
!!
!!
SSLEngine : Cette directive permet d'activer le moteur SSL au sein d'un hte virtuel, Elle peut prendre deux arguments on/off SSLCertificateFile : Cette directive dfinit le certificat authentifiant le Serveur auprs des clients. L'argument est le chemin d'accs au certificat. En ce qui nous concerne, le certificat se trouve dans le rpertoire /etc/apache2/ SSLCertificateKeyFile : Cette directive dfinit la cl prive du Serveur utilise pour signer l'change de cl entre le client et le serveur. Elle prend en argument le chemin d'accs la cl (fichier). Dans notre cas, la cl se trouve dans le rpertoire /etc/ apache2/