LinuxPedia

Wiki libre et indépendant dédié à GNU-Linux et BSD.

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 [2018/11/17 13:52]
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>
apache.txt · Dernière modification: 2018/11/17 13:52 (modification externe)