logo Debian Debian Debian-France Debian-Facile Debian-fr.org Forum-Debian.fr Debian ? Communautés logo inclusivité

Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).


L'icône rouge permet de télécharger chaque page du wiki visitée au format PDF et la grise au format ODT → ODT PDF Export

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
Prochaine révision Les deux révisions suivantes
doc:reseau:apache2:tp01 [22/09/2014 12:27]
Hypathie [Sécuriser son site]
doc:reseau:apache2:tp01 [03/10/2014 05:54]
Hypathie [OpenSSL : créer un certificat avec apache2]
Ligne 10: Ligne 10:
   * Commentaires sur le forum : [[:​http://​debian-facile.org/​viewtopic.php?​pid=98170#​p98170| Lien vers le forum concernant ce tuto]] ((N'​hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !))    * Commentaires sur le forum : [[:​http://​debian-facile.org/​viewtopic.php?​pid=98170#​p98170| Lien vers le forum concernant ce tuto]] ((N'​hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !)) 
  
-**Nota : Ce wiki est écrit par une débutante ** 
  
-Contributeurs,​ merci de compléter [[atelier:​chantier:​apache2#​securiser-son-site|la partie sur la sécurité]] ! FIXME +
 ===== Introduction ===== ===== Introduction =====
 Ce qui est mis en œuvre ici concerne une utilisation d'un serveur apache sur un réseau local qui ne pointe pas un nom de domaine acquis mais fictif.\\ ​ Ce qui est mis en œuvre ici concerne une utilisation d'un serveur apache sur un réseau local qui ne pointe pas un nom de domaine acquis mais fictif.\\ ​
Ligne 18: Ligne 17:
 **Avant tout, il faut savoir que monter un serveur web pour de l'​auto-hébergement présente des risques.** Vous courrez par exemple le risque de donner un accès à tout votre réseau local à un pirate qui chercherait à prendre la main sur votre identité pour commettre des attaques illégales en votre nom.\\ ​ **Avant tout, il faut savoir que monter un serveur web pour de l'​auto-hébergement présente des risques.** Vous courrez par exemple le risque de donner un accès à tout votre réseau local à un pirate qui chercherait à prendre la main sur votre identité pour commettre des attaques illégales en votre nom.\\ ​
  
-Ce wiki a pour objet de proposer une initiation à apache2, et déploie son installation sur une machine en vue de l'​apprentissage; ​machine virtuelle ​qu'il faudra éteindre en dehors des TP, voire détruire plutôt que la laisser dans l'​oubli sur un systèmeDans tous les cas se documenter sur la sécurité.\\  +Ce wiki a pour objet de proposer une initiation à apache2, et déploie son installation sur une machine virtuelle.
 Si vous choisissez de déployer ce qui suit sur une machine réelle faisant office de serveur personnel en vue d'​auto-hébergement,​ l'​auteur et debian-facile décline toute responsabilité sur les conséquences fâcheuses qui pourraient en découler.\\ ​ Si vous choisissez de déployer ce qui suit sur une machine réelle faisant office de serveur personnel en vue d'​auto-hébergement,​ l'​auteur et debian-facile décline toute responsabilité sur les conséquences fâcheuses qui pourraient en découler.\\ ​
  
-Prenez le temps d'​apprendre à sécuriser un serveur ​web avant de vous lancer dans l’auto-hébergement ! 8-)+Prenez le temps d'​apprendre à sécuriser un serveur avant de vous lancer dans l’auto-hébergement ! 8-)
  
 ===Pré-requis === ===Pré-requis ===
Ligne 136: Ligne 134:
 </​note>​ </​note>​
  
-===Méthode pour créer son site avec apache2 === 
- 
-Cette configuration par défaut, indique donc comment s'y prendre pour créer un site web pris en charge par apache2. 
- 
-  * **D'​abord,​ un fichier contenant le code source de la page web**: 
-Il doit être créé dans /var/www/, mais on placera ce fichier de code, dans un dossier qu'il faudra créer dans /​var/​www/​dossier-du-site/​fichier.html. 
- 
-  * **Ensuite pour que apache gère ce site** : 
-Il faudra créer un utilisateur dans la base de apache ainsi qu'un fichier correspondant à la page web de /​var/​www/​dossier-du-site/​fichier.html dans /​etc/​apache2/​sites-available/​dossier-du-site. ​ 
- 
-  * **Enfin pour activer ce site** : 
-Il faudra créer un lien symbolique dans /​etc/​apache2/​sites-available/​ pointant vers /​etc/​apache2/​sites-available/​dossier-du-site. 
  
 **//Puisque tout est bien clair, créons notre propre site web.//** **//Puisque tout est bien clair, créons notre propre site web.//**
Ligne 260: Ligne 246:
 </​code>​ </​code>​
  
-=====Sécuriser son site =====+===== Installer le module php===== 
 +===Installer libapache2-mod-php5 === 
 +Ce paquet casse le MPM worker(([[http://​httpd.apache.org/​docs/​2.2/​mod/​worker.html]])) et engendre l'​installation du MPM prefork(([[http://​httpd.apache.org/​docs/​2.2/​mod/​prefork.html]])).\\  
 + 
 +<code root>​apt-get install libapache2-mod-php5</​code>​ 
 + 
 + 
 +Une fois l'​installation effectuée on peut vérifier que php5 est apparu dans /​etc/​apache2/​mod-available.  
 + 
 +<code root>ls -l /​etc/​apache2/​mods-available/​php5*</​code>​ 
 +<​code>​-rw-r--r-- 1 root root 898 août  21 10:49 /​etc/​apache2/​mods-available/​php5.conf 
 +-rw-r--r-- 1 root root  59 août  21 10:49 /​etc/​apache2/​mods-available/​php5.load</​code>​ 
 + 
 +Dans /​etc/​apache2/​mod-enabled,​ ce sont des liens symboliques qui activent ce module: 
 +<code root>ls -l /​etc/​apache2/​mods-enabled/​php5*</​code>​ 
 +<​code>​lrwxrwxrwx 1 root root 27 sept. 20 11:40\ 
 + /​etc/​apache2/​mods-enabled/​php5.conf -> ../​mods-available/​php5.conf 
 +lrwxrwxrwx 1 root root 27 sept. 20 11:40\ 
 + /​etc/​apache2/​mods-enabled/​php5.load -> ../​mods-available/​php5.load</​code>​ 
 + 
 +-> Puisque les liens sont là, le module est activé. 
 + 
 + 
 + 
 +===Activer/​désactiver un module === 
 + 
 +  * ''​a2enmod''​ : (apache2 enable module) : active un module apache2 
 +  * ''​a2dismod''​ : (apache2 disable module) : désactive un module apache2 
 + 
 +Le module est activé par défaut, mais si ce n'​était pas le cas :  
 + 
 +<code root>​a2enmod php5</​code>​ 
 +Si on active ou désactive un module ne pas oublier après l'​opération de réactiver apache : ''​service apache2 restart''​ 
 + 
 +===Créer la page de test === 
 + 
 + 
 +<code root>mv /​var/​www/​index.html /​var/​www/​index.php</​code>​ 
 +<code root>vim /​var/​www/​index.php</​code>​ 
 +<​code>​ 
 +<​html>​ 
 + <​body>​ 
 +  <​h1>​It works!</​h1>​ 
 +  <​p>​This is the default web page for this server.</​p>​ 
 +  <?php 
 +echo "La date du jour est " . date("​d/​m/​Y"​) . "​!\n";​ 
 +  ?> 
 + </​body>​ 
 +</​html>​ 
 +</​code>​ 
 + 
 +  * Recharger apache :  
 +  
 +<code root>​service apache2 restart</​code>​ 
 + 
 +  * Tester en tapant dans le navigateur : 
 +''​http://​ip-du-serveur/''​ 
 + 
 +<​code>​It works! 
 + 
 +This is the default web page for this server. 
 +La date du jour est 20/09/2014! </​code>​ 
 + 
 +Tous les outils sont en place pour apprendre les langages html et php ! 8-) 
 + 
 + 
 +=====Sécuriser son site web===== 
 + 
 +====Sécuriser Apache2 ​====
 Ce n'est là qu'un minimum et non une sécurisation optimale. Ce n'est là qu'un minimum et non une sécurisation optimale.
-FIXME+
 ====Diffuser le minimum d'​information sur apache ==== ====Diffuser le minimum d'​information sur apache ====
   * Éditer le fichier /​etc/​apache2/​conf.d/​security.   * Éditer le fichier /​etc/​apache2/​conf.d/​security.
Ligne 282: Ligne 336:
 <code root>​service apache2 restart</​code>​ <code root>​service apache2 restart</​code>​
  
-====Vérifier ​certaines options <​Directory>​==== +====Modifier ​certaines options <​Directory> ​de son Virtualhost====
-===Limiter l'​accès à toute l'​arborescence du système Linux===+
  
-  * Désactiver le site "​sites-available/​default"​ :+  * Désactiver le site "​sites-available/​default"​ : 
  
 <code root>​a2dissite default</​code>​ <code root>​a2dissite default</​code>​
  
-  * Ensuite on va modifier les directives du site "/​etc/​apache2/​sites-available/​monsite.com"​ :+  * Désactiver le site "​monsite.com"​ :
  
-Pour ce faire, on le désactive d'​abord : 
 <code root>​a2dissite monsite.com</​code>​ <code root>​a2dissite monsite.com</​code>​
  
-Et on recharge ​''​service ​apache2 ​reload''​.\\ +  * Ensuite ​on va modifier les directives du site "/​etc/​apache2/​sites-available/​monsite.com" ​: 
 + 
 +On édite "/etc/apache2/​sites-available/​monsite.com" :
  
-Puis on édite "/​etc/​apache2/​sites-available/​monsite.com"​. 
 <code root>vim /​etc/​apache2/​sites-available/​monsite.com</​code>​ <code root>vim /​etc/​apache2/​sites-available/​monsite.com</​code>​
  
Ligne 305: Ligne 358:
         ServerAlias www.monsite.com         ServerAlias www.monsite.com
  
-        DocumentRoot /​var/​www/​monsite.com/​public_html+        DocumentRoot /​var/​www/​monsite.com
         <​Directory />         <​Directory />
-                Options FollowSymLinks+                Options ​-FollowSymLinks
                 AllowOverride None                 AllowOverride None
         </​Directory>​         </​Directory>​
Ligne 328: Ligne 381:
 > ''​Options -ExecCGI''​ : Pour désactiver l'​option permettant à apache l'​utilisation de scripts CGI. Désactiver cette option seulement si on n'​utilise pas de script CGI(([[http://​fr.wikipedia.org/​wiki/​Common_Gateway_Interface]])). > ''​Options -ExecCGI''​ : Pour désactiver l'​option permettant à apache l'​utilisation de scripts CGI. Désactiver cette option seulement si on n'​utilise pas de script CGI(([[http://​fr.wikipedia.org/​wiki/​Common_Gateway_Interface]])).
  
-  * On réactive ​le site +> Si on ne peut pas mettre l'​option ''​-FollowSymLinks''​ dans le fichier "​sites-available/​default",​ on peut dans celui de son site.
-<code root>​a2ensite monsite.com</​code>​+
  
-Et comme indiqué : ''​service apache2 reload''​.+> S'il s'agit d'un usage personnel local, on peut restreindre l'​accès au serveur avec les IP des clients du réseau local. 
 +  
 +Pour connaître la signification des différentes options à mettre soit dans "​sites-avaible"​ soit dans le fichier de son site voir : [[http://​httpd.apache.org/​docs/​2.2/​mod/​core.html]] 
 + 
 +====Création d'un nouvel utilisateur du système Linux==== 
 +On développera son site dans le répertoire de cet utilisateurIl est déconseillé de développer son site dans /var/www, surtout si la partition est plus petite que /home/ ! 
  
-====Développer son site web dans un /homeet restreindre l'​accès ​par mot de passe==== +Cela évitera aussi de mettre en place le module [[http://httpd.apache.org/​docs/​current/​fr/​mod/​mod_userdir.html|userdir]],​ ce qui est déconseillé ​par la documentation ​d'apache(("​De même, soyez méfiant en jouant avec la directive UserDir"​))
-La création ​d'un mot de passe sécurise un peu l'​accès du site qu'on va crée pour le nouvel virtualhost.+
  
-===Création d'un utilisateur apache2=== 
-Pas forcément du même nom que celui de l'​utilisateur du système Linux 
   * Par exemple du nom de "​web"​   * Par exemple du nom de "​web"​
 <code root>​adduser --system web --ingroup www-data</​code>​ <code root>​adduser --system web --ingroup www-data</​code>​
Ligne 345: Ligne 399:
  
   * On crée les fichiers du site web, "​monsite.com"​ dans /home/web/:   * On crée les fichiers du site web, "​monsite.com"​ dans /home/web/:
 +<code root>cd /​home/​web/</​code>​
 <​code>​mkdir -p monsite.com/​public_html</​code>​ <​code>​mkdir -p monsite.com/​public_html</​code>​
  
-  * On corrige l'​appartenance et les droits ​:+  * On édite un index pour le dossier /​home/​web/​monsite.com/​public_html/  ​: 
 +Le module php5 est en place et a été testé, donc on peut créer un "​index.php"​. 
 + 
 +<code root>vim /​home/​web/​monsite.com/​public_html/​index.php</​code>​ 
 +<​code><​html>​ 
 + <​body>​ 
 + <​h1>​Bienvenue sur monsite.com</​h1>​ 
 +  <​p>​Site en cours de réalisation !</​p>​ 
 +  <?php 
 +  echo "La date du jour est " . date("​d/​m/​Y"​) . "​!\n";​ 
 +  ?> 
 + </​body>​ 
 +</​html></​code>​
  
-<code root>​chown -R root:​www-data /home/web/ && chmod -R 755 /​home/​web/</​code>​+====Restreindre l'​accès à "​monsite.com"​ par login et mot de passe apache2==== 
 +La création d'un mot de passe sécurise un peu l'​accès du site qu'on va crée pour le nouvel virtualhost.\\  
 +**Pour ce faire on va créer en correspondance au utilisateur "web" du système Linux, un mot de passe apache avec la commande ''​htpasswd''​**.
  
-  * On édite ​un index.html : +===Création d'un mot de passe pour accéder à "monsite.com"=== 
-<code root>vim /home/web/monsite.com/​public_html/index.html</​code>​+Le dossier ​/etc/local est un bon endroit pour créer les fichiers de mots de passe apache.
  
-===Création du compte et du mot de passe=== 
-Le dossier /etc/local est un bon endroit pour créer les fichiers de mots de passe. 
 <code root>cd /usr/local/ && ls</​code>​ <code root>cd /usr/local/ && ls</​code>​
 <​code>​bin ​ etc  games  include ​ lib  man  sbin  share  src</​code>​ <​code>​bin ​ etc  games  include ​ lib  man  sbin  share  src</​code>​
Ligne 373: Ligne 440:
 -> le mot de passe est chiffré. -> le mot de passe est chiffré.
  
-  ​On peut aussi créer un groupe par exemple aussi dans le même dossier /​usr/​local/​apache/​passwd/​+<note tip> 
 +**Pour supprimer un utilisateur :** 
 + 
 +<code root>​htpasswd -D /​usr/​local/​apache/​passwd/​passwords utilisateur</​code>​ 
 +</​note>​ 
 + 
 +  * Pour créer un groupe par exemple aussi dans le même dossier /​usr/​local/​apache/​passwd/​
 Par exemple du nom de "​groups"​ : Par exemple du nom de "​groups"​ :
 <code root>vim groups</​code>​ <code root>vim groups</​code>​
-<​code>​goupe1 web toto</​code>​+<​code>​goupe1web</​code>​
  
-====Création d'un virtualhost avec restriction d'​accès ​==== +====Modifier les fichiers des sites actifs de /​etc/​apache2/​sites-available ​==== 
-Pour restreindre l'​accès à l'​utilisateur apache afin qu'un login et mot de passe soit requis pour accéder au site du Virtualhost qui sera crée, il faut modifier d'​abord le virtualhost "/​etc/​apache2/​sites-available/​default"​ +Pour restreindre l'​accès à "​monsite.com"​, il faut modifier d'​abord le virtualhost "/​etc/​apache2/​sites-available/​default"​
-===Configurer le site "​default" ​ === +
-Cela est nécessaire pour restreindre l'​accès du site qui sera crée dans le répertoire de l'​utilisateur du système ($USER).+
  
-  * On désactive ​"​default" ​''​a2dissite default'​'+===Pour ​"/​etc/​apache2/​sites-available/​default" ​ === 
 +Cela est nécessaire pour restreindre l'accès du site qui est développé dans le répertoire de l'utilisateur /​home/​web/​monsite.com qu'on a créé.
  
   * On modifie "/​etc/​apache2/​sites-available/​default"​ comme ceci :   * On modifie "/​etc/​apache2/​sites-available/​default"​ comme ceci :
Ligne 396: Ligne 468:
                 Options FollowSymLinks                 Options FollowSymLinks
                 AllowOverride AuthConfig                 AllowOverride AuthConfig
 +                Order deny,allow
 +                deny from all
 +                allow from 192.168.0.0/​24
         </​Directory>​         </​Directory>​
         <​Directory /​var/​www/>​         <​Directory /​var/​www/>​
-                Options Indexes FollowSymLinks MultiViews 
-                AllowOverride AuthConfig 
-                Order allow,deny 
-                allow from all 
-                AuthType Basic 
                 AuthName "Ma zone est restreinte !"                 AuthName "Ma zone est restreinte !"
                 AuthBasicProvider file                 AuthBasicProvider file
                 AuthUserFile /​usr/​local/​apache/​passwd/​passwords                 AuthUserFile /​usr/​local/​apache/​passwd/​passwords
                 AuthGroupFile /​usr/​local/​apache/​passwd/​groups                 AuthGroupFile /​usr/​local/​apache/​passwd/​groups
-                Require ​valid-user+                Require user web 
 +                require group group1 
 +                ​
         </​Directory>​         </​Directory>​
 +
 +        ScriptAlias /cgi-bin/ /​usr/​lib/​cgi-bin/​
 +        <​Directory "/​usr/​lib/​cgi-bin">​
 +                AllowOverride None
 +                Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
 +                Order allow,deny
 +                Allow from all
 +        </​Directory>​
 +        ErrorLog ${APACHE_LOG_DIR}/​error.log
 +
 +        # Possible values include: debug, info, notice, warn, error, crit,
 +        # alert, emerg.
 +        LogLevel warn
 +
 +        CustomLog ${APACHE_LOG_DIR}/​access.log combined
 </​code>​ </​code>​
  
 <​note>​ <​note>​
 **Bien remarquer que pour pouvoir ajouter cette directive**\\ ​ **Bien remarquer que pour pouvoir ajouter cette directive**\\ ​
--> on a mis ''​AllowOverride AuthConfig''​ à la place de ''​AllowOverride ​none''​. +-> on a mis ''​AllowOverride AuthConfig''​ à la place de ''​AllowOverride ​None'' ​non seulement dans la directive "<​Directory /​var/​www/>"​.\\ mais aussi dans "<​Directory />".
  
 **Pour autoriser l'​accès à tous les utilisateurs** qui ont un mot de passe apache :\\  **Pour autoriser l'​accès à tous les utilisateurs** qui ont un mot de passe apache :\\ 
--> ''​Require valid-user''​\\ ​ 
- 
-**On aurrait pu mettre** :\\  
 -> ''​Require user web''​\\ ​ -> ''​Require user web''​\\ ​
 -> ''​Require group groupe1''​\\ ​ -> ''​Require group groupe1''​\\ ​
  
-**On remarque que l'option ​''​Options ​-FollowSymLinks''​** : qui évite de suivre les liens symbolique depuis ​la racine ​/var/www +**On aurrait pu mettre** :\\  
-</note>+-> ''​Require valid-user''​\\  
 +Voir aussi la directive "​Satisfy"​ : [[http://httpd.apache.org/docs/​2.2/​howto/​auth.html]]
  
-===Création d'un compte système pour le Virtualhost à créer=== 
-  * Par exemple du nom de "​web"​ 
-<code root>​adduser --system web --ingroup www-data</​code>​ 
  
-  ​On lui crée un mot de passe système : +**Pour sécuriser l'​accès au système ​de fichier** ​:\\  
-<code root> passwd web</​code>​  +''​Require all denied''​ : interdire aux clients de parcourir l'​ensemble ​du système de fichiers. ​Ceci va interdire l'accès ​par défaut à tous les fichiers du système ​de fichiers; Ensuite on autorise section par section. Voir [[http://httpd.apache.org/docs/trunk/fr/misc/security_tips.html]] ​et [[http://httpd.apache.org/docs/2.2/mod/core.html#require| require directive]]\\ ​ 
-===Création ​du répertoire et des fichiers ​pour le site web "​monsite.com" === +Pour l'​utiliser avec une zone restreinte, il faut alors l'​inclure dans <Directory ​/> et créer la zone restreinte dans une directive séparée ​:\\  
-Cela ne constitue pas une sécurité, mais travailler directement dans /var/www/ n'est pas recommandé ; par exemple avec un partitionnement automatique,​ il y a plus de place dans /home/user que dans /var/www/ +''​<Directory ​/var/www/restricted/> ... </Directory>''​ 
- +</note>
-  * On crée des dossiers principaux : +
- +
-<code root>​cd ​/home/web/ && mkdir -p monsite.com/​public_html</​code>​ +
- +
-  * On corrige l'​appartenance ​et les droits ​: +
- +
-<code root>​chown -R root:​www-data ​/home/web/ && chmod -R 755 /​home/​web/</​code>​ +
- +
-  * On édite un index.html : +
-<code root>​vim ​/home/web/monsite.com/public_html/index.html</​code>​ +
-<code><​html>​ +
- <​body>​ +
- <​h1>​Bienvenue sur monsite.com<​/h1> +
-  <​p>​Site en cours de réalisation !</​p>​ +
- </​body>​ +
-</​html></​code>​ +
- +
-  * On supprime "​monsite.com"​ de /​var/​www/ ​+
-<code root>​cd ​/var/www/</code> +
-<code root>rm -r monsite.com</code+
- +
-  * On crée un lien symbolique "​monsite.com"​ dans /var/www/ : +
-<code root>ln -s /​home/​web/​monsite.com/​ /​var/​www/​monsite.com</code>+
  
-===Création d'un virtualhost pour le nouveau site "​monsite.com=== +===Pour "/​etc/​apache2/​sites-available/​monsite.com"=== 
- +<code root>vim /​etc/​apache2/​sites-available/​monsite.com</​code> ​
-<code root>vim /​etc/​apache2/​sites-available/​monsite.com</​code>​+
  
 <​code>​ <​code>​
Ligne 474: Ligne 531:
                 Options -FollowSymLinks                 Options -FollowSymLinks
                 AllowOverride AuthConfig                 AllowOverride AuthConfig
 +                Order deny,allow
 +                deny from all
 +                allow from 192.168.0.0/​24
         </​Directory>​         </​Directory>​
-        <​Directory /​var/​www/>​+        <​Directory /var/www/monsite.com>
                 Options -Indexes                 Options -Indexes
                 Options -FollowSymLinks                 Options -FollowSymLinks
Ligne 481: Ligne 541:
                 Options -ExecCGI                 Options -ExecCGI
                 Options MultiViews                 Options MultiViews
-                AllowOverride ​None +                AllowOverride ​AuthConfig 
-                ​Order deny,allow +                ​AuthType Basic 
-                ​deny from all +                ​AuthName "Ma zone est restreinte !" 
-                ​allow from 192.168.0.0/24+                ​AuthBasicProvider file 
 +                AuthUserFile ​/usr/​local/​apache/​passwd/​passwords 
 +                AuthGroupFile /​usr/​local/​apache/​passwd/​groups 
 +                Require user web
         </​Directory>​         </​Directory>​
         ScriptAlias /cgi-bin/ /​usr/​lib/​cgi-bin/​         ScriptAlias /cgi-bin/ /​usr/​lib/​cgi-bin/​
Ligne 503: Ligne 566:
 </​code>​ </​code>​
  
-  ​* On active le site "​monsite.com"​+===On supprime le fichier "​monsite.com"​ de /var/www/ === 
 +(Si on a suivi précédemment : [[atelier:​chantier:​apache2#​creation-du-site-web-dans-var-www|création de "​monsite.com"​ dans /​var/​www/​]]) 
 +<code root>cd /​var/​www/</​code>​ 
 +<code root>rm -r monsite.com</​code>​ 
 + 
 +===On crée un lien symbolique à la place===  
 +Le nom symbolique doit avoir pour nom celui du site ("​monsite.com"​) et il faut le placer dans /var/www/ et le faire pointer vers les répertoires et fichiers où le site est développé (/​home/​web/​monsite.com/​) : 
 + 
 +<code root>ln -s /​home/​web/​monsite.com/​ /​var/​www/​monsite.com</​code>​ 
 + 
 +====Vérifier l'​appartenance et les droits des fichiers utilisés par "​apache"​==== 
 + 
 +===Modifier le groupe de /var/www === 
 +Le groupe www-data ne doit pas être propriétaire de /var/www/ mais ce répertoire peut appartenir au groupe www-data. L'​idée est ainsi de diminuer au maximum les droits du groupe www-data, tout en laissant possible la consultation du site web. 
 + 
 +<code root>​chown -R root:​www-data /​var/​www/​*</​code>​ 
 + 
 +===On vérifie les droits POSIX de /var/www/ === 
 +<note important>​ 
 +A priori le fichier /​var/​www/​index.php,​ au même titre que n'​importe quelle page web accessible depuis un navigateur web, devrait avoir les droits suivants : 
 + 
 +<​code>​-rw-r----- 1 root www-data 4096 sept. 22 11:47 index.php</​code>​ 
 + 
 +On utilise les droits suivants : 
 +  * __Sur les fichiers réguliers__ : pour l'​utilisateur root, droits en lecture <​nowiki>​(r)</​nowiki>​ écriture (w) ; pour le groupe, droit de lecture seulement. 
 + 
 +  * __Sur les répertoires__ : pour l'​utilisateur root, droits en lecture <​nowiki>​(r)</​nowiki>​ écriture (w) exécution (x) ; pour le groupe et les autres droit en lecture et exécution. 
 +</​note>​ 
 + 
 +  * **Pour les répertoires /var/www et /home/web** : 
 +<code root>​chmod -R 755 /var/www/ /​home/​web/</​code>​ 
 + 
 +  * **Pour les fichiers d'​index :** 
 +<code root>​chmod -R 644 /​var/​www/​index.php /​home/​web/​monsite.com/​public_html/​index.php</​code>​ 
 + 
 +  * **Pour les propriétaires des fichiers d'​index** : 
 +<code root>​chown root:​www-data /​var/​www/​index.php\ 
 + /​home/​web/​monsite.com/​public_html/​index.php</​code>​ 
 + 
 +  * **Pour le lien symbolique /​var/​www/​monsite.com** : on ne peut pas modifier ces droits mais ce n'est pas grave. Ce qui compte c'est le fichier vers lequel pointe un lien symbolique. 
 + 
 +===On vérifie depuis son navigateur=== 
 + 
 +  * On ré-active le site "​default"​ 
 + 
 +<code root>​a2ensite default</​code>​ 
 + 
 +  ​* On ré-active le site "​monsite.com"​
  
 <code root>​a2ensite monsite.com</​code>​ <code root>​a2ensite monsite.com</​code>​
 +
 +  * On recharge apache2 :
  
 <code root>​service apache2 reload</​code>​ <code root>​service apache2 reload</​code>​
  
-  * On vérifie : +Enfin depuis ​son navigateur :\\ ''​http://​ip-serveur/​monsite.com/''​\\ ​
-Depuis ​son navigateur : ''​http://​ip-serveur/​monsite.com/''​\\ ​+
  
-8-) **Le login du compte apache (nom de l'​utilisateur du système Linux) est demandé ainsi que son mot de passe.**+{{http://​pix.toile-libre.org/​upload/​img/​1411461721.png?​250}} -> {{http://​pix.toile-libre.org/​upload/​img/​1411461425.png?250}}
  
-<note tip> 
-**__À ne pas confondre avec le module userdir__**. 
-Il permet de créer une page web servie par apache dans le répertoire utilisateur.\\ ​ 
-Par exemple comme ceci : 
  
-<code root>​a2enmod userdir </​code>​ +8-) **Le login du compte apache (nom de l'​utilisateur du système Linux) est demandé ainsi que son mot de passe et on peut accéder à ses pages d'​index !**
-Cela vient de créer un lien symbolique pour chacun ​de ces fichier dans "/​etc/​apache2/​mods-enabled"​+
  
-  * On recharge apache ​: ''​service apache2 restart''​+====La journalisation (Logging) ==== 
 +Il faut consulter régulièrement au moins deux Les logs d'erreur et les logs d'accès au serveur.
  
-**__Pour tester ​le module__** ​:+===Paramétrer la journalisation === 
 +Le niveau de consignation souhaité dépend de la directive ''​LogLevel'',​ dans le fichier de configuration par défaut ''/​etc/​apache2/​apache2.conf''​ qui est réglé par défaut sur :
  
-D'abord il faut se loger en user ''​exit''​ +  LogLevel warn 
-  * On crée un index.html dans le répertoire ​de l'utilisateur principal ​du système ​+ 
-<​code ​user>cd /home/$USER</​code>​ +**Ainsi paramétrer apache inscrit les événements anormaux dans l'un des fichiers du répertoire /​var/​log/​apache2/​error.log.** 
-<code user>​mkdir ~/public_html && echo+On peut mettre l'un des neuf niveau d'​alerte,​ pour être alerter de la moindre information jusqu'​au alerte grave :\\  
- "​<html><body>Notre test du module UserDir</body></html>"​\ + ​-''​trace''​ : traçage des informations de différents niveaux (produit une grande quantité d'​informations);​\\  
- > ​~/public_html/index.html</code+ - ''​debug''​ : informations de débogage qui peut être utile pour repérer où un problème ;\\  
-  * On recharge apache ​: ''​service ​apache2 ​restart''​ + - ''​info'': ​ message d'​information qui pourrait être bon à savoir;\\  
-  * On vérifie ​que la page est accessible ​+ - ''​notice''​ : signal un événement normal, mais à noter;\\  
-Dans le navigateur ​''​http://​ip-serveur/~utilisateur''​ + - ''​warn''​ : signal un événement anormal, mais pas très préoccupant;​\\  
-<code>​Notre test du module UserDir</​code>+ - ''​error''​ : signal que quelque chose a échoué;\\  
 + - ''​crit''​ : problèmes importants qui doivent être pris en compte;​\\ ​  
 + - ''​alert''​ : situation grave qui nécessite rapidement une action;​\\ ​  
 + - ''​emerg''​ : urgence de la situation, le système est dans un état inutilisable.\\  
 + 
 +-> Par défaut, on est informé à partir du niveau choisi jusqu'​au niveau le plus grave.\\  
 + 
 +===Comment le système de journalisation est-il configuré ?  === 
 + 
 +Dans le fichier général **/​etc/​apache2/​apache2.conf** une ligne indique le fichier où sont consigné les logs :  
 + 
 +  ErrorLog ${APACHE_LOG_DIR}/​error.log 
 + 
 +> Cette directive nomme le fichier où Apache tiendra ses messages d'​erreur. Comme vous pouvez le voir, il utilise une variable d'​environnement appelée "​APACHE_LOG_DIR"​ pour obtenir le préfixe du chemin de répertoire. 
 +> Pour savoir vers quel fichier renvoie cette variable d'​environnement ​il faut consulter le fichier **''​/​etc/​apache2/​envvars''​** 
 + 
 +  ​export APACHE_LOG_DIR=/​var/​log/​apache2$SUFFIX 
 + 
 +>  Cela signifie que lorsqu'​il est combiné avec la directive (variable "​SUFFIX"​) dans le fichier "​apache2.conf", ​**Apache enregistre les logs d'​erreur dans un fichier appelé ''/​var/​log/​apache2/​error.log''​**. 
 + 
 +<code root>ls /​var/​log/​apache2</​code>​ 
 +<​code>​access.log ​ error.log ​ other_vhosts_access.log</​code>​ 
 + 
 +===Les logs d'​accès au serveur === 
 +Très important pour la sécurisation du serveur. On peut savoir s'il y a eu des tentatives de piratage.\\  
 + 
 +Ces logs sont consignés par défaut ​dans le fichier **''/​var/​log/​apache2/​access.log''​**.\\  
 + 
 +Le paramétrage des logs d'​accès n'est pas dans le fichier de configuration générale /​etc/​apache2/​apache2.conf,​ mais dans le fichier ​de l'hôte par défaut.\\  
 + 
 +La déclaration ​du journal d'​accès se trouve donc dans **''/​etc/​apache2/​sites-available/​default''​**. 
 + 
 +Nous pouvons y trouver trois valeurs distinctes concernant l'​exploitation des logs d'​accès.\\  
 + 
 +<​code>​ErrorLog ${APACHE_LOG_DIR}/error.log 
 + 
 +LogLevel warn 
 + 
 +CustomLog ​${APACHE_LOG_DIR}/​access.log combined</​code>​ 
 + 
 +La définition du journal des erreurs (ErrorLog et Loglevel) correspond à celle dans le fichier de configuration par général. Il n'est pas nécessaire d'​avoir cette ligne dans les deux fichiers, mais ce doublon permet à modifier ici l'​emplacement des logs pour celui qu'on souhaite.  
 + 
 +===Paramétrer la directive "​CustomLog"​ pour améliorer la sécurité === 
 + 
 +  CustomLog ${APACHE_LOG_DIR}/access.log combined 
 + 
 +Elle est constituée de deux partie : 
 +  * ${APACHE_LOG_DIR}/​access.log : localisation des logs d'​accès 
 +  * ''​combined''​ : le format des logs par défaut\\ il s'agit d'une étiquette qui renvoie à la directive ''​LogFormat''​ ( personnalisable) dans le fichier de configuration par général **''/​etc/​apache2/​apache2.conf''​**. ​ 
 + 
 +===La directive ​"LogFormat"​ : /​etc/​apache2/​apache2.conf === 
 +Par défaut : 
 + 
 +  LogFormat "%h %l %u %t \"​%r\"​ %>s %O \"​{Referer}i\"​ \"​%{User-Agent}i\""​ combined 
 + 
 +Pour comprendre chacune de ces variables [[http://​httpd.apache.org/​docs/​2.2/​mod/​mod_log_config.html#​formats|voir la documentation d'​apache]]. 
 + 
 +  * Voici par exemple ma configuration : 
 +<code root>vim /​etc/​apache2/​apache2.conf</code> 
 +<code>LogFormat ​"%h %l %u %t \"​%r\"​ %s %b" common</​code>​ 
 +''​%h''​ : sera remplacée par le nom de l'​hôte distant 
 +> %l     : sera remplacée par logname a distance. Il faut que [[http://httpd.apache.org/​docs/​2.2/​en/​mod/​mod_ident.html|le module "​mod_ident"​]] soit présent et que [[http://​httpd.apache.org/​docs/​2.2/​en/​mod/​mod_ident.html#​identitycheck|la directive "​IdentityCheck"​]] soit activé ("​On"​). 
 +u%     : sera remplacée par utilisateur distant. 
 +> %t     sera remplacée par moment où la demande a été reçue (format standard anglais) 
 +> \"​%r\"​ : sera remplacée par la ligne de demande. 
 +> %s     : sera remplacée par le statut de la demande. 
 +> %b     : sera remplacée par la taille de la réponse en octets, à l'exception des en-têtes HTTP. Dans le format CLF, I.S. un «-» plutôt que d'un 0 si aucune octets sont envoyés. 
 + 
 +Pour aller plus loin, par exemple pour la rotation des journaux voir [[http://​httpd.apache.org/​docs/​trunk/​fr/​logs.html]] 
 + 
 +=====OpenSSL : créer un certificat avec apache2 ​===== 
 +===Le protocole ssl === 
 +Le protocole ssl (Secure Socket Layer) permet la sécurisation des communications entre un serveur et un client, au moyen : 
 +  -d'une authentification mutuelle ; 
 +  -d'une vérification de l'intégrité des communication par signature digitale 
 +  -par un chiffrement par clés asymétriques afin que la communication soit privée 
 + 
 +  * Le port par défaut est 443 :\\   
 + 
 +  * Son utilisation se fait pour apache2 via OpenSSL, avec le module mod_ssl: 
 +Il est installé par défaut mais il n'est pas chargé. 
 + 
 +===À quoi sert ssl ? === 
 + 
 +Il permet la signature et la mise en place de certificat au moyen de chiffrement par clés asymétriques. 
 + 
 +  * Chiffrement par clé asymétrique : 
 +On crée deux clés, une publique qu'on donne à l'​utilisateur Tout_le_monde. Cette clé chiffre les informations ​que l'​utilisateur Tout_le_monde veut nous envoyer. La deuxième clé, la clé privée, qu'on garde précieusement secrète, permet de déchiffrer les informations que l'​utilisateur Tout_le_monde a chiffré avec la clé publique qu'on lui a donné.  
 + 
 +  * La signature ​
 +À l'​inverse du chiffrement,​ avec notre clé privée ont va cette fois, non pas déchiffrer ce qu'on envoie, mais chiffrer un document avec cette clé privée. La clé qui permet de déchiffrer ce qu'on va chiffrer avec notre clé privée pourra être déchiffrer par tous ceux qui ont notre clé publique. Et c'​est ​le but de la signature, qui n'est faite pour rendre secret quoique ce soit, mais pour certifier qu'on est l'​auteur du document qu'on a chiffré avec notre clé privée. 
 + 
 +Pour ce faire, on prend nos données à certifier, un effectue un hashage sur nos données, puis on fait un chiffrement du hashage (cela s'​appelle la signature). 
 + 
 +Ainsi pour être sûr que notre document est authentique,​ l'​utilisateur Tout_le_monde va appliquer sur notre document le même algorithme de hashage qu'on a utilisé et compare ce résultat avec celui issu du déchiffrement qu'il obtient sur ce même document au moyen de la clé publique qu'on lui a donné.\\ Si les deux sont identiques, alors l'​auteur du document est authentifié ; il est aussi garanti d'​être intacte du point de vue de son contenu. 
 + 
 +===Certificat === 
 +Il faut encore que la clé publique que reçoit l'​utilisateur Tout_le_monde,​ soit garantie comme étant bien la mienne. Pour éviter que quelqu'​un se fasse passer pour moi auprès de l'​utilisateur Tout_le_monde,​ j'ai recours à un certificat. 
 + 
 +Quand un certificat est mis en place, l'​utilisateur Tout_le_monde peut alors se renseigner auprès de l'​organisme de certification((par exemple gandi.net, tustico (peu cher mais reconnu par les navigateur) ou startSSL qui est gratuit (peu fiable bien bien pour essayer).)) que je suis bien l'auteur la clé publique qu'il a reçue. Cela garantit à l'​utilisateur Tout_le_monde qui est bien sur mon serveur quand il s'y connecte, y télécharge des fichiers, etc... 
 + 
 +Pour faire certifier une clé publique, il faut qu'une organisation appelé "​Autorité de certification"​ (CA) me vende ((certaines en fournissent gratitement voir [[http://www.planet-libre.org/index.php?​post_id=16507&​go=external]])) une signature pour mon certificat.  
 + 
 +**Concrètement mon serveur apache2 crée un certificat en même temps que la paire de clés, et je fais signer ce certificat par une autorité de certification.** 
 + 
 +<note> 
 +**Les certificats auto-signés**\\ 
 + 
 +Ce sont des certificats à usage interne. Signés par un serveur local, ce type de certificat permet de garantir la confidentialité des échanges au sein d'une organisation locale, par exemple pour le besoin d'un intranet. Il est ainsi possible d'​effectuer une authentification des utilisateurs grâce à des certificats auto-signés.
 </​note>​ </​note>​
  
-Il reste à ajouter un module par exemple pour le php.  +====Créer un certificat auto-signé pour le site "​default-ssl"​==== 
-===== Installer ​le module php===== +Cela ne garantira pas d'une éventuelle usurpation d'identité.\\  
-===Installer libapache2-mod-php5 === +Le certificat auto-signé c'est bien pour l'​apprentissage en local ! 
-Ce paquet casse le MPM worker(([[http://​httpd.apache.org/​docs/​2.2/​mod/​worker.html]])) et engendre l'installation du MPM prefork(([[http://​httpd.apache.org/​docs/​2.2/​mod/​prefork.html]])).\\ +
  
-<code root>​apt-get install libapache2-mod-php5</​code>​+===ssl dans la configuration d'​Apache2 ===
  
 +  * Vérifier la présence mod_ssl et comprendre la configuration sous debian :
 +Le fichier de configuration du module se trouve dans :
  
-Une fois l'​installation effectuée on peut vérifier que php5 est apparu dans /​etc/​apache2/​mod-available. ​+<code root>​ls ​/​etc/​apache2/​mods-available ​| grep ssl.*</​code>​
  
-<code root>ls -l /​etc/​apache2/​mods-available/​php5*</​code>​ +Il doit y avoir ''​ssl.conf''​ et ''​ssl.load''​. Sinon il faut **installer** (ne pas l'​activer tout de suite).\\ ​
-<​code>​-rw-r--r-- 1 root root 898 août  21 10:49 /​etc/​apache2/​mods-available/​php5.conf +
--rw-r--r-- 1 root root  59 août  21 10:49 /​etc/​apache2/​mods-available/​php5.load</​code>​+
  
-Dans /​etc/​apache2/​mod-enabled,​ ce sont des liens symboliques qui activent ce module: +====Création ​des clé et certificat====
-<code root>ls -l /​etc/​apache2/​mods-enabled/​php5*</​code>​ +
-<​code>​lrwxrwxrwx 1 root root 27 sept. 20 11:40 /​etc/​apache2/​mods-enabled/​php5.conf -> ../​mods-available/​php5.conf +
-lrwxrwxrwx 1 root root 27 sept. 20 11:40 /​etc/​apache2/​mods-enabled/​php5.load -> ../​mods-available/​php5.load</​code>​+
  
--> Puisque les liens sont là, le module est activé.+Pour cela on va se servir de l'​utilitaire openssl.
  
-===Activer/désactiver un module ===+  * Création du répertoire où l'on rangera sa clé privée : 
 +<code root>​cd ​/etc/​apache2/​ && mkdir ssl</​code>​ 
 +  * Création de la clé privée et du certificat : 
 +<​note>​ 
 +__**La commande qui suit cette note, raccourcit ce qui suit:​**__\\ ​
  
-  ​* ''​a2enmod''​ : (apache2 ​enable module) : active un module apache2 +1) **Création de la clé privée** : par exemple ​''​openssl genrsa 1024 > /etc/apache2/​ssl/​apache.key''​
-  * ''​a2dismod''​ : (apache2 disable module) : désactive un module apache2+
  
-Si on active ou désactive ​un module ne pas oublier après l'​opération de réactiver apache ​: ''​service ​apache2 ​restart''​+2) **À partir de cette clé privée, ​on crée un certificat CSR qui contient une clé publique** à faire signer ​: ''​openssl req -new -key /etc/apache2/​ssl/​apache.key > /​etc/​apache2/​ssl/​apache.csr''​
  
-===Créer la page de test ===+=> C'est ce certificat qu'il faut faire signer par une autorité ​de certification (CA) 
 +Ou qu'il faudra auto-signer.
  
-<code>mv /​var/​www/​index.html /var/www/index.php</code> +3) **On décide d'​auto-signer ce certificat donc on crée une clé privée qui serait celle du CA officielle** : ''​openssl genrsa -des3 1024 ca.key''​\\  
-<code root>​vim ​/var/www/index.php</​code>​ +-on peut ajouter -des3 qui introduit l'​usage d'une "​passphrase"​\\  
-<​code>​ +-c'est cette clé privée qui signera tous les certificats que l'on émettra ; cette "​passphrase"​ sera donc demandée à chaque utilisation de la clé. 
-<​html>​ + 
- <​body>​ +4) **Puis à partir de la clé privée, on crée un certificat x509 pour une durée de validité d'un an auto-signé**\\ ''​openssl req -new -x509 -days 365 -key ca.key > ca.crt''​\\  
-  ​<h1>It works!</​h1> +-On répondrait à nouveau aux questions, mais on changerait la réponse relative à "​Common Name"​. 
-  <p>This is the default web page for this server.</p+ 
-  <?php +5) **Enfin il faudrait faire signer notre certificat de demande de signature par le certificat du CA (qui a été fait par nous-même) :**\\  
-echo "La date du jour est " . date("​d/m/Y"​) ​"!\n"; +''​openssl x509 -req -in /etc/apache2/ssl/apache.csr -out /etc/apache2/ssl/apache.crt -CA ca.crt -CAkey ca.key\ 
-  ?>​ +-CAcreateserial -CAserial ca.srl''​\\ 
- </body> + 
-</html>+Pour créer une connexion privée et sécurisée entre le serveur et les clients qui s'y connecteraient,​ il faudrait procurer ​ de façon sécurisé le fichier ca.crt (qu'on aurait fait nous-même en suivant toutes ces étapes) aux clients (ssh par exemple), afin qu'il soit installer dans leur navigateur.\\ Par exemple avec Iceweasel :\\  
 + 
 +-Edition -préférence -Avancé -> Afficher les certificats -> (Bouton)importer 
 +</note
 + 
 +<code root>​openssl req -x509 -nodes -days 365\ 
 + -newkey rsa:1024 -keyout ​/etc/apache2/​ssl/​apache.key
 + -out /etc/apache2/​ssl/​apache.crt
 </​code>​ </​code>​
  
-  * Recharger apache :  
-  
-<code root>​service apache2 restart</​code>​ 
  
-  * Tester en tapant dans le navigateur ​+> -x509 -nodes ​type de certificat 
-''​http://ip-du-serveur/''​+> -days 365 durée de vie du certificat (en jours) 
 +> - newkey rsa:1024 : clé rsa de 1024 bits 
 +> -out /chemin/fichier/​certificat : crée le fichier ​du certificat 
 +-keyout ​/chemin/​fichier/​clé : chemin du fichier de sa clé privée
  
-<code>It works!+<note tip> 
 +__**Il faut répondre à une suite de question**__ :  
 +La plus importante est "​Common Name": il faut répondre par le nom de domaine ou l'ip public du serveur concerné. Dans le cas de cette exemple, l'ip locale (fixe) du serveur fera l'​affaire.\\ ​
  
-This is the default web page for this server. +**Par exemple :**\\  
-La date du jour est 20/​09/​2014! ​</code>+Country Name (2 letter code) [AU]:FR\\  
 +State or Province Name (full name) [Some-State]:​France\\  
 +Locality Name (eg, city) []:​SaVille\\  
 +Organization Name (eg, company) [Internet Widgits Pty Ltd]:\\  
 +Organizational Unit Name (eg, section) []:\\  
 +Common Name (e.g. server ​FQDN or YOUR name) []:192.168.0.13 \\    
 +Email Address []:​example@gmx.fr\\ ​ 
 +</note>
  
-Puisque tout fonctionne, pour utiliser php dans les autres sites, il n'y a qu'à modifier ​le nom de leur page d'​index.html en index.php ​et entrer du code php bien sûr.+  * Restreindre ​les droits sur le fichier ​de clé privée, aux droits de lecture seulement, ​et pour root: 
 +<code root>​chmod 400 /​etc/​apache2/​ssl/​apache.key</​code>​
  
-  * Par exemple pour "​monsite.com"​ :+====Créer un site accessible en ssl ====
  
-<code root>mv /​home/​web/​monsite.com/​public_html/​index.html /​home/​web/​monsite.com/​public_html/​index.php</​code>​+Cette fois on va mettre en place une méthode plus directe que précédemmentPar exemple un site s'​appelant pegaseous.com
  
-<code root>vim /home/web/monsite.com/​public_html/​index.php</​code>​+On va se servir des fichiers par défaut.\\  
 +On commence par désactiver les deux fichiers /​etc/​apache2/​sites-available/​default et /​etc/​apache2/​sites-available/​default-ssl avec la commande ''​a2dissite''​. 
 + 
 +On crée ensuite les répertoires et fichiers où développer son site.\\  
 + 
 +  * Par exemple dans le répertoire d'un autre utilisateur. 
 +<code root>​mkdir -p /​home/​hypathie/​www/​pegaseous.com/​public_html</​code>​ 
 + 
 +  * On crée un index dans /​home/​hypathie/​www/​ 
 + 
 +<code root>mv /​var/​www/​index.html /​home/​hypathie/​www/</​code>​ 
 + 
 +On peut le modifier : 
 +<code root>vim /home/hypathie/​www/​index.html</​code>​ 
 +<​code><​html><​body><​h1>​Ça marche!</​h1>​ 
 +<​p>​Voici ma page d'​index.</​p>​ 
 +<​p>​YEP ! Déployée dans mon répertoire personnel !</​p>​ 
 +<p>Le serveur ​web apache2 fonctionne.</​p>​ 
 +</​body></​html></​code>​ 
 + 
 +  *On créer un contenu en php dans "​pegaseous"​ : 
 +<code root>vim /​home/​hypathie/​www/pegaseous.com/​public_html/​index.php</​code>​
 <​code><​html>​ <​code><​html>​
  <​body>​  <​body>​
- <​h1>​Bienvenue sur monsite.com</​h1>​+ <​h1>​Bienvenue sur pegaseous.com</​h1>​
   <​p>​Site en cours de réalisation !</p>   <​p>​Site en cours de réalisation !</p>
-<?php +  ​<?php 
-echo "La date du jour est " . date("​d/​m/​Y"​) . "​!\n";​+  echo "La date du jour est " . date("​d/​m/​Y"​) . "​!\n";​
   ?>   ?>
  </​body>​  </​body>​
-</​html></​code>​+</​html>​ 
 +</​code>​
  
-  * Recharger apache :  +===On pense aux droits unix sur ses répertoires et fichiers=== 
-  +<code root>chmod -R 755 /​home/​hypathie/​www/​</​code>​
-<code root>service apache2 reload</​code>​+
  
-  * Tester en tapant dans le navigateur : +<code root>​chmod 644 /​home/​hypathie/​www/​index.html\ 
-''​http:​//ip-du-serveur/monsite.com''​+ /home/hypathie/www/​pegaseous.com/​public_html/​index.php</​code>​
  
-et cliquer sur ''​public_html/'' ​:+<code root>​chown root:www-data /​home/​hypathie/​www/</​code>​
  
-<​code>​Bienvenue sur monsite.com+===Le virtualhost "​defaut"​ === 
 +On doit d'​abord s'​occuper du fichier /​etc/​apache2/​sites-available/​default
  
-Site en cours de réalisation ! +<code root>​vim ​/etc/apache2/​sites-available/​default</code
-La date du jour est 20/09/2014! </​code>​+<​code>​ 
 +<​VirtualHost 192.168.0.13:​80>​ 
 +        ServerAdmin webmaster@localhost 
 +        ServerName pegaseous.com 
 +        DocumentRoot /​home/​hypathie/​www 
 +        <​Directory /> 
 +                Options FollowSymLinks 
 +                AllowOverride None 
 +        </​Directory>​ 
 +        <​Directory /​home/​hypathie/​www/>​ 
 +                Options Indexes FollowSymLinks MultiViews 
 +                AllowOverride None 
 +                Order allow,​deny 
 +                allow from all 
 +        </​Directory>
  
-Tous les outils sont en place pour apprendre les langages html et php ! 8-)+        ScriptAlias /cgi-bin/ /​usr/​lib/​cgi-bin/​ 
 +        <​Directory "/​usr/​lib/​cgi-bin">​ 
 +                AllowOverride None 
 +                Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch 
 +                Order allow,​deny 
 +                Allow from all 
 +        </​Directory>​ 
 + 
 +        ErrorLog ${APACHE_LOG_DIR}/​error.log 
 +        # Possible values include: debug, info, notice, warn, error, crit, 
 +        # alert, emerg. 
 +        LogLevel warn 
 + 
 +        CustomLog ${APACHE_LOG_DIR}/​access.log combined 
 +</​VirtualHost>​ 
 +</​code>​ 
 +   
 +  * On charge le site "​default"​ : 
 +<code root>​a2ensite default</​code>​ 
 + 
 +  * On édite /​etc/​apache2/​ports.conf 
 +Pour s'​éviter d'​avoir au redémarrage d'​apache2 le message suivant : 
 +<​code>​service apache2 reload 
 +[....] Reloading web server config: apache2[Thu Sep 25 09:33:25 2014] 
 + ​[warn] NameVirtualHost 192.168.0.13:​80 has no VirtualHosts</​code>​ 
 + 
 +<code root>vim /​etc/​apache2/​ports.conf</​code>​ 
 +<​code>​NameVirtualHost 192.168.0.13:​80 
 +Listen 80</​code>​ 
 + 
 +===Le fichier "​default-ssl"​=== 
 + 
 +  * On active le module ssl: 
 +<code root>​a2enmod ssl</​code>​ 
 + 
 +  * On édite vim /​etc/​apache2/​sites-available/​default-ssl ​pour ajouter clé et certificat ainsi que le site déclarer dans le fichier default"​ : 
 + 
 +<code root>vim /​etc/​apache2/​sites-available/​default-ssl</​code>​ 
 + 
 +<​code><​IfModule mod_ssl.c>​ 
 +<​VirtualHost *:443> 
 +        ServerAdmin webmaster@localhost 
 +         
 +        ServerName monsite.com 
 +        DocumentRoot /​home/​hypathie/​www 
 +        <​Directory /> 
 +                Options FollowSymLinks 
 +                AllowOverride None 
 +        </​Directory>​ 
 +        <​Directory /​home/​hypathie/​www/>​ 
 +                Options Indexes FollowSymLinks MultiViews 
 +                AllowOverride None 
 +                Order allow,​deny 
 +                allow from all 
 +        </​Directory>​ 
 +#plus bas 
 +        SSLCertificateFile ​   /​etc/​apache2/​ssl/​apache.crt 
 +        SSLCertificateKeyFile /​etc/​apache2/​ssl/​apache.key 
 +#<​...>​ 
 + 
 +</​VirtualHost>​ 
 +</​IfModule>​ 
 +</​code>​ 
 + 
 +Il n'y a rien d'​autre à modifier. 
 + 
 +  * On charge le fichier "​default-ssl"​ 
 +<code root>​a2ensite default-ssl</​code>​ 
 + 
 +On peut maintenant accéder au site "​pegaseous.com"​ en tapant dans le navigateur : ''​https://​192.168.0.13/​pegaseous.com/''​.
  
 +Il est normal que le navigateur demande une acception pour accéder au site.
  
doc/reseau/apache2/tp01.txt · Dernière modification: 01/11/2019 08:43 par smolski

Pied de page des forums

Propulsé par FluxBB