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
projets:ecole:apache [Le 13/10/2007, 17:42]
gloubiboulga
projets:ecole:apache [Le 11/09/2022, 13:17] (Version actuelle)
moths-art Suppression des espaces en fin de ligne (détecté et corrigé via le bot wiki-corrector (https://forum.ubuntu-fr.org/viewtopic.php?id=2067892)
Ligne 9: Ligne 9:
  
 Attention à ne pas faire d'​amalgame entre Web et Internet. Le salon IRC sur lequel s'est déroulée cette séance utilise Internet, pas le Web. Attention à ne pas faire d'​amalgame entre Web et Internet. Le salon IRC sur lequel s'est déroulée cette séance utilise Internet, pas le Web.
 +
  
 ==== HTTP et Navigation ==== ==== HTTP et Navigation ====
Ligne 18: Ligne 19:
 Faisons la même chose à la main. Ouvrez une console et saisissez (après avoir installé le paquet ''​telnet''​ si nécessaire) : Faisons la même chose à la main. Ouvrez une console et saisissez (après avoir installé le paquet ''​telnet''​ si nécessaire) :
   telnet test.skateinmars.net 80   telnet test.skateinmars.net 80
-Vous verrez s'​afficher : +Vous verrez s'​afficher :
   Trying 82.228.105.196...   Trying 82.228.105.196...
   Connected to skateinmars.net.   Connected to skateinmars.net.
Ligne 27: Ligne 28:
 Vous voyez alors s'​afficher du texte HTML. C'est la même page que le navigateur vous a affiché précédemment. La connexion est coupée après l'​affichage du texte. Vous voyez alors s'​afficher du texte HTML. C'est la même page que le navigateur vous a affiché précédemment. La connexion est coupée après l'​affichage du texte.
  
-Ce texte que vous pouvez voir, c'est le même que vous avez vu dans votre navigateur tout à l'​heure : c'est une page Web. Verifiez ​dans votre navigateur en regardant la source de la page : bouton droit de la souris, "Code source de la page" sous Firefox.+Ce texte que vous pouvez voir, c'est le même que vous avez vu dans votre navigateur tout à l'​heure : c'est une page Web. Vérifiez ​dans votre navigateur en regardant la source de la page : bouton droit de la souris, "Code source de la page" sous Firefox.
  
-Vous venez donc d'​utiliser le protocole HTTP. HTTP est un protocole de communication. C'est à dire une spécification qui définit comment 2 machines doivent dialoguer entre elles. HTTP est le protocole choisi pour le Web. Il y a en d'​autres pour d'​autres usages, FTP par exemple. Vous pouvez d'​ailleurs reconnaître le protocole dans l'​adresse d'une page web : **http://**bla+Vous venez donc d'​utiliser le protocole HTTP. HTTP est un protocole de communication. C'est à dire une spécification qui définit comment 2 machines doivent dialoguer entre elles. HTTP est le protocole choisi pour le Web. Il y a en d'​autres pour d'​autres usages, FTP par exemple. Vous pouvez d'​ailleurs reconnaître le protocole dans l'​adresse d'une page web : **http:**
  
 === Histoire === === Histoire ===
Ligne 43: Ligne 44:
 Il y a plusieurs méthodes disponibles,​ la plus utilisée étant ''​GET''​. C'est celle que les navigateurs utilisent pas défaut quand vous cliquez sur un lien ou tapez l'​adresse d'un site à consulter. Une autre méthode, très utilisée, et la méthode ''​POST''​. Elle est souvent utilisée avec des formulaire, pour envoyer un message sur un forum par exemple. Ceux qui ont deja touché à PHP ou au développement web connaissent ces deux méthodes, il y en a d'​autres mais elles sont beaucoup moins courantes : ''​HEAD'',​ ''​PUT'',​ ''​DELETE'',​ etc. Il y a plusieurs méthodes disponibles,​ la plus utilisée étant ''​GET''​. C'est celle que les navigateurs utilisent pas défaut quand vous cliquez sur un lien ou tapez l'​adresse d'un site à consulter. Une autre méthode, très utilisée, et la méthode ''​POST''​. Elle est souvent utilisée avec des formulaire, pour envoyer un message sur un forum par exemple. Ceux qui ont deja touché à PHP ou au développement web connaissent ces deux méthodes, il y en a d'​autres mais elles sont beaucoup moins courantes : ''​HEAD'',​ ''​PUT'',​ ''​DELETE'',​ etc.
  
-Reprenons telnet : +Reprenons telnet :
   telnet test.skateinmars.net 80   telnet test.skateinmars.net 80
   GET /​test/​test.txt HTTP/1.0   GET /​test/​test.txt HTTP/1.0
Ligne 51: Ligne 52:
 Vous obtenez la ressource test/​test.txt,​ qui est un simple fichier texte, après avoir utilisé la méthode GET. Vous avez également utilisé HTTP en version 1.0. Vous obtenez la ressource test/​test.txt,​ qui est un simple fichier texte, après avoir utilisé la méthode GET. Vous avez également utilisé HTTP en version 1.0.
  
-Recommencez maintenant ces étapes mais en terminanat ​par : +Recommencez maintenant ces étapes mais en terminant ​par :
   Connection: keep-alive   Connection: keep-alive
  
Ligne 97: Ligne 98:
 Vérifions son bon fonctionnement,​ en ouvrant votre navigateur et vous rendant sur http://​localhost/​. Vous verrez une page vous informant que le serveur marche correctement :) Vérifions son bon fonctionnement,​ en ouvrant votre navigateur et vous rendant sur http://​localhost/​. Vous verrez une page vous informant que le serveur marche correctement :)
  
 +le message suivant apparaît : It works!
  
 ==== Configuration ==== ==== Configuration ====
Ligne 120: Ligne 122:
   * ''​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 utilisés.
 +
 +=== apache2.conf ===
 +
 +Ce fichier est par défaut allègrement commenté. Un commentaire commence par # (le texte qui suit est ignoré par apache). Voyons un peu les premières options :
 +  * ''​ServerRoot "/​etc/​apache2"''​ : définit le dossier de base qui contient la configuration d'​apache. A ne pas toucher donc ;
 +  * ''​Timeout''​ : nombre de secondes maximum au bout duquel une connection au serveur est interrompue ;
 +  * ''​KeepAlive''​ : on a vu son utilité tout à l'​heure,​ vous pouvez ici le désactiver. Il y a également d'​autres options pour KeepAlive pour l'​affiner ;
 +  * ''​User''​ et ''​Group''​ déterminent l'​utilisateur avec lequel seront exécutés les processus d'​apache ;
 +
 +=== sites-available ===
 +
 +Ce répertoire contient les différents vhosts que vous utiliserez. Les vhosts (Virtual Hosts) vous permettent de définir plusieurs sites différents sur une même machine, le plus souvent des sous-domaines (www.chose.fr,​ machin.chose.fr,​ etc.). Éditez le seul vhost existant pour le moment : ''​default''​ (en root).
 +
 +''​NameVirtualHost''​ définit les IPs à utiliser par apache, ici * signifie qu'on utilise n'​importe quel IP pour acceder au serveur : 127.0.0.1 (ip locale), 192.168.x.x (ip du 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 elle ne doit pas être reprise dans les autres vhosts si elle est déjà définie à *
 +
 +Ensuite vient le vhost proprement dit : il est compris dans un bloc <​VirtualHost>,​ un peu à la manière d'une balise XML. Ces blocs définissent la "​portée"​ de la validité des directives qui y sont définies. Le * derrière VirtualHost définit ici également que le vhost est valable pour toutes les IPs sur lesquelles apache écoute.
 +
 +La directive ''​ServerAdmin''​ vous permet de spécifier un email à utiliser en cas de problème, sur une page d'​erreur 404 par exemple.
 +
 +Il manque une directive importante que l'on va ajouter :
 +  ServerName machin
 +Remplacez machin par le nom que vous souhaitez utiliser pour le vhost. Si vous possedez un compte dyndns ou d'un service du genre vous pouvez l'​utiliser,​ sinon mettez ce qui vous passe par la tête, comme truc.com.
 +
 +''​DocumentRoot''​ définit le dossier dans lequel seront stockés les fichiers du site.
 +
 +Les sous-blocs suivants définissent des options spécifiques au dossier du site. ''​Options FollowSymLinks''​ par exemple demande à apache de suivre les liens symboliques si necessaire.
 +
 +''​AllowOverride''​ permet de définir si l'on peut changer certaines options en utilisant des fichiers .htaccess dans le répertoire du site.
 +
 +''​Indexes''​ permet d'​autoriser le listage de fichiers d'un répertoire qui ne contient pas d'​index.
 +
 +''​Alias''​ permet de définir un répertoire précis pour certaines requêtes. Ici ''/​doc''​ correspondra au dossier ''/​usr/​share/​doc/'',​ mais selon la directive ''​Allow'',​ seul les IPs locales y ont accès.
 +
 +Enregistrons les changements et fermons le fichier.
 +
 +Il faut maintenant que le vhost soit actif. Pour activer un vhost il faut créer un lien symbolique du fichier vhost vers le dossier sites-enabled/,​ mais une commande est là pour nous aider dans cette tâche.
 +
 +(Tout d'​abord faites un ''​sudo rm sites-enabled/​000-default'',​ c'est une configuration d'​origine d'​apache plus génante qu'​autre chose.)
 +
 +Utilisez donc
 +  sudo a2ensite nomduvhost
 +Notez que ''​a2dissite''​ va logiquement réaliser le contraire. Cette méthode du lien symbolique permet de réaliser rapidement des changements dans la configuration d'​apache.
 +
 +Comme vous l'​indique le résultat de la commande, vous devez recharger la configuration d'​apache avec un
 +  sudo /​etc/​init.d/​apache2 reload
 +Vous devrez recharger apache à chaque changement de configuration. Notez aussi l'​option force-reload du script. Après cela votre vhost est actif. Reste encore une modif à faire : ouvrez le fichier /etc/hosts, et entrez une nouvelle ligne :
 +  127.0.0.1 nomduvhost
 +Avec nomduvhost le ServerName que vous avez choisi. Cela permettra à votre système de faire la correspondance entre le nom de l'host et votre machine locale.
 +
 +Testez maintenant votre vhost ! Ouvrez votre navigateur (ou telnet) et entrez votre ServerName dans la barre d'​adresse. Ca devrait marcher :)
 +
 +Notez que sous debian/​ubuntu 2 les pages a utiliser comme index sous spéficiées dans le module dir (''​mods-available/​dir.conf''​).
 +
 +===== Bonus : mod_php =====
 +
 +On a donc maintenant un apache fonctionnel,​ mais on va terminer avec un petit bonus et installer mod_php pour rapidement aborder les modules. Les modules sont des extensions d'​apache qui ajoutent des fonctionnalités diverses, du support d'un langage aux réécritures d'​urls. On va ainsi installer mod_php5 qui ajoutera comme son nom l'​indique le support de php5 directement dans apache. Installez le paquet ''​libapache2-mod-php5'',​ attendez le redemarrage d'​apache,​ et voila !
 +
 +On va vérifier que cela marche. Regardez le dossier ''​mods-enabled'',​ vous pourrez y voir les fichiers ''​php5.conf''​ et ''​php5.load''​. Là aussi, il s'agit de liens symboliques vers ''​mods-available''​ comme pour les vhosts, et vous devinerez l'​utilité des commandes ''​a2enmod''​ et ''​a2dismod''​.
 +
 +Créez ensuite le fichier /​var/​www/​test.php,​ et écrivez-y le contenu suivant :
 +  <?php phpinfo(); ?>
 +Ouvrez ensuite cette page dans votre navigateur (http://​servername/​test.php),​ vous y verrez la page interprétée (la fonction phpinfo affiche une page html d'​informations sur votre installation de php).
  • projets/ecole/apache.1192290153.txt.gz
  • Dernière modification: Le 14/10/2007, 21:53
  • (modification externe)