Il n' y a apparemment que deux manières d'héberger des hotes virtuels,
soit sur le critère du nom DNS, soit sur celui de l'adresse IP.
Je ne le ferais que par le nom DNS, étant donné que je ne dispose que d'une seul
adresse IP publique, mais que sur celle-ci peuvent pointer différents noms DNS.
Dans l'hebergement virtuel par nom, j'aurais besoin d'indiquer la directive
"NameVirtualHost" celle-ci indique a apache que le critère d'accès au site ce fait
par le nom DNS de celui-ci, nom figurant dans la requète du client.
Apparemment seul les clients utilisant HTTP1.1 peuvent acceder a ce genre d'hebergement
(HTTP1.1 produit un en-tete "Host", celui ci est neccessaire...mais je n'en sais pas plus :-))
- j'utilise la DEBIAN SARGE comme plateforme.
- Aucun module "particulier" n'a besoin d'etre chargé.
Voici le contenu du répertoire /etc/apache2/:
total 41
-rw-r--r-- 1 root root 12462 2002-01-04 11:59 apache2.conf
drwxr-xr-x 2 root root 1024 2002-01-04 11:55 conf.d
-rw-r--r-- 1 root root 713 2004-11-10 12:42 envvars
-rw-r--r-- 1 root root 302 2002-01-04 11:56 httpd.conf
-rw-r--r-- 1 root root 12441 2004-11-10 13:00 magic
drwxr-xr-x 2 root root 2048 2002-01-11 08:30 mods-available
drwxr-xr-x 2 root root 1024 2002-01-11 08:35 mods-enabled
-rw-r--r-- 1 root root 10 2002-01-03 01:53 ports.conf
-rw-r--r-- 1 root root 2266 2004-11-10 13:00 README
drwxr-xr-x 2 root root 1024 2002-01-12 02:11 sites-available
drwxr-xr-x 2 root root 1024 2002-01-12 02:14 sites-enabled
drwxr-xr-x 2 root root 1024 2004-11-10 13:00 ssl
- le répertoire "sites-available", contient les fichiers de configurations
des sites disponibles, par défaut, seul le fichier "default" est présent.
- le répertoire "sites-enabled" contient des liens symbolique vers le répertoire
"sites-available", pour activer un site il faut juste créer un liens dans ce répertoire.
En plus du site par défaut, j'ai donc créer un site nommé "virtual" dans sites-available,
et l'ai activé en créant le liens dans sites-enabled
ex:
# cd /etc/apache2/sites-enabled
# ln -s /etc/apache2/sites-available/virtual virtual
Voici maintenant le contenu des deux répertoires
sites-available:
-rw-r--r-- 1 root root 1781 2002-01-12 02:14 default
-rw-r--r-- 1 root root 446 2002-01-12 02:11 virtual
sites-enabled:
lrwxrwxrwx 1 root root 36 2002-01-03 01:53 000-default -> /etc/apache2/sites-available/default
lrwxrwxrwx 1 root root 36 2002-01-12 02:11 virtual -> /etc/apache2/sites-available/virtual
Voici le contenu du fichier "default" (qui apparemment était deja un virtualhost
mais par adresse IP),
Je lui ai rajouter la directive "NameVirtualHost"
et j'ai fixé la directive "ServerName" a "verseau.athena.home".
Les requètes des clients web, appellant le serveur "verseau.athena.home"
subissent les directives de la configuration ci-dessous: DocumentRoot etc..
NameVirtualHost *
<VirtualHost *>
ServerAdmin webmaster@localhost
ServerName verseau.athena.home
DocumentRoot /var/www/
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
# This directive allows us to have apache2's default start page
# in /apache2-default/, but still have / go to the right place
RedirectMatch ^/$ /verseau/
</Directory>
<Directory /var/www/verseau>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
<Directory /var/www/dotclear>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</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 /icons/ "/usr/share/apache2/icons/"
<Directory "/usr/share/apache2/icons">
Options Indexes MultiViews
AllowOverride None
Order allow,deny
Allow from all
</Directory>
Alias /doc/ "/usr/share/doc/"
<Directory "/usr/share/doc/">
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
Allow from 192.168.0.0/24
</Directory>
</VirtualHost>