Outils pour utilisateurs

Outils du site


apache

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

apache [2014/05/09 18:58] (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>​
apache.txt · Dernière modification: 2014/05/09 18:58 (modification externe)