Créer des hôtes virtuels sur votre serveur web apache
Lors de l’utilisation d’un webserver de développement en local, il est parfois utile de pouvoir laisser les sites dans un dossier autres que le dossier htdocs d’apache. De plus, certains Framework comme symfony nécessite la configuration d’un virtualhost (hôte virtuel) afin que lors du lancement du site, les dépendances du framework soit appelées correctement. Pour cela, il est nécessaire de mettre en place un ou plusieurs virtualhosts. Comme cela devient de plus en plus un standard, nous allons utiliser la méthode d’hôtes virtuels basé sur le nom.
Déclarer les virtualhosts
Afin de déclarer nos virtualhosts, il faut créer un fichier de config contenant les détails de chacun. Dans certaines mouture d’apache, il est possible que ce fichier existe déjà. Il peut se trouver à cet endroit :
$INSTALL_DIR/apache2/extra/httpd-vhosts.conf
Si ce n’est pas le cas, il n’y a cas le créer et ensuite le remplir avec les déclarations dont voici un exemple :
ServerAdmin votre-mail@monsite1.local ServerName monsite1.local ServerAlias www.monsite1.local DocumentRoot /Users/me/Sites/monsite1 Options FollowSymLinks AllowOverride None Options Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny allow from all ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ <Directory "/usr/lib/cgi-bin"> AllowOverride None Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch Order allow,deny Allow from all 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 Alias /doc/ "/usr/share/doc/" <Directory "/usr/share/doc/"> Options Indexes MultiViews FollowSymLinks AllowOverride None Order deny,allow Deny from all Allow from 127.0.0.0/255.0.0.0 ::1/128
Pour plus d’informations sur la déclaration des virtualhosts, référez-vous à cet article : wiki apache virtual hosts
Modifier le fichier httpd.conf
Le fichier httpd.conf est le fichier de configuration d’apache.
$INSTALL_DIR/apache2/httpd.conf
Selon les versions d’apache2, ce fichier contient déjà un lien vers le fichier de configuration des virtualhosts.
#modifier ce path en fonction de votre installation d'apache Include $INSTALL_DIR/apache2/extra/httpd-vhosts.conf
Il est également possible de déclarer les virtualhosts directement dans le fichier httpd.conf, mais afin d’améliorer la lisibilité de celui-ci, il vaut mieux séparer ces contenus.
En cas d’erreur 403, il peut être nécessaire de changer l’utilisateur par défaut du serveur, afin qu’il puisse accéder au répertoire. Pour cela, dans ce même fichier, modifiez la configuration d’utilisateur et de groupe. Dans l’idéal, utilisez un user dédié au serveur.
# User/Group: The name (or #number) of the user/group to run httpd as. # It is usually good practice to create a dedicated user and group for # running httpd, as with most system services. # User yann Group admin
Référencer nos sites dans le fichier hosts
Le fichier hosts est utilisé par le système d’exploitation lors de l’accès à Internet. Ce fichier est consulté avant le DNS afin de rediriger, bloquer ou faciliter l’accès à un site. Il n’est pas placé au même endroit selon les OS.
Sous Windows version 32bits :
C:\windows\system32\drivers\etc\hosts
sous Windows version 64bits :
C:\windows\SysWOW64\driver\etc\hosts
sous Linux :
/etc/hosts
sous Mac OS
/private/etc/hosts
Afin que vos url soient comprises comme des url en local, il est nécessaire de les déclarer dans le fichier hosts afin d’effectuer une redirection. Dans notre cas présent, il faudra y ajouter la ligne suivante :
127.0.0.1 monsite.local
S’il y’a plusieurs virtualhosts, il sera nécessaire de le faire pour chaque entrée :
127.0.0.1 monsite1.local 127.0.0.1 monsite2.local 127.0.0.1 monsite3.local
Redémarrer votre serveur web
Suite à la modification du fichier de configuration, il est nécessaire de restarter le serveur apache. En effet, celui-ci charge la configuration au démarrage, et ne connait donc pas encore nos dernières modifications. Un redémarrage est nécessaire après chaque modification d’un fichier de configuration.
En cas de problème, on peut avoir un état des hôtes virtuels chargés par le serveur, à l’aide de la commande :
$INSTALL_DIR/bin/httpd -S