Contenu | Rechercher | Menus

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
apache2 [Le 08/05/2013, 15:40]
109.28.132.11 [Installation]
apache2 [Le 16/01/2018, 08:11] (Version actuelle)
82.251.241.242 [sites-available]
Ligne 2: Ligne 2:
  
 ---- ----
 +{{ apache_logo.png?​80nolink| Logo du logiciel Apache 2}}
 ====== Serveur HTTP Apache 2 ====== ====== Serveur HTTP Apache 2 ======
  
-**Apache** est le plus populaire des serveurs HTTP. Il est produit par la « Apache Software Foundation ». C'est un logiciel libre fourni sous la [[wpfr>​Licence_Apache|licence spécifique Apache]], [[http://​www.apache.org/​licenses/​|licence (en)]].+**Apache** ​ //de son vrai nom HTTPD// ​est le plus populaire des serveurs HTTP. Il est produit par la « Apache Software Foundation ». C'est un logiciel libre fourni sous la [[wpfr>​Licence_Apache|licence spécifique Apache]], [[http://​www.apache.org/​licenses/​|licence (en)]].
  
 Cette page présente un cas concret de configuration d'un serveur HTTP Apache. À vous de l'​adapter à vos besoins.\\ Cette page présente un cas concret de configuration d'un serveur HTTP Apache. À vous de l'​adapter à vos besoins.\\
 Elle est une fusion : Elle est une fusion :
     * du [[:​projets:​ecole:​apache|cours sur apache]] du canal IRC [[:​projets:​ecole|#​ubuntu-fr-classroom]] ;     * du [[:​projets:​ecole:​apache|cours sur apache]] du canal IRC [[:​projets:​ecole|#​ubuntu-fr-classroom]] ;
-    * de [[:​tutoriel:​securiser_apache2|sécuriser Apache]] ; 
     * de diverses autres recherches sur le site de la [[http://​httpd.apache.org/​docs/​|documentation d'​Apache]] \\     * de diverses autres recherches sur le site de la [[http://​httpd.apache.org/​docs/​|documentation d'​Apache]] \\
 Des liens vers [[tutoriel:​securiser_apache2_avec_ssl|sécuriser Apache avec SSL]], [[tutoriel:​virtualhosts_avec_apache2|virtualhosts avec Apache]] et d'​autres documentations seront donnés au moment opportun.\\ Des liens vers [[tutoriel:​securiser_apache2_avec_ssl|sécuriser Apache avec SSL]], [[tutoriel:​virtualhosts_avec_apache2|virtualhosts avec Apache]] et d'​autres documentations seront donnés au moment opportun.\\
  
 +<note important>​La version de Apache installée à l'​heure actuelle, est la version 2.4.27.
 +Ce changement de version implique des changements de certaines directives présentes dans vos VHOSTS par rapport aux autres versions.
 +Référez-vous à la page : [[http://​httpd.apache.org/​docs/​2.4/​upgrading.html|suivante]] qui décrit, en détails, les changements entre la version 2.2 et la version 2.4.
 +</​note>​
 ===== Pré-requis ===== ===== Pré-requis =====
  
-  * Quelques connaissances de base des protocoles HTTP, DNS et TCP/IP (adressage, sous-réseaux,​ etc.) ;+  * Quelques connaissances de base des protocoles HTTP, DNS (ou /etc/hosts configuré) ​et TCP/IP (adressage, sous-réseaux,​ etc.) ;
   * Un réseau local en état de marche (IP attribuées,​ connexion à internet) ;   * Un réseau local en état de marche (IP attribuées,​ connexion à internet) ;
   * Un serveur ​    ​[[:​bind9|DNS]] configuré (pour le domaine).   * Un serveur ​    ​[[:​bind9|DNS]] configuré (pour le domaine).
  
-===== Introduction : HTTP l======+===== Introduction : HTTP ======
 ==== Qu'​est-ce que le Web ? ==== ==== Qu'​est-ce que le Web ? ====
  
Ligne 29: Ligne 32:
  
 Attention à ne pas faire d'​amalgame entre Web (service HTTP) et Internet (le réseau mondial). Le salon IRC sur lequel s'est déroulée la [[:​projets:​ecole|séance de cours]] utilise Internet, pas le Web. Attention à ne pas faire d'​amalgame entre Web (service HTTP) et Internet (le réseau mondial). Le salon IRC sur lequel s'est déroulée la [[:​projets:​ecole|séance de cours]] utilise Internet, pas le Web.
- 
 ==== HTTP et navigation ==== ==== HTTP et navigation ====
  
Ligne 59: Ligne 61:
 ==== Mode de fonctionnement sommaire ==== ==== Mode de fonctionnement sommaire ====
  
-Au moment de son démarrage, Apache charge les [[#fichiers de configuration]] de la machine locale et se met en attente de requêtes sur les interfaces réseaux.+Au moment de son démarrage, Apache charge les  [[apache2#configuration|fichiers de configuration]] de la machine locale et se met en attente de requêtes sur les interfaces réseaux.
  
 Lorsque vous utilisez votre navigateur Web (un client HTTP), que vous cliquiez sur un lien ou que vous rentriez directement l'​adresse dans la barre d'​adresse,​ Lorsque vous utilisez votre navigateur Web (un client HTTP), que vous cliquiez sur un lien ou que vous rentriez directement l'​adresse dans la barre d'​adresse,​
Ligne 81: Ligne 83:
 ===== Installation ===== ===== Installation =====
  
-Apache est composé de plusieurs paquets.+Apache est composé de plusieurs paquets... 
 +====Installation de base====
  
-béta installation apache 2.4.4+[[:​tutoriel:​comment_installer_un_paquet|Installez le paquet]] **[[apt>​apache2|apache2]]**.
  
-installer les depots officiel multiverse ​et backport ainsi que leur sources+À la suite de cette installation votre serveur doit fonctionner ​et être accessible à l'​adresse suivante [[http://​localhost]] (à partir de la même machine).
  
-ex ubuntu 12.04+Un beau message va s'​afficher dans votre navigateur ​ **It Works**, c'est le contenu du fichier **/​var/​www/​html/​index.html** (configuration par défaut)
  
 +<note important>​
 +**À partir d'​Ubuntu 14.04** \\
 +Le répertoire par défaut n'est plus //"/​var/​www"//​ mais //"/​var/​www/​html"//​. Si vous n'avez pas touché aux fichiers de config par défaut de apache et que vos sites en localhost ne sont plus accessibles,​ vous pouvez les déplacer dans ce dossier //"/​var/​www/​html"//​ ou changer le chemin du //"​DocumentRoot"//​ dans le fichier //"/​etc/​apache2/​sites-available/​000-default.conf"//</​note>​
 +\\
  
-<​code>​sudo su</​code>​ 
-<​code>​cat > /​etc/​apt/​sources.list <<EOF 
-deb http://​fr.archive.ubuntu.com/​ubuntu/​ precise main restricted 
-deb http://​security.ubuntu.com/​ubuntu precise-security main restricted 
-deb http://​fr.archive.ubuntu.com/​ubuntu/​ precise-updates main restricted 
  
-# Dépôts de sources (uniquement utiles pour télécharger les sources avec apt-get source. Dans ce cas, enlever les #) 
-deb-src http://​fr.archive.ubuntu.com/​ubuntu/​ precise main restricted 
-deb-src http://​security.ubuntu.com/​ubuntu precise-security main restricted 
-deb-src http://​fr.archive.ubuntu.com/​ubuntu/​ precise-updates main restricted 
- 
-deb http://​fr.archive.ubuntu.com/​ubuntu/​ precise universe multiverse 
-deb http://​security.ubuntu.com/​ubuntu precise-security universe multiverse 
-deb http://​fr.archive.ubuntu.com/​ubuntu/​ precise-updates universe multiverse 
- 
-# Dépôts de sources (uniquement utiles pour télécharger les sources avec apt-get source. Dans ce cas, enlever les #) 
-deb-src http://​fr.archive.ubuntu.com/​ubuntu/​ precise universe multiverse 
-deb-src http://​security.ubuntu.com/​ubuntu precise-security universe multiverse 
-deb-src http://​fr.archive.ubuntu.com/​ubuntu/​ precise-updates universe multiverse 
-deb http://​fr.archive.ubuntu.com/​ubuntu/​ precise-backports main restricted universe multiverse 
- 
-# Dépôts de sources (uniquement utiles pour télécharger les sources avec apt-get source. Dans ce cas, enlever les #) 
-deb-src http://​fr.archive.ubuntu.com/​ubuntu/​ precise-backports main restricted universe multiverse 
-EOF 
-exit</​code>​ 
- 
- 
-installer les dépendance 
- 
- 
-<​code>​sudo apt-get update</​code>​ 
-<​code>​sudo apt-get -y upgrade</​code>​ 
-<​code>​sudo apt-get -y install git vim libmcrypt-dev</​code>​ 
-<​code>​sudo apt-get -y purge apache2 php5</​code>​ 
-<​code>​sudo apt-get -y build-dep apache2 php5</​code>​ 
- 
- 
- 
- 
- 
-compilation manuelle 
- 
-<​code>​cd /​usr/​local/​src</​code>​ 
-<​code>​git clone https://​github.com/​apache/​httpd.git httpd-2.4.4</​code>​ 
-<​code>​cd httpd-2.4.4</​code>​ 
-<​code>​git clone https://​github.com/​apache/​apr.git srclib/​apr</​code>​ 
-<​code>​./​buildconf</​code>​ 
-<​code>​./​configure -enable-modules=all --with-included-apr --enable-mpm=worker --enable-suexec --enable-rewrite</​code>​ 
-<​code>​make</​code>​ 
-<​code>​sudo apt-get -y install checkinstall</​code>​ 
-<​code>​sudo checkinstall --pkgname=apache2-4 --pkgversion="​2.4.4"​ --backup=no --deldoc=yes --fstrans=no --default</​code>​ 
-<​code>​mkdir $HOME/​deb</​code> ​ 
-<​code>​sudo mv *.deb $HOME/​deb</​code>​ 
-vous pouvez récupérer le pacquet deb dans votre répertoire perssonelle $HOME/deb 
-celui ci a déjà était installer 
- 
- 
-  
- 
-installation depuis pacquet deb ubuntu 12.04 and 64 uniquement 
- 
- 
-<​code>​wget http://​www.petit-fichier.fr/​2013/​05/​08/​apache2-4-2-4-4-1-amd64/​apache2-4-2-4-4-1-amd64.deb</​code>​ 
-<​code>​sudo dpkg -i apache2-4-2-4-4-1-amd64.deb</​code>​ 
- 
-configurer 
- 
- 
-<​code>​sudo ln -s /​usr/​local/​apache2/​bin/​* /​usr/​local/​bin/</​code>​ 
-<​code>​sudo rm -rf /​etc/​init.d/​apache2</​code>​ 
-<​code>​sudo ln -s /​usr/​local/​bin/​apachectl /​etc/​init.d/​apache2</​code>​ 
-<​code>​sudo update-rc.d -f apache2 remove</​code>​ 
-<​code>​sudo sed -i '​s|Define DOCROOT "/​usr/​local/​apache2/​htdocs"​|Define DOCROOT "/​var/​www"​|'​ /​usr/​local/​apache2/​conf/​httpd.conf</​code>​ 
-<​code>​sudo chown -Rf www-data:​www-data /​var/​www</​code>​ 
-<​code>​sudo update-rc.d -f apache2 defaults 91 09</​code>​ 
-<​code>​sudo /​etc/​init.d/​apache2 stop</​code>​ 
-<​code>​sudo mkdir /​usr/​local/​apache2/​logs/</​code>​ 
-<​code>​sudo /​etc/​init.d/​apache2 start</​code>​ 
- 
-désinstaller 
- 
-<​code>​sudo /​etc/​init.d/​apache2 stop 
-sudo rm -f /​usr/​local/​bin/​ab /​usr/​local/​bin/​apachectl /​usr/​local/​bin/​apr-2-config /​usr/​local/​bin/​apxs /​usr/​local/​bin/​checkgid /​usr/​local/​bin/​dbmmanage /​usr/​local/​bin/​envvars /​usr/​local/​bin/​envvars-std /​usr/​local/​bin/​fcgistarter /​usr/​local/​bin/​firehose /​usr/​local/​bin/​htcacheclean /​usr/​local/​bin/​htdbm /​usr/​local/​bin/​htdigest /​usr/​local/​bin/​htpasswd /​usr/​local/​bin/​httpd /​usr/​local/​bin/​httxt2dbm /​usr/​local/​bin/​logresolve /​usr/​local/​bin/​rotatelogs /​usr/​local/​bin/​suexec 
-sudo update-rc.d -f apache2 remove 
-sudo rm -rf /​etc/​init.d/​apache2 
-sudo apt-get -y purge apache2-4 
-sudo rm -rf /​usr/​local/​apache2</​code>​ 
-====Installation de base==== 
- 
-=== Versions Jusqu'​à Ubuntu 6.06 === 
-[[:​tutoriel:​comment_installer_un_paquet|Installez les paquets]] **[[apt>​apache2,​apache2-utils,​apache2-mpm-prefork,​libapache2-mod-chroot,​libapache2-mod-auth-pam,​libapache2-mod-auth-sys-group|apache2 apache2-utils apache2-mpm-prefork libapache2-mod-chroot libapache2-mod-auth-pam libapache2-mod-auth-sys-group]]**\\ 
- 
-=== Versions antérieures à Ubuntu 10.04 === 
-[[:​tutoriel:​comment_installer_un_paquet|Installez les paquets]] **[[apt>​libapr1,​apache2,​apache2.2-common,​apache2-utils|libapr1 apache2 apache2.2-common apache2-utils]]**. 
- 
-=== Depuis Ubuntu 10.04=== 
-[[:​tutoriel:​comment_installer_un_paquet|Installez le paquet]] **[[apt>​apache2|apache2]]**. 
- 
-À la suite de cette installation votre serveur doit fonctionner et être accessible à l'​adresse suivante [[http://​localhost]] (à partir de la même machine). 
- 
-Un beau message va s'​afficher dans votre navigateur ​ **It Works**, c'est le contenu du fichier **/​var/​www/​index.html** (configuration par défaut) 
 ====La bibliothèque,​ le serveur et ses outils==== ====La bibliothèque,​ le serveur et ses outils====
  
 ^ Nom ^ Rôle ^ ^ Nom ^ Rôle ^
-| [[apt>​libapr1|libapr1]] | Apache'​s Portable Runtime Library, bibliothèque de fonctions standards portables. | +**[[apt>​libapr1|libapr1]]** | Apache'​s Portable Runtime Library, bibliothèque de fonctions standards portables. | 
-| [[apt>​apache2|apache2]] | Ce paquet contient le serveur. | +**[[apt>​apache2|apache2]]** | Ce paquet contient le serveur. | 
-| [[apt>​apache2.2-common|apache2.2-common]] |Ce paquet contient les modules standards apache2, qui incluent le support SSL. | +**[[apt>​apache2.2-common|apache2.2-common]]** |Ce paquet contient les modules standards apache2, qui incluent le support SSL. | 
-| [[apt>​apache2-utils|apache2-utils]] | Outils pour serveurs web. |+**[[apt>​apache2-utils|apache2-utils]]** | Outils pour serveurs web. |
  
-<note tip>Pour Dapper, remplacez par ''​[[apt>​libapr0|libapr0]]'' ​et ''​[[apt>​apache2-common|apache2-common]]''​</​note>​+<note tip>​Pour ​[[Dapper]], remplacez par **[[apt>​libapr0|libapr0]]** et **[[apt>​apache2-common|apache2-common]]**.</​note>​
  
 ==== Le MPM ==== ==== Le MPM ====
Ligne 210: Ligne 117:
 | **[[apt>​apache2-mpm-itk|apache2-mpm-itk]]** | Permet d'​exécuter les scripts php avec les droits d'un utilisateur donné dans un virtualhost. | | **[[apt>​apache2-mpm-itk|apache2-mpm-itk]]** | Permet d'​exécuter les scripts php avec les droits d'un utilisateur donné dans un virtualhost. |
  
 +<note important>​A partir de Trusty 14.04, ces paquets pour le choix du MPM sont devenus obsolètes. Cependant, ils continuent d'​exister pendant une phase de transition. Leur unique fonction est d'​installer le paquet //apache2// par le mécanisme des dépendances.</​note>​
  
-===== Configuration ===== 
  
-<note note>​Remise en question de la part d'un adminsys : cette section donne un ensemble de fichiers de configuration,​ en indiquant qu'il faudrait remplacer les fichiers par défaut. Pourquoi ? Les fichiers par défaut sont tout à fait corrects et je ne vois pas l'​intérêt de les remplacer. ​ --tiramiseb</​note>​+===== Configuration =====
  
  Tous les **fichiers de configuration** de Apache2 sont dans le dossier **/​etc/​apache2**.\\  Tous les **fichiers de configuration** de Apache2 sont dans le dossier **/​etc/​apache2**.\\
Ligne 219: Ligne 126:
 ==== /​etc/​apache2 ==== ==== /​etc/​apache2 ====
 Rendez-vous dans le répertoire /​etc/​apache2/,​ et regardez les fichiers le composant : Rendez-vous dans le répertoire /​etc/​apache2/,​ et regardez les fichiers le composant :
-  apache2.conf ​ conf.d  ​envvars ​ ​httpd.conf  ​mods-available ​ mods-enabled  ​ports.conf  sites-available ​ sites-enabled+  apache2.conf  ​ports.conf   ​envvars ​  ​mods-available ​ mods-enabled ​ conf-available conf-enabled ​sites-available ​ sites-enabled
  
 La plupart de ces fichiers sont plus ou moins spécifiques à Debian/​Ubuntu et nous permettent de séparer la configuration en plusieurs parties. La plupart de ces fichiers sont plus ou moins spécifiques à Debian/​Ubuntu et nous permettent de séparer la configuration en plusieurs parties.
-  * **''​httpd.conf''​** est le fichier utilisé par apache1, il est conservé vide dans Apache2 pour assurer la rétrocompatibilité. Il ne nous servira pas ;+
   * **''​envvars''​** est utilisé pour définir des variables d'​environnement propres à Apache ;   * **''​envvars''​** est utilisé pour définir des variables d'​environnement propres à Apache ;
-  * **''​ports.conf''​** contient la directive listen qui spécifie les adresses et les ports d'écoutes ​;+  * **''​ports.conf''​** contient la directive ​//listen// qui spécifie les adresses et les ports d'écoute ​;
   * **''​apache2.conf''​** est le fichier principal de configuration c'est à partir de lui que tous les autres fichiers sont chargés ;   * **''​apache2.conf''​** est le fichier principal de configuration c'est à partir de lui que tous les autres fichiers sont chargés ;
-  * **''​conf.d''​** est un répertoire qui contient ​plusieurs petits fichiers qui seront analysés par apache. Le seul fichier pour le moment est ''​charset''​qui spécifie l'encodage à utiliser par défaut ​;+  * **''​conf-available"​** contient ​un ensemble d'éléments de configuration globale (charset, ​security, etc.) ; 
 +  * **''​conf-enabled"​** contient les éléments ​ de configuration globale activés ​;
   * **''​mods-available''​** contient la liste des modules d'​apache installés ;   * **''​mods-available''​** contient la liste des modules d'​apache installés ;
-  * **''​mods-enabled''​** celle des modules ​utilisés ​+  * **''​mods-enabled''​** celle des modules ​activées ​
-  * **''​sites-available''​** contient la liste des vhosts ​installés ; +  * **''​sites-available''​** contient la liste des hôtes virtuels ​installés ; 
-  * **''​sites-enabled''​** celle des vhosts utilisés.+  * **''​sites-enabled''​** celle des hôtes virtuels activées.  
 + 
 +Normalement les fichiers de configuration globale apche2.conf,​ envars et ports.conf n'ont pas à être modifiés. Toute la configuration devrait se faire dans les sous dossiers xxx-available. 
 + 
 +Les dossiers xxx-available contiennent les éléments de configuration **disponibles**. Les dossiers xxx-enabled contiennent les éléments de configurations **activés** sous forme de liens symboliques pointant vers les fichiers correspondant dans le dossier xxx-available. 
 + 
 +Il est fortement déconseillé d'​intervenir dans les dossiers xx-enabled. Les fichiers doivent être crées ou modifiés dans les dossiers xxx-available et les configurations activées ou désactivées comme suit : 
 + 
 +<​code>​sudo a2enconf charset.conf</​code>​ 
 +<​code>​sudo a2disconf charset.conf</​code>​ 
 +pour activer ou désactiver un élément de configuration globale. 
 +<​code>​sudo a2enmod rewrite</​code>​ 
 +<​code>​sudo a2dismod rewrite</​code>​ 
 +pour activer ou désactiver un module Apache. 
 +<​code>​sudo a2enconf monhote.conf</​code>​ 
 +<​code>​sudo a2disconf monhote.conf</​code>​ 
 +pour activer ou désactiver un hôte virtuel.
  
 ==== Configuration des interfaces ==== ==== Configuration des interfaces ====
Ligne 251: Ligne 175:
  ​Listen 443  ​Listen 443
 </​file>​ </​file>​
-<note note>​Voir [[:​tutoriel:​securiser_apache2_avec_ssl|securiser_apache2_avec_ssl]]</​note>​ 
 <note important>​ <note important>​
 Il faut que les interfaces aient été démarrées avant Apache</​note>​ Il faut que les interfaces aient été démarrées avant Apache</​note>​
  
-==== Fichier de configuration ==== 
- 
-[[:​tutoriel:​comment_editer_un_fichier|Éditez le fichier]] **/​etc/​apache2/​apache2.conf** afin qu'il ressemble a ceci.\\ 
- 
-Les explications des différentes lignes sont données dans le fichier de configuration.\\ 
- 
-Les directives **<​IfModule !nom.c>​** testent la présence du module afin de s'​adapter aux configurations.\\ 
-Les autres lignes commençant par **#** sont des commentaires\\ 
- 
- 
-<code apache> 
-# Répertoire Racine du serveur 
-ServerRoot "/​etc/​apache2"​ 
- 
-# Fichier de vérrouillage (lock) du serveur ​ 
-# IL DOIT SE TROUVER SUR LE DISQUE LOCAL 
-#<​IfModule !mpm_winnt.c>​ 
-#<​IfModule !mpm_netware.c>​ 
-LockFile /​var/​lock/​apache2/​accept.lock 
-#</​IfModule>​ 
-#</​IfModule>​ 
- 
-# Fichier du PID: endroit où, à son démarrage, apache doit stocker 
-# son numéro d'​identification de processus 
-PidFile /​var/​run/​apache2.pid 
- 
-# Delai d'​attente dépassé : nombre de secondes avant de recevoir et d'​envoyer 
-# un message de "​Délai d'​attente dépassé"​ (timeout) 
-Timeout 300 
- 
-# Connexion persistante:​ Alloue ou non les requêtes persistantes 
-# (plus d'une requête par connexion ). 
-# Mettre à "​Off"​ pour désactiver. 
-KeepAlive On 
- 
-# Nombre Maximum de requêtes allouées durant une connexion persistante. 
-# 0 = non limité 
-# Il est recommandé de garder ce nombre assez haut pour des performances maximales 
-MaxKeepAliveRequests 100 
- 
-# Nombre de secondes d'​attente pour la prochaine requête 
-# d'un même client sur une même connexion avant un timeout 
-KeepAliveTimeout 15 
- 
-# Configuration du mpm chargé 
-<​IfModule mpm_prefork_module>​ 
-# Nombre de processus serveurs fils à créer au démarrage. 
-   ​StartServers ​         5 
-# Nombre minimum de processus en attente d'​intercepter des requêtes 
-   ​MinSpareServers ​      5 
-# Nombre maximum de processus en attente 
-   ​MaxSpareServers ​     15 
-# Nombre maximum processus fils créés 
-# pour intercepter les requêtes simultanément 
-   ​MaxClients ​         150 
-# Limite le nombre de requête qu'un processus fils intercepte ​ 
-# durant son temps de vie. Si 0 alors le processus n'​expirera jamais. 
-    MaxRequestsPerChild ​  0 
-</​IfModule>​ 
- 
-<​IfModule mpm_worker_module>​ 
-    StartServers ​         2 
-    MaxClients ​         150 
-# Nombre minimum de processus en attente d'​intercepter les piques de requêtes 
-    MinSpareThreads ​     25 
-# Nombre maximum de processus en attente 
-    MaxSpareThreads ​     75  
-    ThreadsPerChild ​     25 
-    MaxRequestsPerChild ​  0 
-</​IfModule>​ 
- 
-# Utilisateur et Group sous lesquels les processus du serveur seront lancés 
-User www-data 
-Group www-data 
- 
-# Fichier de restriction des accès ​ 
-# non conseillé, préferer les directives internes au fichier de configuration 
-# voir [[http://​httpd.apache.org/​docs/​2.2/​howto/​htaccess.html]] 
-AccessFileName .htaccess 
- 
-# Les lignes suivantes empêchent les fichiers .htaccess et .htpasswd d'​être vus  
-# par les clients Web (i.e. les navigateurs) . 
-<Files ~ "​^\.ht">​ 
-    Order allow,deny 
-    Deny from all 
-    Satisfy All 
-</​Files>​ 
- 
-# Restriction de la racine du serveur 
-<​Directory /> 
-  Order Deny,Allow 
-  Deny from all 
-  Options None 
-  AllowOverride None 
-</​Directory>​ 
- 
-# Fichier contenant la liste des conversions des extensions de fichiers vers le type de contenu. 
-# par défaut ce fichier est relié au contenu enregistré à l'​IANA. http://​www.iana.org/​assignments/​media-types/​index.html. 
-TypesConfig /​etc/​mime.types 
- 
-# définit le type par défaut des fichiers dont le type ne peut être déterminé 
-# par le serveur. 
-# Il convient de le mettre à "​none"​ afin de ne pas fournir d'​informations erronées. 
-DefaultType none 
- 
-# Active la résolution DNS pour les noms d'​hôtes 
-HostnameLookups Off 
- 
-# chemin du fichier de log des erreurs du serveur. 
-ErrorLog /​var/​log/​apache2/​error.log 
- 
-# niveau de log du serveur ​ 
-# emerg  Messages Urgents - Le système est inutilisable. 
-# alert Messages d'​actions qui doivent être effectuées immédiatement. 
-# crit         Messages critiques. 
-# error Messages d'​erreurs. 
-# warn         Messages d'​avertissement. 
-# notice Messages normales mais significatives. 
-# info         Messages d'​informations. 
-# debug Messages de débogage 
-LogLevel warn 
- 
-# format des lignes contenues dans les logs 
-# %a         Adresse ip distante. 
-# %A         Adresse ip local. 
-# %B         Taille de la réponse en octets, excluant l'​entête HTTP. 
-# %b         Taille de la réponse en octets, excluant l'​entête HTTP au format CLF. 
-# %{Foobar}C Contenu du cookie "​Foobar"​ de la requête envoyée au serveur. 
-# %D         Le temps mis à servir la requête . 
-# %{FOOBAR}e Contenue de la variable d'​environnement "​FOOBAR"​. 
-# %f         Nom du fichier. 
-# %h         Hôte distant. 
-# %H         Le protocole demandé. 
-# %{Foobar}i Le contenu de "​Foobar":​ Ligne(s) d'​en-tête de la requête envoyée au serveur. 
-# %l         nom du fichier de log distant (de identd, si il est fournit). 
-# cela retournera un tiret tant que //​mod_ident//​ n'est pas présent ​ 
-# et //​IdentityCheck//​ n'est pas mis à ON. 
-# %m         Méthode de la requête. 
-# %{Foobar}n Contenu de la note "​Foobar"​ provenant d'un autre module. 
-# %{Foobar}o Le contenu de "​Foobar":​ Ligne(s) d'​entête dans la réponse. 
-# %p         Port canonique du serveur qui sert la réponse. 
-# %P         Id du processus fils qui a servi la requête. 
-# %{format}P Id du processus ou du thread fils qui a servi la requête. 
-# Les formats valides sont pid, tid, et hextid. 
-# hextid nécessite APR 1.2.0 ou supérieur. 
-# %q         Chaînes de la requête (Commençant avec un ? si une chaine de requête existe, sinon une chaîne vide) 
-# %r         Première ligne de la requête. 
-# %s         Statut. Pour les requête redirigées en interne, ceci est la requête originale --- %>s pour la dernière. 
-# %t         Heure à laquelle la requête a été reçue (format standard anglais mois jour année ) 
-# %{format}t L'​heure,​ au format précisé, qui doit être dans les formats de strftime(3). (potentiellement localisé). 
-# %T         Le temps mis pour répondre à la requête. 
-# %u         Utilisateur distant (de l'​authentification;​ peut être faux si le  code de retour de statut (%s) est 401) 
-# %U         Url demandée, n'​inclue aucune chaîne de requête. 
-# %v         Nom canonique de ServerName du serveur qui répond à la requête. 
-# %V         Nom du serveur en fonction du paramètre UseCanonicalName. 
-# %X         Statut de la connexion une fois la réponse envoyée. 
-#               X = connexion annulée avant la réponse complète. 
-#               + = la connexion peut être maintenue après l'​envoi de la réponse. 
-#               - = la connexion sera fermée après l'​envoi de la réponse. 
-# %I         Octets reçus, incluant l'​entête et la requête, ne peut être nul. Vous devez activer //​mod_logio//​ pour l'​utiliser. 
-# %O         Octets envoyés, incluant l'​entête,​ ne peut être nul. Vous devez activer //​mod_logio//​ pour l'​utiliser. 
- 
-LogFormat "%h %l %u %t \"​%r\"​ %>s %b \"​%{Referer}i\"​ \"​%{User-Agent}i\""​ combined 
-LogFormat "%h %l %u %t \"​%r\"​ %>s %b" common 
-LogFormat "​%{Referer}i -> %U" referer 
-LogFormat "​%{User-agent}i"​ agent 
- 
-# entête envoyée au client à propos du serveur 
-# Prod                    Server: Apache 
-# Major                   ​Server:​ Apache/2 
-# Minor                   ​Server:​ Apache/2.0 
-# Min                     ​Server:​ Apache/​2.0.41 
-# OS                      Server: Apache/​2.0.41 (Unix) 
-# Full (ou non spécifié) ​ Server: Apache/​2.0.41 (Unix) PHP/4.2.2 MyMod/​1.2 ​ 
-ServerTokens Prod 
- 
-# Pied de page renvoyé par le serveur ​ 
-# utile afin de déterminer quelle est le serveur ​ 
-# qui dans une chaîne (proxy) qui génère une erreur 
-ServerSignature Off 
- 
-# Inclusion des fichiers, contenus dans le dossier des mods, qui sont activés 
-Include /​etc/​apache2/​mods-enabled/​*.load 
-Include /​etc/​apache2/​mods-enabled/​*.conf 
- 
-# Inclusion de l'​ancien fichier de configuration de apache 
-# à des fins de compatibilités ascendantes. 
-Include /​etc/​apache2/​httpd.conf 
- 
-# Inclusion du fichier de configuration des adresses et ports 
-# sur lesquels le serveur sera à l'​écoute 
-Include /​etc/​apache2/​ports.conf 
- 
-# Inclusion d'​autres fichiers de configuration 
-Include /​etc/​apache2/​conf.d/​ 
- 
-# inclusion des configurations des sites actifs 
-Include /​etc/​apache2/​sites-enabled/​ 
- 
-# Directive des alias 
-<​IfModule alias_module>​ 
-# alias des icones d'​apache 
-# nom de l'​alias , répertoire vers lequel pointe l'​alias 
-    Alias /icons "/​usr/​share/​apache2/​icons/"​ 
-    <​Directory "/​usr/​share/​apache2/​icons">​ 
-        Options None 
-        AllowOverride None 
-        Order allow,deny 
-        Allow from all 
-    </​Directory>​ 
- 
-# alias pour awstats ​ 
-    Alias /​awstats-icon "/​usr/​share/​awstats/​icon"​ 
-    ScriptAlias /awstats "/​usr/​lib/​cgi-bin/"​ 
- <​Directory "/​usr/​share/​awstats/​icon">​ 
-   ​  ​    ​Options None 
-#Indexes MultiViews 
- AllowOverride None 
- Order allow,deny 
- Allow from all 
- </​Directory>​ 
-</​IfModule>​ 
- 
-# Types images d'​icône 
-<​IfModule mod_autoindex.c>​ 
- 
-    IndexOptions FancyIndexing VersionSort HTMLTable NameWidth=* 
- 
-    AddIconByEncoding (CMP,/​icons/​compressed.gif) x-compress x-gzip 
- 
-    AddIconByType (TXT,/​icons/​text.gif) text/* 
-    AddIconByType (IMG,/​icons/​image2.gif) image/* 
-    AddIconByType (SND,/​icons/​sound2.gif) audio/* 
-    AddIconByType (VID,/​icons/​movie.gif) video/* 
- 
-    AddIcon /​icons/​binary.gif .bin .exe 
-    AddIcon /​icons/​binhex.gif .hqx 
-    AddIcon /​icons/​tar.gif .tar 
-    AddIcon /​icons/​world2.gif .wrl .wrl.gz .vrml .vrm .iv 
-    AddIcon /​icons/​compressed.gif .Z .z .tgz .gz .zip 
-    AddIcon /​icons/​a.gif .ps .ai .eps 
-    AddIcon /​icons/​layout.gif .html .shtml .htm .pdf 
-    AddIcon /​icons/​text.gif .txt 
-    AddIcon /​icons/​c.gif .c 
-    AddIcon /​icons/​p.gif .pl .py 
-    AddIcon /​icons/​f.gif .for 
-    AddIcon /​icons/​dvi.gif .dvi 
-    AddIcon /​icons/​uuencoded.gif .uu 
-    AddIcon /​icons/​script.gif .conf .sh .shar .csh .ksh .tcl 
-    AddIcon /​icons/​tex.gif .tex 
-    AddIcon /​icons/​bomb.gif core 
- 
-    AddIcon /​icons/​back.gif .. 
-    AddIcon /​icons/​hand.right.gif README 
-    AddIcon /​icons/​folder.gif ^^DIRECTORY^^ 
-    AddIcon /​icons/​blank.gif ^^BLANKICON^^ 
- 
-  
-    DefaultIcon /​icons/​unknown.gif 
- 
-    ReadmeName README.html 
-    HeaderName HEADER.html 
- 
-    IndexIgnore .??* *~ *# RCS CVS *,v *,t  
-</​IfModule>​ 
- 
-# Type langages 
-<​IfModule mod_mime.c>​ 
-    AddType application/​x-compress .Z 
-    AddType application/​x-gzip .gz .tgz 
- 
-    AddLanguage ca .ca 
-    AddLanguage cs .cz .cs 
-    AddLanguage da .dk 
-    AddLanguage de .de 
-    AddLanguage el .el 
-    AddLanguage en .en 
-    AddLanguage eo .eo 
-    AddLanguage es .es 
-    AddLanguage et .et 
-    AddLanguage fr .fr 
-    AddLanguage he .he 
-    AddLanguage hr .hr 
-    AddLanguage it .it 
-    AddLanguage ja .ja 
-    AddLanguage ko .ko 
-    AddLanguage ltz .ltz 
-    AddLanguage nl .nl 
-    AddLanguage nn .nn 
-    AddLanguage no .no 
-    AddLanguage pl .po 
-    AddLanguage pt .pt 
-    AddLanguage pt-BR .pt-br 
-    AddLanguage ru .ru 
-    AddLanguage sv .sv 
-    AddLanguage zh-CN .zh-cn 
-    AddLanguage zh-TW .zh-tw 
-</​IfModule>​ 
- 
-# Langue prioritaire pour les pages de réponses (choisir l'​ordre des langues des pages) 
-<​IfModule mod_negotiation.c>​ 
-    
-    LanguagePriority fr ca cs da de el eo es et en he hr it ja ko ltz nl nn no pl pt pt-BR ru sv zh-CN zh-TW 
- 
-    ForceLanguagePriority Prefer Fallback 
- 
-</​IfModule>​ 
- 
-# Type d'​encodage de caractères ​ 
-<​IfModule mod_mime.c>​ 
-    AddCharset us-ascii ​   .ascii .us-ascii 
-    AddCharset ISO-8859-1 ​ .iso8859-1 ​ .latin1 
-    AddCharset ISO-8859-2 ​ .iso8859-2 ​ .latin2 .cen 
-    AddCharset ISO-8859-3 ​ .iso8859-3 ​ .latin3 
-    AddCharset ISO-8859-4 ​ .iso8859-4 ​ .latin4 
-    AddCharset ISO-8859-5 ​ .iso8859-5 ​ .cyr .iso-ru 
-    AddCharset ISO-8859-6 ​ .iso8859-6 ​ .arb .arabic 
-    AddCharset ISO-8859-7 ​ .iso8859-7 ​ .grk .greek 
-    AddCharset ISO-8859-8 ​ .iso8859-8 ​ .heb .hebrew 
-    AddCharset ISO-8859-9 ​ .iso8859-9 ​ .latin5 .trk 
-    AddCharset ISO-8859-10 ​ .iso8859-10 ​ .latin6 
-    AddCharset ISO-8859-13 ​ .iso8859-13 
-    AddCharset ISO-8859-14 ​ .iso8859-14 ​ .latin8 
-    AddCharset ISO-8859-15 ​ .iso8859-15 ​ .latin9 
-    AddCharset ISO-8859-16 ​ .iso8859-16 ​ .latin10 
-    AddCharset ISO-2022-JP .iso2022-jp .jis 
-    AddCharset ISO-2022-KR .iso2022-kr .kis 
-    AddCharset ISO-2022-CN .iso2022-cn .cis 
-    AddCharset Big5        .Big5       .big5 .b5 
-    AddCharset cn-Big5 ​    ​.cn-big5 
-    # For russian, more than one charset is used (depends on client, mostly): 
-    AddCharset WINDOWS-1251 .cp-1251 ​  ​.win-1251 
-    AddCharset CP866       ​.cp866 
-    AddCharset KOI8      .koi8 
-    AddCharset KOI8-E ​     .koi8-e 
-    AddCharset KOI8-r ​     .koi8-r .koi8-ru 
-    AddCharset KOI8-U ​     .koi8-u 
-    AddCharset KOI8-ru ​    ​.koi8-uk .ua 
-    AddCharset ISO-10646-UCS-2 .ucs2 
-    AddCharset ISO-10646-UCS-4 .ucs4 
-    AddCharset UTF-7       .utf7 
-    AddCharset UTF-8       .utf8 
-    AddCharset UTF-16 ​     .utf16 
-    AddCharset UTF-16BE ​   .utf16be 
-    AddCharset UTF-16LE ​   .utf16le 
-    AddCharset UTF-32 ​     .utf32 
-    AddCharset UTF-32BE ​   .utf32be 
-    AddCharset UTF-32LE ​   .utf32le 
-    AddCharset euc-cn ​     .euc-cn 
-    AddCharset euc-gb ​     .euc-gb 
-    AddCharset euc-jp ​     .euc-jp 
-    AddCharset euc-kr ​     .euc-kr 
-    #Not sure how euc-tw got in - IANA doesn'​t list it??? 
-    AddCharset EUC-TW ​     .euc-tw 
-    AddCharset gb2312 ​     .gb2312 .gb 
-    AddCharset iso-10646-ucs-2 .ucs-2 .iso-10646-ucs-2 
-    AddCharset iso-10646-ucs-4 .ucs-4 .iso-10646-ucs-4 
-    AddCharset shift_jis ​  ​.shift_jis .sjis 
- 
-    AddHandler type-map var 
- 
-    AddType text/html .shtml 
-    AddOutputFilter INCLUDES .shtml 
-</​IfModule>​ 
- 
-<​IfModule mod_setenvif.c> ​   
-    BrowserMatch "​Mozilla/​2"​ nokeepalive 
-    BrowserMatch "MSIE 4\.0b2;"​ nokeepalive downgrade-1.0 force-response-1.0 
-    BrowserMatch "​RealPlayer 4\.0" force-response-1.0 
-    BrowserMatch "​Java/​1\.0"​ force-response-1.0 
-    BrowserMatch "​JDK/​1\.0"​ force-response-1.0 
- 
-    BrowserMatch "​Microsoft Data Access Internet Publishing Provider"​ redirect-carefully 
-    BrowserMatch "MS FrontPage"​ redirect-carefully 
-    BrowserMatch "​^WebDrive"​ redirect-carefully 
-    BrowserMatch "​^WebDAVFS/​1.[012]"​ redirect-carefully 
-    BrowserMatch "​^gnome-vfs/​1.0"​ redirect-carefully 
-    BrowserMatch "^XML Spy" redirect-carefully 
-    BrowserMatch "​^Dreamweaver-WebDAV-SCM1"​ redirect-carefully 
-</​IfModule>​ 
- 
-# module d'​information sur le statut du serveur 
-<​IfModule mod_status.c>​ 
-    <​Location /​server-status>​ 
-        SetHandler server-status 
-        Order deny,allow 
-        Deny from all 
-        Allow from 127.0.0.1 
-    </​Location>​ 
-</​IfModule>​ 
- 
-# module des informations du serveur 
-<​IfModule mod_info.c>​ 
-    <​Location /​server-info>​ 
-        SetHandler server-info 
-        Order deny,allow 
-        Deny from all 
-        Allow from 127.0.0.1 
-    </​Location>​ 
-</​IfModule>​ 
- 
-</​code>​ 
  
 ==== sites-available ==== ==== sites-available ====
  
-Ce fichier ​contient les différents **vhosts**((Un vhost signifie //Virtual Host// ; //Hôte Virtuel//​.)) ​que vous utiliserez. Ils vous permettent de **définir plusieurs sites** sur une même machine,\\+Ce répertoire ​contient les différents **hôtes virtuels** que vous pouvez utiliser. Ils vous permettent de **définir plusieurs sites** sur une même machine,\\
 le plus souvent des sous-domaines (**www**.domain.tld,​ **machin**.domain.tld...),​ mais aussi d'​autres domaines (**domain**.tld,​ **autredomain**.tld...).\\ le plus souvent des sous-domaines (**www**.domain.tld,​ **machin**.domain.tld...),​ mais aussi d'​autres domaines (**domain**.tld,​ **autredomain**.tld...).\\
-<note note>Si vous voulez utiliser plusieurs hôtes ​virtuel ​voir [[:​tutoriel:​virtualhosts_avec_apache2|virtualhosts_avec_apache2]]</​note>​ +<note note>Si vous voulez utiliser plusieurs hôtes ​virtuels ​voir [[:​tutoriel:​virtualhosts_avec_apache2|virtualhosts_avec_apache2]]</​note>​ 
-[[:​tutoriel:​comment_editer_un_fichier|Éditez le fichier]] **/​etc/​apache2/​sites-available/​default** (le seul vhost existant pour le moment).+[[:​tutoriel:​comment_editer_un_fichier|Éditez le fichier]] **/​etc/​apache2/​sites-available/​000-default.conf** (le seul vhost existant pour le moment).
  
 <code apache> <code apache>
-# NameVirtualHost définit les IPs à utiliser par apache, 
-# * signifie qu'on utilise n'​importe quel IP pour accéder au serveur 
-# 127.0.0.1 (boucle locale), 192.168.x.x (ip reseau local), ou une IP externe. 
-# Cette directive est en dehors du Vhost, on pourrait donc la déplacer dans apache2.conf. 
-# Dans tous les cas si elle est définie à * , elle ne doit pas être reprise dans les autres vhosts. 
-NameVirtualHost *:80 
- 
 # Le vhost proprement dit : il est compris dans un bloc <​VirtualHost>,​ # Le vhost proprement dit : il est compris dans un bloc <​VirtualHost>,​
 # Ces blocs définissent la "​portée"​ de la validité des directives qui y sont définies. # Ces blocs définissent la "​portée"​ de la validité des directives qui y sont définies.
-# Le * derrière VirtualHost définit ici que le vhost est valable pour toutes les IPs sur lesquelles apache écoute.+# Le * derrière VirtualHost définit ici que le vhost est valable pour toutes les IP sur lesquelles apache écoute.
 <​VirtualHost domain.tld:​80>​ <​VirtualHost domain.tld:​80>​
-# ServerName ​définie ​le nom utilisé pour le vhost. Mettez le nom de l'​hôte du domaine+# ServerName ​définit ​le nom utilisé pour le vhost. Mettez le nom de l'​hôte du domaine
 ServerName www.domain.tld ServerName www.domain.tld
-# ServerAlias ​définie ​les autres sous domaines pour lesquels le serveur répondra.+# ServerAlias ​définit ​les autres sous-domaines pour lesquels le serveur répondra.
 ServerAlias domain.tld *.domain.tld ServerAlias domain.tld *.domain.tld
 # ServerAdmin vous permet de spécifier un email à utiliser en cas de problème, sur une page d'​erreur 404 par exemple. # ServerAdmin vous permet de spécifier un email à utiliser en cas de problème, sur une page d'​erreur 404 par exemple.
 ServerAdmin administrateur.web@domain.tld ServerAdmin administrateur.web@domain.tld
 # DocumentRoot définit le dossier racine dans lequel seront stockés les fichiers du site. # DocumentRoot définit le dossier racine dans lequel seront stockés les fichiers du site.
-DocumentRoot /var/www/htdocs+DocumentRoot /var/www/html
         # Directory définit les options par défaut du répertoire         # Directory définit les options par défaut du répertoire
- <​Directory /var/www/htdocs+ <​Directory /var/www/html
-                # Active les options:+                # Active les options :
                 # FollowSymLinks permet de suivre les liens symboliques.                 # FollowSymLinks permet de suivre les liens symboliques.
-                # Indexes autorise le listage de fichiers d'un répertoire qui ne contient pas d'​index. +                # Indexes autorise le listage de fichiers d'un répertoire qui ne contient pas d'​index ​(désactivé ici)
- Options Indexes FollowSymLinks MultiViews+ Options ​-Indexes ​+FollowSymLinks ​+MultiViews
                 # AllowOverride permet de surcharger certaines options en utilisant des fichiers .htaccess dans le répertoire du site.                 # AllowOverride permet de surcharger certaines options en utilisant des fichiers .htaccess dans le répertoire du site.
  AllowOverride None  AllowOverride None
-                # Droits ​par defaut +                # Droits d'accès (on autorise tout) 
- Order allow,​deny + Require all granted
- allow from all +
- # permet de rediriger les requêtes vers un fichier ​d'index precis ​ +
- RedirectMatch ^/$ /index.php+
  </​Directory>​  </​Directory>​
  
Ligne 710: Ligne 221:
 Supprimer l'​ancien lien symbolique de la configuration d'​origine Supprimer l'​ancien lien symbolique de la configuration d'​origine
  
-<​code>​sudo a2dissite default</​code>​ 
  
 Il faut maintenant **activer le vhost**. Pour cela il faut créer un **lien symbolique** du fichier **de sites-available/​ vers sites-enabled/​**.\\ Il faut maintenant **activer le vhost**. Pour cela il faut créer un **lien symbolique** du fichier **de sites-available/​ vers sites-enabled/​**.\\
-En utilisant:+En utilisant :
  
 <​code>​sudo a2ensite nomduvhost</​code>​ <​code>​sudo a2ensite nomduvhost</​code>​
  
-<note note> 
-**a2dissite** : Apache2 Disable Site\\ 
-**a2ensite** : Apache2 Enable Site 
-</​note> ​ 
-Cette méthode du lien symbolique permet de réaliser rapidement des changements dans la configuration d'​apache. 
  
-[[:​tutoriel:​comment_editer_un_fichier|Éditez le fichier]] **/​etc/​hosts** et modifier la ligne avec nomduvhost le ServerName que vous avez choisi:+[[:​tutoriel:​comment_editer_un_fichier|Éditez le fichier]] **/​etc/​hosts** et modifier la ligne avec nomduvhost le ServerName que vous avez choisi :
  
 <​file>​127.0.0.1 localhost nomduvhost</​file>​ <​file>​127.0.0.1 localhost nomduvhost</​file>​
Ligne 729: Ligne 234:
 Cela permettra à votre système de faire la correspondance entre le nom de l'​hôte et votre machine locale. Cela permettra à votre système de faire la correspondance entre le nom de l'​hôte et votre machine locale.
  
-Notez que sous debian/ubuntu ​2 les pages a utiliser comme index sont spécifiées dans le module dir (mods-available/​dir.conf).+Notez que sous Debian/Ubuntu ​2 les pages a utiliser comme index sont spécifiées dans le module dir (mods-available/​dir.conf).
  
-== Activer les scripts CGI ==== 
  
-Pour ce faire, rien de plus simple, ajoutez les lignes suivantes à votre "​apache2.conf"​ : 
- 
-<​code>​ScriptAlias /cgi-bin/ /​var/​www/​votre_site/​cgi-bin/​ 
- <​Directory /​var/​www/​votre_site/​cgi-bin/>​ 
- Options ExecCGI 
- AddHandler cgi-script cgi pl py 
- </​Directory>​ 
-</​code>​ 
 ==== Sécuriser Apache ​ ==== ==== Sécuriser Apache ​ ====
  
-  *  [[:​tutoriel/​securiser_apache2|Sécuriser Apache2]] 
   *  [[tutoriel/​securiser_apache2_avec_ssl|Sécuriser Apache2 avec SSL]]   *  [[tutoriel/​securiser_apache2_avec_ssl|Sécuriser Apache2 avec SSL]]
   *  Voir la documentation [[http://​www.cgsecurity.org/​Articles/​apache.html]]   *  Voir la documentation [[http://​www.cgsecurity.org/​Articles/​apache.html]]
Ligne 808: Ligne 303:
 <​code>​sudo service apache2 start | stop | restart | status </​code>​ <​code>​sudo service apache2 start | stop | restart | status </​code>​
  
-Il existe des interfaces graphiques pour utiliser Apache. De la plus simple à la plus complète : [[https://​launchpad.net/​localhost-indicator|localhost-indicator]][[https://​launchpad.net/​rapache|rapache]] ​et [[http://​doc.ubuntu-fr.org/​webmin|webmin]]. ​+Il existe des interfaces graphiques pour utiliser Apache. De la plus simple à la plus complète : [[https://​launchpad.net/​localhost-indicator|localhost-indicator]] ​FIXME cassé et [[https://​launchpad.net/​rapache|rapache]] ​
  
 ==== Erreur au démarrage ==== ==== Erreur au démarrage ====
Ligne 818: Ligne 313:
 Pour corriger l'​erreur : Pour corriger l'​erreur :
 === Première solution === === Première solution ===
-On doit [[:​tutoriel:​comment_modifier_un_fichier|éditer le fichier]] **/​etc/​apache2/​httpd.conf**+On doit [[:​tutoriel:​comment_modifier_un_fichier|éditer le fichier]] **/​etc/​apache2/​apache2.conf**
  
 Par défaut ce fichier est vide, il faut donc ajouter la ligne suivante: Par défaut ce fichier est vide, il faut donc ajouter la ligne suivante:
  
 <​code>​ServerName localhost</​code>​ <​code>​ServerName localhost</​code>​
 +
 +<note tip>On peut l'​écrire aussi directement à la fin du fichier **/​etc/​apache2/​apache2.conf** si ça ne marche vraiment pas (ce qui a été mon cas).</​note>​
  
 On enregistre, on quitte et on redémarre Apache : On enregistre, on quitte et on redémarre Apache :
Ligne 855: Ligne 352:
 Nous pouvons maintenant passer à la phase de vérification.\\ Nous pouvons maintenant passer à la phase de vérification.\\
  
-Si il y a des messages d'​erreurs regarder les fichiers ​suivant:\\+S'il y a des messages d'​erreurs regarder les fichiers ​suivants ​:\\
 <​code>​ <​code>​
-tail /​var/​log/​syslog +tail -f /​var/​log/​syslog 
-tail /​var/​log/​apache2/​access.log +tail -f /​var/​log/​apache2/​access.log 
-tail /​var/​log/​apache2/​error.log+tail -f /​var/​log/​apache2/​error.log
 </​code>​ </​code>​
  
Ligne 866: Ligne 363:
 Les .htaccess permettent de créer des zones administrateur protégées très facilement ou aussi d'​activer des configurations de façon localisées pour des serveurs auxquels vous n'avez pas accès au fichier de configuration principale. Les .htaccess permettent de créer des zones administrateur protégées très facilement ou aussi d'​activer des configurations de façon localisées pour des serveurs auxquels vous n'avez pas accès au fichier de configuration principale.
  
-[[:​tutoriel:​comment_editer_un_fichier|éditez le fichier]] /​etc/​apache2/​sites-enabled/​000-default+[[:​tutoriel:​comment_editer_un_fichier|éditez le fichier]] /​etc/​apache2/​sites-enabled/​000-default.conf
  
 <note tip>Vous pouvez aussi éditer /​etc/​apache2/​apache2.conf plutôt que d'​utiliser des fichiers .htaccess (ne pas les activer par conséquent),​ ce qui est d'​ailleurs préférable \\ <note tip>Vous pouvez aussi éditer /​etc/​apache2/​apache2.conf plutôt que d'​utiliser des fichiers .htaccess (ne pas les activer par conséquent),​ ce qui est d'​ailleurs préférable \\
Ligne 885: Ligne 382:
 [[:​apache2#​redemarrer_apache2 | Redémarrer ensuite apache]] et les .htaccess sont activés [[:​apache2#​redemarrer_apache2 | Redémarrer ensuite apache]] et les .htaccess sont activés
  
-Si vous souhaitez autoriser les fichiers .htaccess partout (et pas uniquement dans un unique répertoire) il vous faudra remplacer "​AllowOverride none" par "​AllowOverride All" entre les balises <​Directory />​…</​Directory>​ et <​Directory /​var/​www/>​…</​Directory>​ du fichier /​etc/​apache2/​sites-enabled/​000-default.+Si vous souhaitez autoriser les fichiers .htaccess partout (et pas uniquement dans un unique répertoire) il vous faudra remplacer "​AllowOverride none" par "​AllowOverride All" entre les balises <​Directory />​…</​Directory>​ et <​Directory /​var/​www/>​…</​Directory>​ du fichier /​etc/​apache2/​sites-enabled/​000-default.conf .
  
 <​note>​**Dossier invisible** : pour activer PHP 5 sur les hébergements Free.fr, un fichier .htaccess contenant "php 1" est nécessaire;​ la présence de celui-ci a pour conséquence de rendre le dossier conteneur invisible sous Apache.</​note>​ <​note>​**Dossier invisible** : pour activer PHP 5 sur les hébergements Free.fr, un fichier .htaccess contenant "php 1" est nécessaire;​ la présence de celui-ci a pour conséquence de rendre le dossier conteneur invisible sous Apache.</​note>​
Ligne 892: Ligne 389:
  
 Il est possible d'​ajouter des modules à apache, ajoutant des fonctionnalités à votre serveur web. Il est possible d'​ajouter des modules à apache, ajoutant des fonctionnalités à votre serveur web.
-Tous les modules sont répertoriés ici :  +Tous les modules sont répertoriés ici : /​etc/​apache2/​mods-available 
-==== Activer l'url rewriting ====+==== Activer l'URL rewriting ====
  
 Chargez le module rewrite : Chargez le module rewrite :
-<​code>​sudo a2enmod rewrite</​code>​+<​code>​a2enmod rewrite</​code>​
  
 Ensuite, deux possibilités s'​offrent à vous suivant vos capacités de gestion de votre serveur : Ensuite, deux possibilités s'​offrent à vous suivant vos capacités de gestion de votre serveur :
-  * **pour un serveur mutualisé par exemple** : placer ​ un fichier .htaccess avec des règles de rewriting à la racine de votre site. Pour cela les fichiers .htaccess doivent être autorisé ​: [[:​apache2#​activer_les_fichiers_.htaccess | Activer les fichiers .htaccess]]+  * **pour un serveur mutualisé par exemple** : placer ​ un fichier .htaccess avec des règles de rewriting à la racine de votre site. Pour cela les fichiers .htaccess doivent être autorisés ​: [[:​apache2#​activer_les_fichiers_.htaccess | Activer les fichiers .htaccess]]
   * **pour un serveur dédié ou un serveur personnel** (sur votre propre distribution) il est conseillé d'​ajouter les règles de rewriting directement dans le fichier de configuration d'​Apache2 : /​etc/​apache2/​apache2.conf en recopiant les lignes suivantes à la fin dudit fichier.   * **pour un serveur dédié ou un serveur personnel** (sur votre propre distribution) il est conseillé d'​ajouter les règles de rewriting directement dans le fichier de configuration d'​Apache2 : /​etc/​apache2/​apache2.conf en recopiant les lignes suivantes à la fin dudit fichier.
  
Ligne 910: Ligne 407:
  
 # Lorsque l'on tape dans la barre d'​adresse www.votre_domaine.net/​page-1 c'est la page www.votre_domaine.net/​page.php?​id=1 qui s'​affiche # Lorsque l'on tape dans la barre d'​adresse www.votre_domaine.net/​page-1 c'est la page www.votre_domaine.net/​page.php?​id=1 qui s'​affiche
-# [L]=[last] signifie que si cette régle ​s'​applique on n'en cherche pas d'​autre+# [L]=[last] signifie que si cette règle ​s'​applique on n'en cherche pas d'​autre
 RewriteRule ^page-1$ /​page.php?​id=1 [L] RewriteRule ^page-1$ /​page.php?​id=1 [L]
  
Ligne 974: Ligne 471:
 Le mod_deflate sur apache2 permet de gagner en rapidité et en bande passante grâce à la compression des données qui transitent entre le serveur et les clients. La compression utilisée est gzip. L'​installation ci-dessous permet de compresser les fichiers texte (html, css,...). Le mod_deflate sur apache2 permet de gagner en rapidité et en bande passante grâce à la compression des données qui transitent entre le serveur et les clients. La compression utilisée est gzip. L'​installation ci-dessous permet de compresser les fichiers texte (html, css,...).
  
-**Activation des modules deflate et headers: ** +**Activation des modules deflate et headers : ** 
  
    sudo a2enmod headers    sudo a2enmod headers
    sudo a2enmod deflate    sudo a2enmod deflate
  
-**Configuration de deflate: **+**Configuration de deflate : **
  
-Créez ou modifiez le fichier /​etc/​apache2/​conf.d/​mod_deflate.conf et ajoutez-y:+Créez ou modifiez le fichier /​etc/​apache2/​conf.d/​mod_deflate.conf et ajoutez-y :
  
    <​Location />    <​Location />
Ligne 1004: Ligne 501:
 Les pages seront compressées quand le client le supporte. Les pages seront compressées quand le client le supporte.
  
-<note tip>Si un message d'​erreur de ce type apparait ​:+<note tip>Si un message d'​erreur de ce type apparaît ​:
  
 apache2: Could not reliably determine the server'​s fully qualified domain name, using 127.0.1.1 for ServerName. apache2: Could not reliably determine the server'​s fully qualified domain name, using 127.0.1.1 for ServerName.
Ligne 1010: Ligne 507:
 Voir [[apache2?&#​erreur_au_demarrage|ici]] </​note>​ Voir [[apache2?&#​erreur_au_demarrage|ici]] </​note>​
 ==== mod_userdir gérer les dossiers utilisateur ==== ==== mod_userdir gérer les dossiers utilisateur ====
-Cette partie est déjà documentée ​pour xampp ici http://​doc.ubuntu-fr.org/​xampp#​modifier_le_dossier_racine_du_serveur_apache mais je préfère ​le mettre dans apache.+Cette partie est déjà documentée ​sur [[:​xampp#​modifier_le_dossier_racine_du_serveur_apache|la page xampp]] ​mais reprenons ​le ici.
  
 Certaines personnes aimeraient faire en sorte à ce que chaque utilisateur du serveur puisse avoir son site web perso.\\ Certaines personnes aimeraient faire en sorte à ce que chaque utilisateur du serveur puisse avoir son site web perso.\\
 Ce site peut être accessible par : http://​mondomaine.com/​~nom_du_user Ce site peut être accessible par : http://​mondomaine.com/​~nom_du_user
 +<​note>​ dans la plupart des cas c'est http://​localhost/​~nom_du_user</​note>​
  
-Pour cela, le module userdir est fait pour vous. 
  
-Activer le module userdir +=== Permettre à chaque utilisateur d'​avoir son propre site dans public_html === 
-  sudo a2enmod userdir + 
-Le fichier suivant contient sa configuration ''​/​etc/​apache2/​mods-available/userdir.conf''​+Créer un répertoire public_html et lui donner les droits de lecture et d'​exécution 
 +<​code>​ 
 +mkdir ~/​public_html 
 +echo '<?​php echo "PHP est actif dans votre public_html";​ ?>' > ~/​public_html/​index.php 
 +chmod -R 755 ~/​public_html 
 +</​code>​ 
 + 
 +===Activer ​l'​exécution en php pour le module userdir ​(à partir de Ubuntu 10.04 (Lucid)) === 
 +Editer ​/​etc/​apache2/​mods-enabled/php5.conf et commenter les lignes correspondantes (avec ##) dans le fichier php5.conf qui se trouve dans /​etc/​apache2/​mods-enabled.
  
-Son contenu est le suivant : 
 <​file>​ <​file>​
-<IfModule mod_userdir.c+<FilesMatch ".+\.ph(p[345]?​|t|tml)$"​
-        ​UserDir public_html +    ​SetHandler application/​x-httpd-php 
-        ​UserDir disabled root+</​FilesMatch>​ 
 +<​FilesMatch "​.+\.phps$">​ 
 +    SetHandler application/​x-httpd-php-source 
 +    # Deny access to raw php sources by default 
 +    # To re-enable it's recommended to enable access to the files 
 +    # only in specific virtual host or directory 
 +    Order Deny,​Allow 
 +    Deny from all 
 +</​FilesMatch>​ 
 +# Deny access to files without filename (e.g. '​.php'​) 
 +<​FilesMatch "​^\.ph(p[345]?​|t|tml|ps)$">​ 
 +    Order Deny,​Allow 
 +    Deny from all 
 +</​FilesMatch>​
  
-        ​<​Directory /​home/​*/​public_html>​ +# Running PHP scripts in user directories is disabled by default 
-                ​AllowOverride FileInfo AuthConfig Limit Indexes +#  
-                ​Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec +# To re-enable PHP in user directories comment the following lines 
-                <Limit GET POST OPTIONS+# (from <​IfModule ...> to </​IfModule>​.) Do NOT set it to On as it 
-                        Order allow,deny +# prevents .htaccess files from disabling it. 
-                        Allow from all +##<​IfModule mod_userdir.c>​ 
-                </Limit+##    ​<​Directory /​home/​*/​public_html>​ 
-                <LimitExcept GET POST OPTIONS+##        php_admin_flag engine Off 
-                        Order deny,allow +##    </​Directory>​ 
-                        ​Deny ​from all +##</IfModule
-                </LimitExcept+</​file>​ 
-        </​Directory>​+ 
 +== (Pour mémoire) ​ Ancienne version de php5.conf == 
 +<​file>​ 
 +<​IfModule mod_php5.c>​ 
 +    <​FilesMatch "​\.ph(p3?​|tml)$">​ 
 + SetHandler application/​x-httpd-php 
 +    ​</FilesMatch
 +    <FilesMatch "​\.phps$"​
 + SetHandler application/​x-httpd-php-source 
 +    </​FilesMatch>​ 
 +    # To re-enable php in user directories comment the following lines 
 +    # (from <​IfModule ...> to </​IfModule>​.) Do NOT set it to On as it 
 +    # prevents .htaccess files from disabling it. 
 +    ##<IfModule mod_userdir.c>​ 
 +    ##      <​Directory ​/home/​*/​public_html
 +    ## ​       php_admin_value engine Off 
 +    ##     </​Directory
 +    ##</​IfModule>
 </​IfModule>​ </​IfModule>​
 </​file>​ </​file>​
  
-<​note>​La directive UserDir désigne le nom du dossier qui est contenu dans le dossier ​personnel ​de l'​utilisateur si une url du type ~utilisateur est reçue. Vous pouvez donc la changer si vous voulez que ça soit autre chose que la valeur par défaut.</​note>​+===Optionnel : Personnaliser votre répertoire de site === 
 +  
 +Il est possible de changer ​le dossier ​par défaut (public_html) ​de votre site par un autre répertoire.
  
-Redémarrer apache+==Éditer le fichier de configuration de userdir ==
  
-Créer un dossier nommé ​public_html dans votre home et essayer, ça devrait marcher ​:)+Modifier la variable <<​UserDir ​public_html>> ​dans le fichier /​etc/​apache2/​mods-available/​userdir.conf ​: 
 +<​file><​IfModule mod_userdir.c>​ 
 + UserDir public_html 
 + UserDir disabled root
  
-<note warning> Sur Ubuntu 11.04, les droits d'​accès au répertoire ​/home/user sont insuffisants. Vous risquez d'​avoir une erreur 403 "​permission ​denied". SI le user est john, faire la manip suivante :+ <Directory ​/home/*/​public_html>​ 
 + AllowOverride FileInfo AuthConfig Limit Indexes 
 + Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec 
 + <Limit GET POST OPTIONS>​ 
 + Require all granted 
 + </​Limit>​ 
 + <​LimitExcept GET POST OPTIONS>​ 
 + Require all denied 
 + </​LimitExcept>​ 
 + </​Directory>​ 
 +</​IfModule>​
  
-  chgrp www-data /​home/​john/​ +# vimsyntax=apache ts=4 sw=4 sts=4 sr noet
-  chmod 750 /​home/​john/​ +
-   +
-</​note>​ +
- +
-<note warning>​Sur Ubuntu 10.04 (Lucid) et 11.04 l'​exécution en php est désactivée par défaut avec ce module. Pour changer ça et éviter que le navigateur télécharge le code php directement,​ éditer le fichier ''/​etc/​apache2/​mods-enabled/​php5.conf''​ et commentez les lignes comme ci dessous ​: +
-<​file>​ +
-[..] +
-#    <​IfModule mod_userdir.c>​ +
-#        <​Directory /​home/​*/​public_html>​ +
-#            php_admin_value engine Off +
-#        </​Directory>​ +
-#    </​IfModule>​ +
-[..]+
 </​file>​ </​file>​
-</note>+ 
 +===Activer le module userdir=== 
 +<code> 
 +sudo a2enmod userdir 
 +sudo /etc/​init.d/​apache2 reload 
 +</​code>​ 
 + 
 +Dans le navigateur web rendez-vous à l'​adresse http://​127.0.0.1/​~nom_du_user et vérifier que le message <<//​PHP est actif dans votre public_htm//>​s'​affiche. 
  
 ==== mod_proxy ou comment rediriger certains domaines vers certaines machines ==== ==== mod_proxy ou comment rediriger certains domaines vers certaines machines ====
Ligne 1146: Ligne 690:
  
 [[:​eaccelerator]] [[:​eaccelerator]]
 +
 +
 +===== Empêcher le démarrage automatique d'​apache =====
 +<note warning> Méthode déconseillée pour un serveur en production ! </​note>​
 +
 +<​note>​Dans le cas d'un ordinateur de bureau, **apache** est souvent utilisé de façon occasionnelle pour développer et tester en local.
 +
 +Pour les amoureux de l'​écologie c'est de l'​énergie gaspillée sans raison valable. ​
 +
 +Pour les machines à faibles ressources, apache diminue la vitesse de démarrage  ​
 +
 +Autant de raisons valables pour démarrer manuelle apache quand nous en avons besoin et enlever le <<​[[https://​fr.wikipedia.org/​wiki/​Daemon_%28informatique%29|daemon]]>>/​service de démarrage automatique ! </​note>​
 +
 +==== Modifier le service apache avec upstart ====
 +Se reporter à l'​exemple : [[upstart#​utilisation|Upstart]]
 +
 +==== 
 +==== Restaurer le démarrage automatique d'​apache avec update-rc.d ====
 +
 +<​code>​ user@PCMachine:​~$ sudo update-rc.d apache2 default </​code>​
 +
  
  
Ligne 1157: Ligne 722:
    * (en) [[http://​apache.org/​|Site officiel Projets Apache]]    * (en) [[http://​apache.org/​|Site officiel Projets Apache]]
    * [[http://​httpd.apache.org/​docs/​|Documentation Apache]]    * [[http://​httpd.apache.org/​docs/​|Documentation Apache]]
-   * [[tutoriel/​securiser_apache2]] 
    * [[tutoriel/​securiser_apache2_avec_ssl]]    * [[tutoriel/​securiser_apache2_avec_ssl]]
-   * (fr) [[http://www.neoflow.fr/​tutoriels.category.51/apache.html|Plusieurs tutoriels sur la configuration d'​Apache]]+   * [[lamp |installer un serveur LAMP]] 
 +   * [[lamp_plus|serveur LAMP aller plus loin]] 
 +   * (fr) [[https://www.it-connect.fr/cours-tutoriels/​administration-systemes/​serveur-web/apache/|Plusieurs tutoriels sur la configuration d'​Apache ​sur IT-Connect]] 
 +   * (fr) [[http://​documentation.online.net/​fr/​serveur-dedie/​tutoriel/​installation-solution-lamp_apache-php-mysql]] 
 +   
  
 ---- ----
-// Contributeurs : [[:​utilisateurs:​benje]],​ [[:​utilisateurs:​Pepou06]],​ [[:​utilisateurs:​Oxossi]],​ [[:​utilisateurs:​Karting06]]. //+// Contributeurs : [[:​utilisateurs:​benje]],​ [[:​utilisateurs:​Pepou06]],​ [[:​utilisateurs:​Oxossi]],​ [[:​utilisateurs:​Karting06]], [[:​utilisateurs:​albanmartel]]. //


Le contenu de ce wiki est sous licence : CC BY-SA v3.0