Page suivante Page précédente Table des matières

8. Web virtuel

8.1 Lancement avec virtuald

Non recommandé

Apache supporte en standard la gestion des domaines virtuels. C'est d'ailleurs le seul programme pour lequel je recommande d'utiliser le système de gestion des domaines virtuels fourni avec. Lorsque vous lancez un programme par l'intermédiaire d'inetd, il y a un coût supplémentaire, puisque le programme doit démarrer à chaque fois qu'il y a une demande de connexion, et vous obtenez des temps de réponse beaucoup plus longs, inacceptables pour le web. Apache intégre également un mécanisme pour stopper les connexions lorsqu'elles sont trop nombreuses.

Comme il est simplement indiqué ci-dessus, rendre virtuel Apache avec virtuald est une tres mauvaise idée. Le but de virtuald est de combler la lacune des serveurs qui n'ont pas leur propre systeme interne pour faire ce travail. Virtuald n'est pas fait pour remplacer du bon code qui remplit déjà la tâche.

Ce qui suit ne restera pas ici, c'est pour expliquer à ceux qui sont assez idiots pour le faire.

Inetd

Éditez /etc/inetd.conf

vi /etc/inetd.conf # Ajouter cette ligne
www stream tcp nowait www /usr/local/bin/virtuald \
        virtuald /virtual/conf.www httpd -f /var/www/conf/httpd.conf

Httpd.conf

Éditez /var/www/conf/httpd.conf

vi /var/www/conf/httpd.conf # Où l'emplacement des fichiers de configuration d'Apache
Il doit y avoir :
ServerType standalone

Remplacez-le par :
ServerType inetd 

Configuration

Ensuite, configurez chaque cas du serveur Apache comme si vous n'aviez qu'un seul domaine.

Httpd.init

Un fichier httpd.init n'est pas nécéssaire si le serveur est lancé par inetd.

8.2 Lancer Apache avec VirtualHost

Apache a trois fichiers de configuration access.conf , httpd.conf et srm.conf . De nouvelles versions d'Apache ont rendues les trois fichiers de configuration inutiles. Ainsi, je trouve que séparer en trois sections la configuration la rend plus simple à gérer, donc je garderai ce style dans le HOWTO.

Access.conf

Ce fichier de configuration est utilisé pour contrôler l'accès aux répertoires dans la structure du répertoire web. Voici un exemple de fichier de configuration qui montre comment avoir plusieurs options pour chaque domaine.

# /var/www/conf/access.conf: Configuration des accès globaux

# Les options sont heritées du répertoire précedent
# Mettre les options par défaut pour le répertoire principal
<Directory />
AllowOverride None
Options Indexes
</Directory>

# Créer un répertoire protegé par mot de passe pour un domaine
<Directory /virtual/domain1.com/var/www/html/priv>
AuthUserFile /var/www/passwd/domain1.com-priv
AuthGroupFile /var/www/passwd/domain1.com-priv-g
AuthName PRIVSECTION
AuthType Basic
<Limit GET PUT POST>
require valid-user
</Limit>
</Directory>

# Créer un autre domaine Server Side Include (SSI) 
<Directory /virtual/domain2.com/var/www/html>
Options IncludesNOEXEC
</Directory>

Httpd.conf

Ce fichier de configuration est utilisé pour contrôler les options principales du serveur Apache. Voici un exemple de fichier de configuration qui montre comment avoir différentes options pour chaque domaine.

# /var/www/conf/httpd.conf: Fichier de configuration principal du serveur

# Début: Section principale
ServerType standalone

# Numéro du port
Port 80

# Log des clients avec le nom et l'IP
HostnameLookups on

# Utilisateur qui lance le serveur
User www
Group www

# Emplacement des fichiers de config, erreurs et log
ServerRoot /var/www

# Processus ID du serveur dans ce fichier
PidFile /var/run/httpd.pid

# Informations du processus interne du serveur
ScoreBoardFile /var/www/logs/apache_status

# Les options du Timeout et KeepAlive
Timeout 400
KeepAlive 5
KeepAliveTimeout 15

# Nombre de Serveur à lancer
MinSpareServers 5
MaxSpareServers 10
StarsServers 5
MaxClients 150
MaxRequestsPerChild 30

# Fin: Section de configuration principale

# Début: Section de l'hébergement virtuel

# Indique au serveur d'accepter les connexions pour IP:Port
# Il y a une ligne pour chaque IP nécessaire donc, vous pouvez ignorer certains 
# domaines
Listen 10.10.10.129:80
Listen 10.10.10.130:80

# La commande VirtualHost permet de spécifier un autre domaine virtuel sur le 
# serveur. La plupart des options d'Apache peuvent être spécifiées dans cette 
# section.
<VirtualHost www.domain1.com>

# E-mail à laquelle sont envoyées les erreurs
ServerAdmin webmaster@domain1.com

# Endroit où sont mis les documents du domaine virtuel
DocumentRoot /virtual/domain1.com/var/www/html

# Nom du serveur
ServerName www.domain1.com

# Fichiers de Log relatifs à l'option ServerRoot
ErrorLog logs/domain1.com-error_log
TransferLog logs/domain1.com-access_log
RefererLog logs/domain1.com-referer_log
AgentLog logs/domain1.com-agent_log

# Utiliser les scripts CGI dans ce domaine
ScriptAlias /cgi-bin/ /var/www/cgi-bin/domain1.com/
AddHandler cgi-script .cgi
AddHandler cgi-script .pl
</VirtualHost>

<VirtualHost www.domain2.com>

# E-mail à laquelle sont envoyées les erreurs
ServerAdmin webmaster@domain2.com

# Endroit où sont mis les documents du domaine virtuel
DocumentRoot /virtual/domain2.com/var/www/html

# Nom du Serveur
ServerName www.domain2.com

# Fichiers de Log relatifs à l'option ServerRoot
ErrorLog logs/domain2.com-error_log
TransferLog logs/domain2.com-access_log
RefererLog logs/domain2.com-referer_log
AgentLog logs/domain2.com-agent_log

# Pas de script CGI pour ce domaine
</VirtualHost>
# Fin: Section de l'hebergement virtuel

Srm.conf

Ce fichier de configuration est utilisé pour contrôler comment sont servies les demandes et comment sont formattés les résultats. Vous n'avez pas besoin d'éditer quoi que ce soit ici pour les domaines virtuels. Le fichier de configuration de base d'Apache doit fonctionner.

Httpd.init

Rien de spécial n'est à faire dans ce fichier. Utilisez la version de base qui est fournie avec Apache.

8.3 Descripteurs de fichiers : limite de capacité

Attention

Cela s'applique seulement à la version standalone du serveur Apache. Un serveur qui se lance au travers d'inetd n'intervient pas avec les autres domaines et à accès à toute la table des descripteurs de fichiers.

Chaque fichier de log qu'ouvre Apache est un autre descripteur de fichier pour le processus. Il y a une limite de 256 descripteurs de fichier par processus au coeur du systeme Linux. Depuis que vous avez plusieurs domaines, vous utilisez plus de descripteurs de fichiers. Si vous avez trop de domaines tournant sur un processus du serveur Apache, vous pouvez engorger cette table. Cela peut impliquer que certains logs ne fonctionneront pas et que certains CGI seront interrompus.

Plusieurs serveur Apache

Si vous prévoyez cinq descripteurs de fichiers par domaine, vous pouvez avoir 50 domaines tournant sur votre serveur Apache sans problèmes. Mais, si votre serveur a des problèmes, vous pouvez créer /var/www1 avec un serveur Apache qui s'occupe des domaines 1 à 25 et /var/www2 avec un autre serveur qui s'occupe des domaines 26 à 50. Ainsi, chaque serveur aura son propre fichier de configuration, d'erreurs et de log. Chaque serveur doit être configuré separement avec ses propres directives de Listen et VirtualHost. Et n'oubliez pas de lancer plusieurs serveurs dans votre fichier httpd.ini.

8.4 Héberger plusieurs serveurs avec une IP

Économiser des IP

La version 1.1 du protocole HTTP (HyperText Transfer Protocol) inclue une fonction qui communique le nom du serveur au client. Ce qui implique que le client n'a pas besoin de rechercher le nom du serveur à partir de son adresse IP. Comme ça, deux serveurs virtuels peuvent avoir la même adresse IP et être deux site Web différents. La configuration d'Apache est la même qu'avant, à part que vous n'avez pas besoin de mettre plusieurs directives Listen comme les deux domaines ont la même IP.

Inconvénient

Le seul problème est que virtuald utilise les adresses IP pour distinguer les domaines. Dans sa forme actuelle Virtuald ne serait pas capable de chroot vers un répertoire de mail (spool) pour chaque domaine. Donc, les mails ne peuvent etre reçus que sur une IP et il n'y aurait plus un répertoire spool pour chaque domaine. Tous les clients d'un serveur web partageant une IP devront se partager le meme repertoire spool. Ce qui signifierait que dupliquer les noms d'utilisateurs serait encore une solution. Enfin, c'est le prix à payer pour économiser une IP.

8.5 Plus d'informations

Ce HOWTO montre seulement comment implémenter le support virtuel sur le serveur Web Apache. La plupart des serveur Web utilisent une interface similaire. Pour plus d'informations sur l'hébergement de web virtuel, consultez le WWW-HOWTO, la documentation d'Apache sur le Site d'Apache, ou la documentation sur ApacheWeek.


Page suivante Page précédente Table des matières