====== Installation ====== Sur **Debian**, on utilise l'outil [[debian:debian_gestion_paquets|apt]] pour installer le serveur Web **Apache**# apt-get install apache2 ====== Configuration ====== ===== Le fichier httpd.conf ===== C'est dans ce fichier que l'on rajoute les paramètres personnels de notre configuration. # vi /etc/apache2/httpd.conf On commence par lui indiquer la directive ServerName (le nom FQDN du serveur est soit résolu par les DNS, soit inscrit dans le fichier ///etc/hosts//) ServerName monserveur.monsite.fr puis, parce que c'est une philosophie qui a fait ses preuves, on commence par tout interdire ^^ AllowOverride None Order deny,allow Deny from all ensuite, on interdit la lecture des fichiers .htaccess Order allow,deny Deny from all enfin, on indique à Apache que l'on va utiliser le mécanisme des VirtualHosts par IP NameVirtualHost xxx.xxx.xxx.xxx:80 les xxx correspondent à l'IP ouverte au monde extérieur, celle reliée à Internet la plupart du temps ;) On enregistre et on sort du fichier par un //:wq// sous vi. ===== Les VirtualHosts ===== L'installation via le package fournit un virtualhost nommé //default//. N'en ayant pas besoin, je le supprime, mais chacun fait comme il le sent. # rm /etc/apache2/sites-available/default && rm /etc/apache2/sites-enables/000-default && rm -rf /var/www/apache2-default On va maintenant créer notre premier Vhost en éditant un fichier sous ///etc/apache2/sites-available// # vi /etc/apache2/sites-available/monsite Exemple type d'un vhost sur le port 80 appelé par www.monsite.fr ServerName www.monsite.fr ServerAlias monsite.fr ServerAdmin webmaster@monsite.fr DocumentRoot /var/www/monsite Options -Indexes #Sécurité RewriteEngine On RewriteCond %{REQUEST_METHOD} ^TRACE RewriteRule .* - [F] DirectoryIndex index.html CustomLog /var/log/apache2/monsite_access.log combined AllowOverride All #Permet la lecture d'un .htaccess AddDefaultCharset ISO-8859-1 #Force cet encodage Order allow,deny allow from all ===== Activer un module ===== Dans la configuration de ce virtualhost, j'ai rajouté 3 lignes utilisant le mod Rewrite afin de sécuriser notre site (voir [[http://fr.wikipedia.org/wiki/Cross_site_scripting|cross-site tracing attack]]). Il faut donc s'assurer que ce module est activé ! Tout comme les virtualhosts, Debian organise ses modules en 2 répertoires (**mods-available** et **mods-enabled**). Via un script fourni, en se plaçant dans ///etc/apache2/mods-available// # a2enmod rewrite Ou en créant le lien à la main, en se plaçant dans ///etc/apache2/mods-enabled// # ln -s /etc/apache2/mods-available/rewrite.load ===== Mettre un site en ligne ===== Sous Debian, ce ne sont pas les fichiers du répertoire **"sites-available"** qui sont lu au démarrage du serveur, mais les liens symboliques contenu dans **"sites-enabled"**. Il faut donc créer ce lien symbolique. Via un script fourni, en se plaçant dans ///etc/apache2/sites-available// : # a2ensite monsite Ou en créant le lien à la main, en se plaçant dans ///etc/apache2/sites-enabled// : # ln -s /etc/apache2/sites-available/monsite ===== Le DocumentRoot ===== On remarque la directive DocumentRoot qui indique le répertoire "racine" du site. Il convient donc de créer ce répertoire. C'est là que nous y déposerons nos fichiers. # mkdir /var/www/monsite On applique ensuite des droits restreints sur le répertoire (accessible à l'utilisateur d'apache "www-data" et interdit aux autres) # chown 750 /var/www/monsite -R && chown -R www-data:root /var/www/monsite ====== Démarrage du serveur ====== On peut maintenant redémarrer le serveur Apache pour valider cette nouvelle configuration ;) Pensez à vérifier les logs sous ///var/log/apache2// pour être sur que tout est OK. # /etc/init.d/apache2 restart ====== Test ====== Testons maintenant notre serveur. Nous allons éditer un fichier **index.html** dans ///var/www/monsite/// # vi /var/www/monsite/index.html et on écrit : It Works !! Il est maintenant temps de vérifier si tout fonctionne. Premièrement, on doit s'assurer que www.monsite.fr est bien dirigé vers l'IP du serveur. Un simple # ping www.monsite.fr doit résoudre notre adresse. Dans le cas d'un serveur de test non déclaré, on se contentera de modifier le fichier hosts de la machine cliente ! Démarrer ensuite votre navigateur favori avec saisissez l'url www.monsite.fr ! Si vous ne voyez pas "It Works !!"", c'est qu'il y a un zonzon ^^ Quoi qu'il arrive, regardez vos logs ! ====== En production ====== Si vous ne l'avez pas remarqué, Apache, dans sa configuration standard est un peu trop verbeux... Une erreur de page ou un accès non-autorisé vous affichera par défaut un grand nomnbre de renseignements sur le serveur, pratique pour les Kevins... //**Apache/2.2.3 (Debian) PHP/5.2.0-8+etch10 Server at monserveur.monsite.fr Port 80**// Pour remédier à çà, modifier la directive suivante dans le fichier ///etc/apache2/apache2.conf// ServerTokens Prod Si vous voulez vraiment qu'il soit muet, modifiez de plus ServerSignature Off