Ci-dessous, les différences entre deux révisions de la page.
— |
apache [2018/11/17 13:52] (Version actuelle) |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
+ | ====== Installation ====== | ||
+ | Sur **Debian**, on utilise l'outil [[debian:debian_gestion_paquets|apt]] pour installer le serveur Web **Apache**<code># apt-get install apache2</code> | ||
+ | |||
+ | ====== Configuration ====== | ||
+ | |||
+ | ===== Le fichier httpd.conf ===== | ||
+ | |||
+ | C'est dans ce fichier que l'on rajoute les paramètres personnels de notre configuration. | ||
+ | |||
+ | <code># vi /etc/apache2/httpd.conf</code> | ||
+ | |||
+ | 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//) | ||
+ | |||
+ | <code>ServerName monserveur.monsite.fr</code> | ||
+ | |||
+ | puis, parce que c'est une philosophie qui a fait ses preuves, on commence par tout interdire ^^ | ||
+ | |||
+ | <code><Directory /> | ||
+ | AllowOverride None | ||
+ | Order deny,allow | ||
+ | Deny from all | ||
+ | </Directory></code> | ||
+ | |||
+ | ensuite, on interdit la lecture des fichiers .htaccess | ||
+ | |||
+ | <code><Files ~ "^\.ht"> | ||
+ | Order allow,deny | ||
+ | Deny from all | ||
+ | </Files></code> | ||
+ | |||
+ | enfin, on indique à Apache que l'on va utiliser le mécanisme des VirtualHosts par IP | ||
+ | |||
+ | <code>NameVirtualHost xxx.xxx.xxx.xxx:80</code> | ||
+ | |||
+ | 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. | ||
+ | |||
+ | <code># rm /etc/apache2/sites-available/default && rm /etc/apache2/sites-enables/000-default && rm -rf /var/www/apache2-default</code> | ||
+ | |||
+ | On va maintenant créer notre premier Vhost en éditant un fichier sous ///etc/apache2/sites-available// | ||
+ | |||
+ | <code># vi /etc/apache2/sites-available/monsite</code> | ||
+ | |||
+ | Exemple type d'un vhost sur le port 80 appelé par www.monsite.fr | ||
+ | |||
+ | <code><VirtualHost xxx.xxx.xxx.xxx:80> | ||
+ | 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 | ||
+ | <Directory /> | ||
+ | AllowOverride All #Permet la lecture d'un .htaccess | ||
+ | AddDefaultCharset ISO-8859-1 #Force cet encodage | ||
+ | Order allow,deny | ||
+ | allow from all | ||
+ | </Directory> | ||
+ | </VirtualHost></code> | ||
+ | |||
+ | ===== 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]]). | ||
+ | <note>Il faut donc s'assurer que ce module est activé !</note> | ||
+ | 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// | ||
+ | |||
+ | <code># a2enmod rewrite</code> | ||
+ | |||
+ | Ou en créant le lien à la main, en se plaçant dans ///etc/apache2/mods-enabled// | ||
+ | |||
+ | <code># ln -s /etc/apache2/mods-available/rewrite.load</code> | ||
+ | |||
+ | ===== 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// : | ||
+ | |||
+ | <code># a2ensite monsite</code> | ||
+ | |||
+ | Ou en créant le lien à la main, en se plaçant dans ///etc/apache2/sites-enabled// : | ||
+ | |||
+ | <code># ln -s /etc/apache2/sites-available/monsite</code> | ||
+ | |||
+ | ===== 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. | ||
+ | |||
+ | <code># mkdir /var/www/monsite</code> | ||
+ | |||
+ | On applique ensuite des droits restreints sur le répertoire (accessible à l'utilisateur d'apache "www-data" et interdit aux autres) | ||
+ | |||
+ | <code># chown 750 /var/www/monsite -R && chown -R www-data:root /var/www/monsite</code> | ||
+ | |||
+ | ====== 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. | ||
+ | |||
+ | <code># /etc/init.d/apache2 restart</code> | ||
+ | |||
+ | ====== Test ====== | ||
+ | |||
+ | Testons maintenant notre serveur. Nous allons éditer un fichier **index.html** dans ///var/www/monsite/// | ||
+ | |||
+ | <code># vi /var/www/monsite/index.html</code> | ||
+ | |||
+ | et on écrit : | ||
+ | |||
+ | <code><html> | ||
+ | <head> | ||
+ | </head> | ||
+ | <body> | ||
+ | It Works !! | ||
+ | </body> | ||
+ | </html></code> | ||
+ | |||
+ | 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 <code># ping www.monsite.fr</code> doit résoudre notre adresse. | ||
+ | <note>Dans le cas d'un serveur de test non déclaré, on se contentera de modifier le fichier hosts de la machine cliente !</note> | ||
+ | |||
+ | 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// | ||
+ | |||
+ | <code>ServerTokens Prod</code> | ||
+ | |||
+ | Si vous voulez vraiment qu'il soit muet, modifiez de plus | ||
+ | |||
+ | <code>ServerSignature Off</code> |