Sie sind auf Seite 1von 43

SERVEUR WEB APACHE

Khalid El BAAMRANI ENSA de Marrakech

Les principes du Web


!! !!

Modle client-serveur Le client envoie des requtes au serveur


! ! !

transfert de fichiers excution de programmes sur le serveur !

!! !!

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

Droulement dune requte HTTP


!! !! !!

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.

!!

Le client interprte les commandes HTML et affiche le contenu de la page.

Droulement dune requte HTTP


client
HTTP
dmon HTTPD

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

Aujourdhui, de nombreux serveurs web existent. Parmi les plus utiliss :


! ! ! ! ! !

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

!"#$%&''$()* +&#$,-)$*./01* !"#$%&' ()$*+,+-' ./).0' 1++/2&'


348,159,702 190,451,702 109,968,564 37,748,743

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

!!

S'installe par dfaut dans /etc/apache2/

Les fichiers du paquetage Apache


!!

/usr/sbin/apache2: le dmon (binaire)


!

ne pas manipuler directement

!!

/etc/init.d/apache2 : le script de gestion du dmon


!

start, stop, restart, reload, status

!! !!
!!

/etc/apache2/apache.conf : le fichier de configuration /var/www/* : les fichiers servis par le serveur


Apache fait la correspondance entre :
! !

un URL (http://serveur/rep/fichier.html) un fichier du serveur (/var/www/rep/fichier.html)

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

Rpertoire Racine du serveur


!

ServerRoot "/etc/apache2"

Utilisateur et Group sous lesquels les processus du serveur seront lancs


! !

User Apache Group Apache


Include /etc/apache2/mods-enabled/*.load Include /etc/apache2/mods-enabled/*.conf

!!

Inclusion des fichiers, contenus dans le dossier des mods, qui sont activs
! !

!!

Inclusion de l'ancien fichier de configuration de apache des fins de compatibilits ascendantes.


!

Include /etc/apache2/httpd.conf Include /etc/apache2/ports.conf Include /etc/apache2/conf.d/ Include /etc/apache2/sites-enabled/

!! !! !!

Inclusion du fichier de configuration des adresses et ports


! ! !

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
!

!!

DirectoryIndex index.html index.htm index.php

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

Lancez apache par la commande:


!

service apache2 restart

ouvrez dans votre navigateur lURL suivant en fonction du port choisi:


http://127.0.0.1 ou ! http://localhost ou ! http://localhost:80/
!

Htes virtuels ( virtual hosting )


!!

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 Par nom

Htes virtuels : Par IP


!!

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>

Htes virtuels : Par nom


!!

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>

Exemple : hbergement de site1.ma


1.! 2.! 3.!

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

Remplacer <Directory /var/www> par <Directory /var/www/site1>

4.!

Crer un lien de ce fichier dans le dossier /etc/apache2/ sites-enabled par la commande


!

a2ensite site1 /etc/init.d/apache2 reload

5.!

recharger la configuration d'Apache :


!

Contrle d accs
Trois modes de contrle d accs : !! Contrle des rpertoires :
! !

<Directory> ! </Directory> fichier .htaccess <Files> ! </Files> <Location> ! </Location>

!! !! !! !!

Contrle des fichiers :


!

Contrle des URL :


!

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

Syntaxe <Directory rpertoire > ... </Directory> Exemple


<Directory /var/www/site1> ... </Directory>

!!

Cette directive spcifie que les directives contenues entre son dbut et sa fin seront applicables seulement au rpertoire pass en argument.

Contrle daccs au niveau de lhte


!!

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 /var/www/test>

</Directory>
!!

Pour empcher le parcours de rpertoire, ajoutez:


!

Options -Indexes

Contrler laccs au niveau de lutilisateur


!!

!!

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.

Contrler laccs au niveau de lutilisateur


!!

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

La syntaxe de fichier groupe est la suivante:


Profs: khalid nouredine Etudiants: ahmed omar

!!

Pour crer un utilisateur apache et son mot de passe:


! ! !

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>

!!

Trois faons de personnaliser les erreurs :


!

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 :
!

Directives pour les logs :


! !

AccessLog : Tout les accs au serveur


AccessLog logs/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

!!

!!

!!

Configuration suivant les modules chargs :


<IfModule [!] php5_module> </IfModule>

!!

Un catalogue des modules est disponible sur le serveur : http://modules.apache.org

Scuriser Apache avec SSL


!!

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

Scuriser Apache avec SSL


!!

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

Scuriser Apache avec SSL


!!

Rpondez alors aux questions poses :


! ! ! ! ! !

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

!!

Enfin, chanager les droits de lecture de la cl prive :


!

chmod 440 /etc/apache2/server.key

Scuriser Apache avec SSL


!!

indiquer Apache qu'il doit aussi couter sur le port 443.


!

Editer le fichier /etc/apache2/ports.conf et rajoutez la ligne suivante (ajouter par defaut):


!!

Listen 443

Scuriser Apache avec SSL


1.!

Crer le fichier de configuration ssl de site1.ma pour apache


!

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

Crer un lien de ce fichier dans le dossier /etc/apache2/ sites-enabled par la commande


!

a2ensite site1-ssl /etc/init.d/apache2 reload

3.!

recharger la configuration d'Apache :


!

Scuriser Apache avec SSL


!!

!!

!!

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/

Das könnte Ihnen auch gefallen