Il va s'agir ici d'indiquer comment configurer Apache pour avoir plusieurs serveurs virtuels sur la même machine. C'est encore un exposé de plus, mais il expose ma façon de faire pour que je ne l'oublie plus et n'aie plus à potasser la doc de référence d'Apache pendant une demi-journée...
Cette configuration concerne Apache 2.4 ! Essayer une config Apache 2.0 ou 2.2 sur une Apache 2.4 mène le plus souvent à une erreur 403 (droits d'accès insuffiants -- parce que la syntaxe afférente a changé).
Le système hôte est une debian ou un dérivé comme Ubuntu ou Linux Mint.
Pour créer le serveur appli.chez.moi sur son serveur personnel il faut déjà permettre la résolution du nom appli.chez.moi et si on n'a pas de dns on va insérer dans /etc/hosts
la ligne suivante (avec une tabulation avant l'adressi ip) :
appli.chez.moi 127.0.0.1
On peut mettre sa vraie adresse ip à la place de 127.0.0.1 si on veut mais ça ne change rien. Cela suffit pour être accessiblle à une machine externe à la condition qu'elle-même puisse modifier pareillement son fichier hosts, avec la vraie adresse ip de votre serveur toutefois (ce n'est pas possible sans avoir les droits administrateur sur la machine externe). Pour windows xp, il s'agit du fichier C:\WINDOWS\system32\drivers\etc\hosts
qui a la même syntaxe que sous linux.
Il faut maintenant créer le fichier /etc/apache2/sites-available/appli
(on peut aussi le nommer appli.chez.moi
et on peut ajouter une extension .conf
). Recopiez y le contenu ci-dessous.
>
<VirtualHost *:80>
ServerName appli.chez.moi
DocumentRoot /mnt/servers/appli
DirectoryIndex index.php
<Directory />
Options none
AllowOverride None
Require all denied
</Directory>
<Directory /mnt/servers/appli>
Require all granted
</Directory>
ErrorLog /var/log/apache2/appli_error.log
LogLevel warn
CustomLog /var/log/apache2/appli_access.log combined
</VirtualHost>
Cette config est pour un serveur php basique sans framework. Avec un framework, il faut pointer sur un sous répertoire et le fichier par défaut n'est en général toujours index.ph«/code>p aussi voyez ci-après ce que cela donnerait si, par exemple, appli.chez.moi
était développée avec symphony 2.4.
<VirtualHost *:80>
ServerName appli.chez.moi
DocumentRoot /mnt/servers/appli/web
DirectoryIndex app_dev.php
<Directory />
Options none
AllowOverride None
Require all denied
</Directory>
<Directory /mnt/servers/appli/web>
Require all granted
</Directory>
ErrorLog /var/log/apache2/appli_error.log
LogLevel warn
CustomLog /var/log/apache2/appli_access.log combined
</VirtualHost>
Et voici le même exemple avec CodeIgniter mais en plus une gestion avec subversion (on veut lancer la version du trunk qui est dans /mnt/servers/appli/trunk
).
<VirtualHost *:80>
ServerName appli.chez.moi
DocumentRoot /mnt/servers/appli/trunk/web
DirectoryIndex index.php
<Directory />
Options none
AllowOverride None
Require all denied
</Directory>
<Directory /mnt/servers/appli/trunk/web>
Require all granted
</Directory>
ErrorLog /var/log/apache2/appli_error.log
LogLevel warn
CustomLog /var/log/apache2/appli_access.log combined
</VirtualHost>
Bon, ces fichiers interdisent l'emploi de fichiers .htacess. On peut changer cela en ajoutant une ligne
AllowOverride all
dans
<Directory /mnt/servers/appli/trunk/web>
(ou quelque chose de moins ouvert que
all
).
Ces configurations interdisent l'emploi de liens symboliques. Je n'ai pas réussi à avoir une configuration comme il est recommandé d'en avoir avec des liens symboliques. Bon, en fait, je me suis rendu compte que je pouvais m'en passer, alors je m'en passe. Et d'autant mieux que c'est ce qu'Apache recommande.
Pour que le site soit disponible il faut maintenant lancer la commande
sudo a2ensite appli
(ou
appli.chez.moi
le cas échéant). Et enfin relancer apache :
sudo service apache2 restart
et alors on pourra voir sa page d'accueil en visitant la page http://appli.chez.moi avec son navigateur.