apache

Introduction

Il est parfois utile voir indispensable d’installer sur sa machine un serveur web. il en existe plusieurs (karrigell en python par exemple) Mais le plus connu et le plus utilisé reste Apache. Sur Ubuntu l’apache accessible est la version 2

Installation

Comme tout bon packet debian:

apt-get install apache2

Vous avez maintenant un serveur web d’installer vous pouvez le démarrer et le stopper via les commandes de services:

/etc/init.d/apache2 stop
/etc/init.d/apache2 start

Configuration

Par défaut votre site web se trouve dans le path /var/www/ et vous avez un alias doc. De plus le défault chart est UTF-8 (ce qui peux bloquer sur les accents) Je vous propose de configurer apache afin d’avoir votre site dans /home/fraoustin/www, et d’avoir comme defaultcharset ISO-8859-1

Modification du path

Dans le fichier /etc/apache2/sites-available/default vous trouvez:

NameVirtualHost *
<VirtualHost *>
 ServerAdmin webmaster@localhost
 DocumentRoot /var/www
 <Directory />
  Options FollowSymLinks
  AllowOverride None
 </Directory>
 <Directory /var/www/>
  Options Indexes FollowSymLinks MultiViews
  AllowOverride None
  Order allow,deny
  allow from all
  # Uncomment this directive is you want to see apache2's
  # default start page (in /apache2-default) when you go to /
  #RedirectMatch ^/$ /apache2-default/
 </Directory>
 ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
 <Directory "/usr/lib/cgi-bin">
  AllowOverride None
  Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
  Order allow,deny
  Allow from all
 </Directory>
 ErrorLog /var/log/apache2/error.log
 # Possible values include: debug, info, notice, warn, error, crit,
 # alert, emerg.
 LogLevel warn
 CustomLog /var/log/apache2/access.log combined
 ServerSignature On
    Alias /doc/ "/usr/share/doc/"
    <Directory "/usr/share/doc/">
 Options Indexes MultiViews FollowSymLinks
 AllowOverride None
 Order deny,allow
 Deny from all
 Allow from 127.0.0.0/255.0.0.0 ::1/128
   </Directory>
</VirtualHost>

il faut obtenir:

NameVirtualHost *
<VirtualHost *>
 ServerAdmin webmaster@localhost
 DocumentRoot /home/fraoustin/www
 <Directory />
  Options FollowSymLinks
  AllowOverride None
 </Directory>
 <Directory /home/fraoustin/www/>
  Options Indexes FollowSymLinks MultiViews
  AllowOverride None
  Order allow,deny
  allow from all
  # Uncomment this directive is you want to see apache2's
  # default start page (in /apache2-default) when you go to /
  #RedirectMatch ^/$ /apache2-default/
 </Directory>
 ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
 <Directory "/usr/lib/cgi-bin">
  AllowOverride None
  Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
  Order allow,deny
  Allow from all
 </Directory>
 ErrorLog /var/log/apache2/error.log
 # Possible values include: debug, info, notice, warn, error, crit,
 # alert, emerg.
 LogLevel warn
 CustomLog /var/log/apache2/access.log combined
 ServerSignature On
</VirtualHost>

Modification du Charset

Dans le fichier /etc/apache2/conf.d/charset ou default vous trouvez:

AddDefaultCharset UTF-8

il faut obtenir:

AddDefaultCharset ISO-8859-1

Sécurisation des accès

Configuration d’Apache pour .htaccess Le fichier de configuration pour Apache : default, se trouve dans /etc/apache2/sites-available/default . D’origne, il contient les éléments suivants

<Directory /var/www/>
Options Indexes Includes FollowSymlinks MultiViews
AllowOverride None
Order allow,deny
Allow from all
</Directory>

Il faut ajouter une instruction (AllowOverride AuthConfig) pour indiquer que nous voulons protéger les dossiers suivants

<Directory /var/www/>
Options Indexes Includes FollowSymlinks MultiViews
AllowOverride AuthConfig
Order allow,deny
Allow from all
</Directory>

AllowOverride AuthConfig demande à Apache de prendre en compte le fichier .htaccess dans le répertoire /var/www/ et tous ses sous-répertoires.

Le fichier .htaccess

Avec votre éditeur préféré (vim), vous éditez un fichier .htaccess dans le répertoire que vous souhaitez protéger. Et voici ce qe vous devez y mettre

AuthUserFile /var/www/pass/.htpasswd
AuthName "Accès protégé"
AuthType Basic
<Limit GET POST>
Require valid-user
</Limit>

On indique que le fichier .htpasswd (qui contient les logins et les mots de pass) se trouve dans /var/www/pass/. Il est préférable de mettre de fichier hors du site lui même. Sinon on ajoute un fichier .htaccess dans le répertoire où se trouve .htpasswd pour en empêcher l’accés. Dans ce cas là, le fichier .htaccess contient : deny from all

Création du fichier .htpasswd

Vous devez bien sûr mettre le fichier .htpasswd dans le répertoire que vous avez indiqué dans .htaccess. Il se compose toujours comme suit

login:passwd

Ces mots de passe doivent être cryptés. Vous obtenez le mot de passe crypté au moyen de la commande htpasswd. Par exemple je souhaite que l’utilisateur toto accede à ma page web avec le mot de passe ‘supertoto’, je tape la commande

[[root@glop root]]# htpasswd -c /var/www/pass/.htpasswd toto
New password:
Re-type new password:
Adding password for user toto

L’option -c de htpasswd permet de créer le fichier .htpasswd avec le premier couple login:passwd. Si vous souhaité ajouter un deuxième utilisateur, il faut enlever l’option -c

[[root@glop root]]# htpasswd /var/www/pass/.htpasswd tutu
New password:
Re-type new password:
Adding password for user tutu

remarque il est possible d’écrire le fichier .htpasswd sans être crypté.:

JFPillou:Toto504
Damien:Robert(32)
Comma:Joe[[leTaxi]]