This page is still a beta!

1.2. Configuration d'Apache

Nous allons configurer Apache pour qu'il serve les sites   *.site1.loc, *.site2.loc et members.site2.loc, site 3.loc

  • www.site1.loc, www.site2.loc, member.site2.loc partageront la même installation des sources de Typo3.

  • Les 2 sites *.site2.loc seront un seul site apache mais disposeront de virtual hosting Typo3.

  • test.site1.loc aura une installation indépendante (typo3.6).

  • Www.site3.loc n'est pas un site Typo3.

Les répertoires qui hébergeront les sites seront respectivement :

  • /www/site1/www pour www.site1.loc

  • /www/site1/dev pour dev.site1.loc

  • /www/site2/www pour *.site2.loc

  • /www/site3.loc/www

Noms de domaines, hosts et DNS

Comme nous faisons une installation locale, et que pour cette partie de test nous ne disposons pas de DNS en bonne et due forme, nous allons modifier le fichier de définition des hôtes qui permettent à linux de trouver les sites.

Modification de /etc/hosts pour créer 3 sites en local :

127.0.0.1               localhost www.site1.loc dev.site1.loc www.site2.loc member.site2.loc www.site3.loc

Si l'on dispose de DNS, les modification sont bien évidemment à apporter dans les DNS.

Répertoires des sites

Nous commencerons par la création des répertoires pour les sites web dans /www :

# mkdir -p /www/site1.loc/www

# mkdir -p /www/site1.loc/dev

# mkdir -p /www/site2.loc/www

# mkdir -p /www/site3.loc/www/htdocs

On notera que le site 3 a un répertoire htdocs. C'est dans ce répertoire que les pages seront déposées. L'ajout d'un étage supplémentaire permet de placer des fichiers relatifs au site mais que l'on ne souhaite pas rendre accessibles via un navigateur (mots de passe par exemple - dans /www/site3.loc/www/passdb.php). Concernant Typo3, ce niveau sera ajouté lors de l'installation.

On donne ensuite les répertoires de /www à l'utilisateur webmaster (vous donc remplacez webmaster par votre login (bob, joe, jean, paul ...) et on s'arrange pour que Apache puisse lire ces répertoires

# chown -R webmaster:apache /www

Vhosts Apache

On procède ensuite à l'édition du fichier /etc/httpd/2.0/conf/vhosts/Vhosts.conf qui contient la définition des hôtes virtuels. (Si on dispose d'une installation de Apache 1.3 le fichier est /etc/httpd/conf/vhosts/Vhosts.conf).

On va ajouter des hôtes virtuels à la fin du fichier. Comme nous ne disposons que d'une IP, nous choisissons de faire du name virtual hosting. C'est à dire que toutes les requêtes pour les sites web arriveront sur le serveur apache et que l'aiguillage vers les différentes sites (donc les différents répertoires) seront effectués en fonction du nom du site.

Le fichier Vhost.conf est donc le suivant :

UseCanonicalName OffLogFormat "%V %h %l %u %t \"%r\" %s %b" vcommonNameVirtualHost *<VirtualHost *:80>

   ServerName www.site1.loc

   DocumentRoot /www/site1.loc/www/dummy-3.5.0

     <Directory /www/site1.loc/www/dummy-3.5.0>

     Options FollowSymLinks MultiViews

      AllowOverride All

      <IfModule mod_access.c>

        Order allow,deny

        Allow from all

      </IfModule>

    </Directory>

</VirtualHost>

<VirtualHost *:80>

   ServerName dev.site1.loc

   DocumentRoot /www/site1.loc/dev/dummy-3.5.0

     <Directory /www/site1.loc/dev/dummy-3.5.0>

     Options FollowSymLinks MultiViews

      AllowOverride All

      <IfModule mod_access.c>

        Order allow,deny

        Allow from all

      </IfModule>

    </Directory>

</VirtualHost>

<VirtualHost *:80>

   ServerName www.site2.loc

   ServerAlias member.site2.loc

   DocumentRoot /www/site2.loc/www/dummy-3.5.0

     <Directory /www/site2.loc/www/dummy-3.5.0>

     Options FollowSymLinks MultiViews

      AllowOverride All

      <IfModule mod_access.c>

        Order allow,deny

        Allow from all

      </IfModule>

    </Directory>

</VirtualHost>

<VirtualHost *:80>

   ServerName www.site3.loc

   DocumentRoot /www/site3.loc/www/dummy-3.5.0

     <Directory /www/site3.loc/www/dummy-3.5.0>

     Options FollowSymLinks MultiViews

      AllowOverride All

      <IfModule mod_access.c>

        Order allow,deny

        Allow from all

      </IfModule>

    </Directory>

</VirtualHost>

Explications :

  • UseCanonicalName Off : empêche Apache de répondre au client Web en substituant le nom habituel du serveur au nom du site. Ceci force Apache à « faire confiance » au client web pour connaître le nom du site à afficher.

  • Log Format : On réécrit la sortie des messages vers le fichiers de logs. On s'assure notamment que le nom du site apparaît bien. Dans l'idéal on pourrait également attribuer un fichier de log par site, par exemple dans /www/sitex.loc/logs.

  • NameVirtualHost : cette directive spécifie que l'on souhaite utiliser le virtual hosting basé sur les noms.  Elle est indispensable pour poursuivre. Apache analysera maintenant les conteneurs « VirtualHost » pour tenter d'y trouver un site correspondant à celui demandé par le client (nom de site spécifié dans ServerName ou ServerAlias). Si aucun site ne correspond, le premier site trouvé après la directive NameVirtualHost sera affiché (ici, www.site1.loc). Veillez donc à bien choisir le premier site de la liste !Le symbole * spécifie que la directive NameVirtualHost s'applique à toutes les adresses IP que peut avoir la machine (par exemple à l'adresse Intranet ET à l'adresse publique)

  •  <VirtualHost *:80> </VirtualHost>:  ce bloc délimite une déclaration de nouvel hôte virtuel. Ce nouvel hôte sera valable sur le port 80 pour toutes les IP. Ce bloc est également appelé un conteneur.

  • ServerName : indique le nom de serveur virtuel, l'URL à laquelle le site doit répondre.

  • ServerAlias : Permet de définir plusieurs noms de site, plusieurs URL pour un même répertoire Web. Dans notre exemple, www.site2.loc et member.site2.loc renvoient tous les deux vers le même site web, vers le même répertoire. En utilisant les fonctionnalités spécifiques à Typo3 (le Virtual Hosting Typo3), il sera cependant possible d'afficher deux pages différentes pour www et pour members. Sans Typo3, les deux URL conduiraient à un même site, ServerAlias définissant en quelque sorte member comme un synonyme de www.

  • Document Root : définit le répertoire de début du site web. C'est dans de répertoire que la page d'accueil (index.php) doit se trouver. Seul ce répertoire et ses répertoires fils seront accessible par le navigateur. C'est généralement une bonne idée que de placer les fichiers  sensibles (mots de passe d'accès à une base de données) en dehors de ce répertoire car ce fichier ne pourra alors pas être lu par un navigateur. Cette pratique ne peut cependant pas être mise en oeuvre dans le cadre de Typo3  puisque l'application doit pouvoir modifier le fichier localconf.php à l'installation.

  • <Directory ></Directory>  :  ce conteneur délimite des instructions qui s'appliqueront uniquement au répertoire nommé dans la balise directory.

  • Options : spécifie des options de configuration pour le répertoire défini dans <Directory> . Notamment :

  • FollowSymLinks qui permet à Apache de suivre les liens symboliques Unix. Si cette directive est absente, Apache ne peut suivre un lien symbolique et ne pourra pas alors accéder à index.php. (Dans la version Unix de Typo3, dummy-3.5.0/index.php est en fait un lien symbolique vers le fichier dummy-3.5.0/tslib/index_ts.php. Pour vous en convaincre, une fois Typo3 decompressé, il suffit de se placer dans le répertoire dummy-3.5.0 et de faire :

$ ls -l index.php

$ lrwxrwxrwx    1 webmaster apache 18 nov  9 15:19 index.php -> tslib/index_ts.php*

  • <IFModule/> : ce conteneur permet de spécifier que les pages de Directory sont accessibles à tous. Cette précision est nécessaire avec la Mandrake 9.2 dont je dispose. Selon votre distribution et/ ou votre installation, cette directive peut être superflue. Notez le conteneur IfModule qui permet de n'appliquer la directive que si le module mod_access est actif. Sans ce conteneur conditionnel et en l'absence du module Apache refuserait de démarrer.

Prendre en compte les modification

Reste maintenant à relancer Apache pour prendre en compte des modifications.

On procéder violemment avec :

# service httpd restart

Sur un serveur sensible (en production) on procédera en 2 temps, vérification des fichiers de configuration apache et relance d'Apache lorsqu'il n'y aura plus de connexions en cours :

# /etc/init.d/httpd configtest

# /etc/init.d/httpd graceful

(ou aussi avec :

# service httpd configtest

# service httpd graceful    )