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 22/11/2016, 00:34] (Version actuelle)
92.132.19.193 modification de l'ordre pour passer en last first sur les consignes par version; formatage de la note de migration du www/
Ligne 4: Ligne 4:
  
 ====== 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** 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)]].
Ligne 14: Ligne 15:
 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>​Utilisateurs de Ubuntu 13.10 et suivante : 
 +
 +La version de Apache installée sur cette distribution est la version 2.4.6-2.
 +Ce changement de version implique des changements de certaines directives présentes dans vos VHOSTS.
 +
 +Référez-vous à la page : [[http://​httpd.apache.org/​docs/​2.4/​upgrading.html]] ; cette page 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 59: Ligne 67:
 ==== 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 89:
 ===== Installation ===== ===== Installation =====
  
-Apache est composé de plusieurs paquets.+Apache est composé de plusieurs paquets... 
 +====Installation de base====
  
-béta installation apache 2.4.4+=== Après Ubuntu 10.04=== 
 +[[:​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/​index.html** ou **/​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>​ +=== Versions ​jusqu'à Ubuntu 10.04 ===
-<​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]]**. [[:​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=== +=== Versions antérieures à Ubuntu ​6.06 === 
-[[:​tutoriel:​comment_installer_un_paquet|Installez ​le paquet]] **[[apt>​apache2|apache2]]**.+[[:​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]]**
  
-À 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 209: Ligne 129:
 | **[[apt>​apache2-mpm-worker|apache2-mpm-worker]]** | Modèle à processus haute vitesse pour Apache2 version avec thread, il est considérablement plus rapide que la version traditionnelle et **c'​est le MPM recommandé**. | | **[[apt>​apache2-mpm-worker|apache2-mpm-worker]]** | Modèle à processus haute vitesse pour Apache2 version avec thread, il est considérablement plus rapide que la version traditionnelle et **c'​est le MPM recommandé**. |
 | **[[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>​
  
  
Ligne 224: Ligne 146:
   * **''​httpd.conf''​** est le fichier utilisé par apache1, il est conservé vide dans Apache2 pour assurer la rétrocompatibilité. Il ne nous servira pas ;   * **''​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'​écoutes ;
   * **''​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.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 ;
   * **''​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 vhosts installés ;
-  * **''​sites-enabled''​** celle des vhosts ​utilisés.+  * **''​sites-enabled''​** celle des vhosts ​activées
  
 ==== Configuration des interfaces ==== ==== Configuration des interfaces ====
Ligne 662: Ligne 584:
 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 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,\\
 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/​default** (le seul vhost existant pour le moment).
  
Ligne 670: Ligne 592:
 # 127.0.0.1 (boucle locale), 192.168.x.x (ip reseau local), ou une IP externe. # 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. # 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.+# Dans tous les cassi elle est définie à * , elle ne doit pas être reprise dans les autres vhosts.
 NameVirtualHost *:80 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.
Ligne 687: Ligne 609:
         # 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/​htdocs>​
-                # 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.
Ligne 696: Ligne 618:
  Order allow,deny  Order allow,deny
  allow from all  allow from all
- # permet de rediriger les requêtes vers un fichier d'​index ​precis ​+ # permet de rediriger les requêtes vers un fichier d'​index ​précis ​
  RedirectMatch ^/$ /index.php  RedirectMatch ^/$ /index.php
  </​Directory>​  </​Directory>​
Ligne 713: Ligne 635:
  
 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>​
Ligne 723: Ligne 645:
 Cette méthode du lien symbolique permet de réaliser rapidement des changements dans la configuration d'​apache. 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 651:
 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 ==== == Activer les scripts CGI ====
Ligne 808: Ligne 730:
 <​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]] ​et [[https://​launchpad.net/​rapache|rapache]] ​
  
 ==== Erreur au démarrage ==== ==== Erreur au démarrage ====
Ligne 818: Ligne 740:
 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 779:
 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 892: Ligne 816:
  
 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 834:
  
 # 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 898:
 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 928:
 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 934:
 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 1117:
  
 [[:​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 1159: Ligne 1151:
    * [[tutoriel/​securiser_apache2]]    * [[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) [[http://​www.it-connect.fr/​tutoriels/​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