| 1 |
<?xml version="1.0" encoding="iso-8859-1"?> |
|---|
| 2 |
|
|---|
| 3 |
<!-- $Revision$ --> |
|---|
| 4 |
|
|---|
| 5 |
<chapter id="admin.internals"> |
|---|
| 6 |
<title>Fonctionnement interne d'AlternC</title> |
|---|
| 7 |
|
|---|
| 8 |
<sect1><title>Debian / Alternc, une distribution linux et un panneau de configuration général</title> |
|---|
| 9 |
|
|---|
| 10 |
<para> |
|---|
| 11 |
AlternC est un produit basé sur la distribution Debian. Cette distribution propose un système de paquets d'installation (fichiers .deb) installables facilement (avec la commande dpkg) ou tout simplement téléchargeables automatiquement grâce à l'outil apt-get. AlternC utilise le système apt-get pour pouvoir s'installer. Il propose donc un dossier web (http://debian.alternc.org) où votre système pourra trouver les paquets d'AlternC. |
|---|
| 12 |
</para> |
|---|
| 13 |
<para> |
|---|
| 14 |
AlternC se base sur des logiciels standards utilisés pour l'hébergement de contenu web, de mails, de listes ... Ces logiciels dont donc fournis par Debian, et nous utilisons les paquets standards Debian. Voici la liste des logiciels utilisés et de leur rôle, ceci n'est pas une référence, les outils utilisés pouvant changer avec le temps |
|---|
| 15 |
</para> |
|---|
| 16 |
|
|---|
| 17 |
<screen> |
|---|
| 18 |
Apache Serveur Web (pages http) |
|---|
| 19 |
Postfix Serveur Smtp (courrier électronique) |
|---|
| 20 |
Proftpd Serveur Ftp (transfert de fichiers) |
|---|
| 21 |
Bind9 Serveur Dns (noms de domaine) |
|---|
| 22 |
Mailman Serveur de listes de discussion / diffusion |
|---|
| 23 |
Mysql4 Serveur de bases de données |
|---|
| 24 |
Php4 Language de contenu dynamique |
|---|
| 25 |
PhpMyAdmin Interface web de gestion de données |
|---|
| 26 |
Squirrelmail Interface web de lecture de mail |
|---|
| 27 |
AWstats Statistiques web |
|---|
| 28 |
Webalizer Statistiques web |
|---|
| 29 |
Courier Suite Serveur pop, pops, imap, imaps |
|---|
| 30 |
Spamassassin Logiciel d'antispam |
|---|
| 31 |
Clamav Antivirus |
|---|
| 32 |
</screen> |
|---|
| 33 |
|
|---|
| 34 |
<para> |
|---|
| 35 |
Chaque logiciel est installé par le système apt-get de debian, lors de l'installation d'AlternC (voire la documentation d'installation). A l'installation d'AlternC, celui-ci écrase les fichiers de configuration des différents logiciels ci-dessus, en les remplaçant par des versions optimisées et adaptées à l'hébergement de contenus mutualisés. Le paquet AlternC fournit donc des modèles de fichiers de configuration dans <filename>/usr/share/alternc/1.0/install/etc</filename> qui remplaceront ceux fournis par Debian. Ces fichiers contiennent des balises sous la forme %%variable%% où 'variable' provient du fichier de configuration générale d'AlternC : <filename>/etc/alternc/alternc.conf</filename>, que vous avez modifié avant d'installer AlternC. |
|---|
| 36 |
</para> |
|---|
| 37 |
|
|---|
| 38 |
<example><title>Exemple de Fichier de configuration AlternC</title> |
|---|
| 39 |
<para> |
|---|
| 40 |
Le fichier de configuration d'apache est dans /etc/apache/httpd.conf. on y retrouve entre autre : |
|---|
| 41 |
</para> |
|---|
| 42 |
|
|---|
| 43 |
<screen> |
|---|
| 44 |
## |
|---|
| 45 |
## httpd.conf -- Apache HTTP server configuration file (sample) |
|---|
| 46 |
## |
|---|
| 47 |
... |
|---|
| 48 |
# Listen: Allows you to bind Apache to specific IP addresses and/or |
|---|
| 49 |
#Listen 3000 |
|---|
| 50 |
#Listen 12.34.56.78:80 |
|---|
| 51 |
... |
|---|
| 52 |
# BindAddress: You can support virtual hosts with this option. This directive |
|---|
| 53 |
#BindAddress * |
|---|
| 54 |
</screen> |
|---|
| 55 |
|
|---|
| 56 |
<para> |
|---|
| 57 |
Celui fourni avec AlternC contiendra des valeurs substituables à l'installation : |
|---|
| 58 |
</para> |
|---|
| 59 |
|
|---|
| 60 |
<screen> |
|---|
| 61 |
# |
|---|
| 62 |
# Fichier de configuration principale d'Apache pour AlternC (extraits) |
|---|
| 63 |
ServerType standalone |
|---|
| 64 |
ServerRoot /etc/apache |
|---|
| 65 |
MaxRequestsPerChild 100 |
|---|
| 66 |
Listen %%myip%%:80 |
|---|
| 67 |
BindAddress %%myip%% |
|---|
| 68 |
... |
|---|
| 69 |
</screen> |
|---|
| 70 |
|
|---|
| 71 |
<para> |
|---|
| 72 |
Ainsi l'installation d'AlternC pourra créer un fichier httpd.conf personnalisé pour votre serveur, ce qui donnerait : |
|---|
| 73 |
</para> |
|---|
| 74 |
|
|---|
| 75 |
<screen> |
|---|
| 76 |
# |
|---|
| 77 |
# Fichier de configuration principale d'Apache pour AlternC (extraits) |
|---|
| 78 |
ServerType standalone |
|---|
| 79 |
ServerRoot /etc/apache |
|---|
| 80 |
MaxRequestsPerChild 100 |
|---|
| 81 |
Listen 80.67.172.60:80 |
|---|
| 82 |
BindAddress 80.67.172.60 |
|---|
| 83 |
... |
|---|
| 84 |
</screen> |
|---|
| 85 |
</example> |
|---|
| 86 |
|
|---|
| 87 |
</sect1> |
|---|
| 88 |
|
|---|
| 89 |
|
|---|
| 90 |
|
|---|
| 91 |
|
|---|
| 92 |
|
|---|
| 93 |
<sect1><title>Apache, fonctionnement du serveur Web sous AlternC</title> |
|---|
| 94 |
|
|---|
| 95 |
<para> |
|---|
| 96 |
Le serveur web Apache est le plus connu et le plus utilisé des logiciels permettant de mettre à disposition des pages web (via la protocole http). Il est utilisé par AlternC, non seulement comme serveur permettant de mettre à disposition les pages web hébergées par les clients de votre serveur, mais il permet aussi d'accéder au panneau de configuration, le Bureau d'AlternC. |
|---|
| 97 |
</para> |
|---|
| 98 |
<para> |
|---|
| 99 |
Avec la configuration Debian par défaut, apache ne sait pas gérer les domaines proprement : il sert toutes les pages web dans /var/www. AlternC modifie donc sa configuration pour supporter les domaines 'virtuels', à savoir la possibilité d'héberger plusieurs domaines sur un même serveur disposant d'une seule adresse ip. La ligne de configuration magique correspondante est la suivante : |
|---|
| 100 |
<filename>VirtualDocumentRoot /var/alternc/dns/%-2.1/%0</filename> |
|---|
| 101 |
</para> |
|---|
| 102 |
<para> |
|---|
| 103 |
|
|---|
| 104 |
Ce paramètre permet de diriger Apache automatiquement vers la page souhaitée en fonction du nom du domaine. %-2.1 signifie "le premier (1) caractère du second membre (2) du domaine en lisant par la droite (-)". Par exemple, pour le domaine www.alternc.org, apache va chercher le dossier <filename>/var/alternc/dns/a/www.alternc.org/</filename>. AlternC pose donc un lien symbolique a cet endroit, pointant vers le dossier choisi par l'hébergé dans son espace web. |
|---|
| 105 |
</para> |
|---|
| 106 |
<para> |
|---|
| 107 |
Chaque hébergé dispose d'un espace web. Cet espace web est situé dans <filename>/var/alternc/html/e/essai</filename> pour le compte essai..., ainsi, si le compte essai fait pointer le domaine www.virtuel.org dans le dossier virt de son compte, il crée ce dossier, et le domaine pointera sous forme de lien symbolique de <filename>/var/alternc/html/e/essai/virt</filename> à l'emplacement <filename>/var/alternc/dns/v/www.virtuel.org</filename>. |
|---|
| 108 |
</para> |
|---|
| 109 |
<para> |
|---|
| 110 |
Pour la gestion des domaines, il y a d'autres cas d'hébergement de domaines : dans le panneau de l'hébergé, ce dernier peut choisir plusieurs modes : |
|---|
| 111 |
</para> |
|---|
| 112 |
|
|---|
| 113 |
<itemizedlist> |
|---|
| 114 |
|
|---|
| 115 |
<listitem><para> Hébergément d'un domaine/sous-domaine vers un dossier de son espace web</para></listitem> |
|---|
| 116 |
<listitem><para> Redirection vers une adresse IP</para></listitem> |
|---|
| 117 |
<listitem><para> Redirection vers une autre url (http://...)</para></listitem> |
|---|
| 118 |
<listitem><para> Autre redirection : vers le webmail, le bureau ...</para></listitem> |
|---|
| 119 |
|
|---|
| 120 |
</itemizedlist> |
|---|
| 121 |
|
|---|
| 122 |
<para> |
|---|
| 123 |
Le premier cas a été étudié ci-dessus. |
|---|
| 124 |
</para> |
|---|
| 125 |
<para> |
|---|
| 126 |
Lorsque l'hébergé choisi de diriger un domaine vers une ip, aucun lien symbolique n'est créé dans <filename>/var/alternc/dns</filename>, mais la zone dns de l'hébergé reçoit une nouvelle ligne du type |
|---|
| 127 |
</para> |
|---|
| 128 |
<screen> |
|---|
| 129 |
sousdomaine IN A 80.67.172.5 |
|---|
| 130 |
</screen> |
|---|
| 131 |
<para> |
|---|
| 132 |
Ce fichier zone est situé dans <filename>/etc/bind/master/virtuel.org</filename> (par exemple, voir La section sur le serveur dns (bind) |
|---|
| 133 |
</para> |
|---|
| 134 |
<para> |
|---|
| 135 |
Lorsque l'hébergé choisi de diriger un domaine vers une redirection http://, un lien symbolique est créé dans <filename>/var/alternc/dns/v/virtuel.org</filename> vers le dossier <filename>/var/alternc/dns/redir/v/virtuel.org/</filename> nouvellement créé, dans lequel on retrouve un fichier .htaccess. Ces fichiers sont des options de configuration d'Apache, et permettent de préciser notemment des redirections. Dans notre cas, on utilise les Rewrite Rules d'Apache pour rediriger l'internaute vers la page demandée. |
|---|
| 136 |
</para> |
|---|
| 137 |
|
|---|
| 138 |
</sect1> |
|---|
| 139 |
|
|---|
| 140 |
|
|---|
| 141 |
|
|---|
| 142 |
|
|---|
| 143 |
<sect1><title>Bind, le serveur DNS</title> |
|---|
| 144 |
<para> |
|---|
| 145 |
AlternC utilise Bind9 comme serveur dns, permettant ainsi l'hébergement complet de noms de domaines, enregistrés chez votre registrar préféré. Vous pouvez donc installer un domaine sur votre serveur AlternC et préciser votre serveur comme dns primaire du domaine. Bind9 est très simple d'utilisation : on retrouve un fichier zone par domaine dans le dossier <filename>/etc/bind/master</filename>, qui est référencé dans le fichier <filename>/etc/bind/automatic.conf</filename>. Ce fichier reçoit une ligne par domaine enregistré, prévenant bind que ce domaine est installé sur le serveur et qu'il en est le dns primaire. |
|---|
| 146 |
</para> |
|---|
| 147 |
<para> |
|---|
| 148 |
La création, la modification et la suppression d'informations d'un domaine dans AlternC ne se fait pas de manière instantanée. Un script unix effectue les modifications nécessaires et redémarre bind si besoin toutes les 5 minutes. Ce script est situé dans /usr/lib/alternc/system/do_domaines.sh. Il est lancé par le système cron grâce au fichier <filename>/etc/cron.d/alternc</filename> |
|---|
| 149 |
</para> |
|---|
| 150 |
|
|---|
| 151 |
<example><title>Exemple de fichier zone</title> |
|---|
| 152 |
<para> |
|---|
| 153 |
Voici un exemple de fichier zone pour bind. On y retrouve toutes les informations sur le domaine concerné (ici mailfr.com) : TTL (durée de mise en cache maximale des informations), Serveur primaire (SOA primary.heberge.info), Serveurs de nom du domaine (NS primary et secondary), Serveur de courrier du domaine (MX = Mail Exchanger), et l'adresse IP du domaine vide (IN A) et de tous les sous-domaines (* IN A) : |
|---|
| 154 |
</para> |
|---|
| 155 |
<screen> |
|---|
| 156 |
$TTL 1D |
|---|
| 157 |
; BIND data file for domain mailfr.com |
|---|
| 158 |
@ IN SOA primary.heberge.info. root.brassens.heberge.info. ( |
|---|
| 159 |
2003082602 ; serial |
|---|
| 160 |
21600 ; refresh (6h) |
|---|
| 161 |
3600 ; retry (1h) |
|---|
| 162 |
604800 ; expiry (7d) |
|---|
| 163 |
86400 ) ; RR TTL (24h) |
|---|
| 164 |
|
|---|
| 165 |
IN NS primary.heberge.info. |
|---|
| 166 |
IN NS secondary.heberge.info. |
|---|
| 167 |
IN MX 5 mx.heberge.info. |
|---|
| 168 |
IN A 80.67.172.60 |
|---|
| 169 |
* IN A 80.67.172.60 |
|---|
| 170 |
</screen> |
|---|
| 171 |
</example> |
|---|
| 172 |
</sect1> |
|---|
| 173 |
|
|---|
| 174 |
|
|---|
| 175 |
<sect1><title>Postfix, le serveur de Courrier</title> |
|---|
| 176 |
<para> |
|---|
| 177 |
AlternC utilise Postfix comme MTA (Mail Transfer Agent = serveur de courrier) pour recevoir et |
|---|
| 178 |
envoyer du courrier via le protocole smtp. les boites aux lettres sont stockées dans le serveur |
|---|
| 179 |
localement au format maildir dans un dossier sous <filename>/var/alternc/mail/</filename>. |
|---|
| 180 |
Par exemple, la boite aux lettres de <filename>benjamin@example.com</filename> est située dans |
|---|
| 181 |
<filename>/var/alternc/mail/b/benjamin_example.com/Maildir/</filename> |
|---|
| 182 |
</para> |
|---|
| 183 |
<para> |
|---|
| 184 |
Le fichier de configuration principal de Postfix est <filename>/etc/postfix/main.cf</filename>. |
|---|
| 185 |
Il est modifié à l'installation d'AlternC pour aller chercher les emails dans une base MySQL |
|---|
| 186 |
fournie par le serveur MySQL Local. Cette base possède 2 tables principales : la table <command>mail_alias</command> et la table <command>mail_domain</command>. |
|---|
| 187 |
Une troisième table existe : <command>mail_users</command> qui contiendra les login/mot de passe |
|---|
| 188 |
pop/imap des boites aux lettres |
|---|
| 189 |
</para> |
|---|
| 190 |
|
|---|
| 191 |
</sect1> |
|---|
| 192 |
|
|---|
| 193 |
</chapter> |
|---|