Comment créer un hôte virtuel dans WampServer
WAMPServer 3 a rendu ce processus beaucoup plus facile !
Vous pouvez presque tout faire à partir d'un utilitaire fourni avec WAMPServer.
-
Créez un dossier à l'intérieur pour contenir votre project.site. Cela peut être sous le
C:\wamp\www\
répertoire ou dans un dossier complètement séparé commeC:\websites
. -
Créez un dossier à l'emplacement que vous avez choisi, par exemple
C:\websites\project1\www
ou sous lec:\wamp\www\project1\www
-
Ouvrez maintenant localhost
wampmanager->localhost
et cliquez sur le lienAdd a Virtual Host
sous la section OUTILS sur la page d'accueil.
Vous verrez une page comme celle-ci :
-
Remplissez les champs comme spécifié par les instructions au-dessus de chaque champ
-
La configuration de l'hôte virtuel aura été créée pour vous.
-
Vous devez maintenant redémarrer le cache DNS. Vous pouvez le faire à partir des menus wampmanager comme ceci
right click wampmanager->Tools->Restart DNS
. Le cache DNS sera redémarré, puis Apache sera également arrêté et redémarré. Lorsque l'icône wampmanager redevient verte, tout est terminé. -
Maintenant, vous devez créer un simple
index.php
fichier ou installez votre site dans le dossier que vous avez créé ci-dessus. -
En supposant que votre VH s'appelait
project.dev
Vous devriez voir ce nom sous Vos hôtes virtuels Section de la page d'accueil de WAMPServer. -
Vous pouvez lancer le site à partir de ce menu, ou simplement utiliser le nouveau nom de domaine dans la barre d'adresse, par exemple
project1.dev
et le site devrait se lancer.
Ancien mécanisme WAMPServer 2.5, ou si vous voulez tout faire manuellement
Il y a eu un changement de concept dans WampServer 2.5 et supérieur et il y a une bonne raison à ce changement !
Dans WampServer, il est désormais FORTEMENT encouragé de créer un Virtual Host pour chacun de vos projets, même si vous les détenez dans un \wamp\www\subfolder
structure.
Documentation des hôtes virtuels
La page d'accueil de WampServer ( \wamp\www\index.php
) s'attend maintenant à ce que vous ayez créé un hôte virtuel pour tous vos projets et ne fonctionnera donc correctement que si vous le faites.
Historique
Afin de faciliter la vie des débutants utilisant WampServer pour apprendre PHP Apache et MySQL, il a été suggéré de créer des sous-dossiers sous le \wamp\www\
dossier.
wamp
|-- www
|-- Chapter1
|-- Chapter2
|-- etc
Ces sous-dossiers s'afficheraient alors sous forme de liens sur la page d'accueil de WampServer sous un menu appelé "Vos projets" et ces liens contiendraient un lien vers localhost/subfoldername
.
Acceptable uniquement pour les didacticiels simples
Cela facilitait la vie du débutant complet et était parfaitement acceptable, par exemple, pour ceux qui suivaient des tutoriels pour apprendre le codage PHP. En fait, si vous utilisiez ce mécanisme, cela causait souvent des problèmes car la configuration des sites en direct ne correspondait pas à votre configuration de développement.
Le problème pour un véritable développement de site Web.
La raison en est bien sûr que le paramètre DocumentRoot par défaut pour wamp est
DocumentRoot "c:/wamp/www/"
quel que soit le nom de votre sous-dossier. Ce ment qui utilisait souvent du code PHP qui interrogeait la structure ou votre site recevait des informations différentes lors de l'exécution sur votre WampServer de développement par rapport à ce qu'il recevrait lors de l'exécution sur un serveur hébergé en direct, où la configuration DocumentRoot pointe vers le dossier en haut de la hiérarchie des fichiers du site Web. Ce type de code existe dans de nombreux frameworks et CMS, par exemple WordPress et Joomla, etc.
Par exemple
Disons que nous avons un projet appelé project1 tenu dans wamp\www\project1
et ne s'exécute pas correctement en tant que localhost/project1/index.php
C'est ce qui serait rapporté par certaines des commandes PHP en question :
$_SERVER['HTTP_HOST'] = localhost
$_SERVER['SERVER_NAME'] = localhost
$_SERVER['DOCUMENT_ROOT'] = c:/wamp/www
Maintenant, si nous avions correctement défini ce site à l'aide d'une définition d'hôte virtuel et l'avons exécuté en tant que http://project1
les résultats sur le site de développement WAMPServer correspondront à ceux reçus dans un environnement hébergé en direct.
$_SERVER['HTTP_HOST'] = project1
$_SERVER['SERVER_NAME'] = project1
$_SERVER['DOCUMENT_ROOT'] = c:/wamp/www/project1
Maintenant, cette différence peut sembler triviale au premier abord, mais si vous deviez utiliser un framework comme WordPress ou l'un des CMS comme Joomla par exemple, cela peut causer et cause des problèmes lorsque vous déplacez votre site vers un serveur en direct.
Comment créer un hôte virtuel dans WampServer
En fait, cela devrait fonctionner de la même manière pour n'importe quel serveur Apache Windows, avec des différences uniquement dans l'endroit où vous pouvez trouver les fichiers de configuration Apache.
Il y a 3 étapes pour créer votre premier hôte virtuel dans Apache, et seulement 2 si vous en avez déjà défini une.
- Créer la ou les définitions d'hôte virtuel
- Ajoutez votre nouveau nom de domaine au fichier HOSTS.
- Décommentez la ligne dans httpd.conf qui inclut le fichier de définition des hôtes virtuels.
Étape 1 , Créer la ou les définitions d'hôte virtuel
Editez le fichier nommé httpd-hosts.conf
dans lequel vit WampServer
\wamp\bin\apache\apache2.4.9\conf\extra\httpd-vhosts.conf
(les numéros de version d'Apache peuvent différer, engagez votre cerveau avant de continuer)
Si c'est la première fois que vous modifiez ce fichier, supprimez le code d'exemple par défaut, il ne sert à rien.
Je suppose que nous voulons créer une définition pour un site appelé projet1 qui vit dans
\wamp\www\project1
Très important, nous devons d'abord nous assurer que localhost fonctionne toujours, c'est donc la première définition VHOST que nous mettrons dans ce fichier.
<VirtualHost *:80>
DocumentRoot "c:/wamp/www"
ServerName localhost
ServerAlias localhost
<Directory "c:/wamp/www">
Options Indexes FollowSymLinks
AllowOverride All
Require local
</Directory>
</VirtualHost>
Maintenant nous définissons notre projet :et bien sûr vous le faites pour chacun de vos projets au fur et à mesure que vous en démarrez un nouveau.
<VirtualHost *:80>
DocumentRoot "c:/wamp/www/project1"
ServerName project1
<Directory "c:/wamp/www/project1">
Options Indexes FollowSymLinks
AllowOverride All
Require local
</Directory>
</VirtualHost>
REMARQUE :Que chaque hôte virtuel possède son propre DocumentRoot
défini. Il existe également de nombreux autres paramètres que vous pouvez ajouter à une définition d'hôtes virtuels, consultez la documentation Apache.
Petit aparté
Le fonctionnement des hôtes virtuels dans Apache :la première définition de ce fichier sera également le site par défaut. Par conséquent, si le nom de domaine utilisé dans le navigateur ne correspond à aucun domaine hébergé virtuellement réellement défini, faire de localhost le premier domaine du fichier fera donc c'est le site qui est chargé si une tentative de piratage utilise simplement votre adresse IP. Donc, si nous nous assurons que la sécurité Apache pour ce domaine est TOUJOURS SET TO
Require local
tout piratage occasionnel à partir d'une adresse externe recevra une erreur et n'entrera pas dans votre PC, mais si vous orthographiez mal un domaine, la page d'accueil de WampServer s'affichera, car vous êtes sur le même PC que WampServer et donc local
.
Étape 2 :
Ajoutez votre nouveau nom de domaine au fichier HOSTS. Nous devons maintenant ajouter le nom de domaine que nous avons utilisé dans la définition de l'hôte virtuel au fichier HOSTS afin que Windows sache où le trouver. Ceci est similaire à la création d'un enregistrement DNS A, mais il n'est visible dans ce cas que sur ce PC spécifique.
Modifier C:\windows\system32\drivers\etc\hosts
Le fichier n'a pas d'extension et devrait le rester. Méfiez-vous du bloc-notes, car il peut essayer d'ajouter un .txt
extension si vous n'avez pas de meilleur éditeur. Je vous suggère de télécharger Notepad++, c'est gratuit et c'est un très bon éditeur.
Il s'agit également d'un fichier protégé, vous devez donc le modifier avec des privilèges d'administrateur, alors lancez votre éditeur en utilisant le Exécuter en tant qu'administrateur option de menu.
Le fichier hosts devrait ressembler à ceci lorsque vous avez terminé ces modifications
127.0.0.1 localhost
127.0.0.1 project1
::1 localhost
::1 project1
Notez que vous devriez avoir des définitions ici pour l'adresse de bouclage IPV4 127.0.0.1
ainsi que l'adresse de bouclage IPV6 ::1
car Apache est désormais compatible avec IPV6 et le navigateur utilisera soit IPV4, soit IPV6, soit les deux. Je n'ai aucune idée de comment il décide lequel utiliser, mais il peut utiliser l'un ou l'autre si la pile IPV6 est activée, et la plupart des systèmes d'exploitation Windows le font à partir de XP SP3.
Maintenant, nous devons dire à Windows de rafraîchir son cache de nom de domaine, alors relancez une fenêtre de commande en utilisant le Exécuter en tant qu'administrateur à nouveau l'option de menu et procédez comme suit.
net stop dnscache
net start dnscache
Cela force Windows à vider son cache de nom de domaine et à le recharger, en rechargeant il relira le fichier HOSTS donc maintenant il connaît le domaine project1
.
Étape 3 :Décommentez la ligne dans httpd.conf qui inclut le fichier de définition des hôtes virtuels.
Modifiez votre httpd.conf, utilisez les menus de wampmanager.exe pour vous assurer que vous modifiez le bon fichier.
Trouvez cette ligne dans httpd.conf
# Virtual hosts
#Include conf/extra/httpd-vhosts.conf
Et supprimez simplement le #
pour décommenter cette ligne.
Pour activer ce changement en vous exécutant Apache, nous devons maintenant arrêter et redémarrer le service Apache.
wampmanager.exe -> Apache -> Service -> Restart Service
Maintenant, si l'icône WAMP dans la barre d'état système ne redevient pas VERTE, cela signifie que vous avez probablement fait quelque chose de mal dans le \wamp\bin\apache\apache2.4.9\conf\extra\httpd-hosts.conf
fichier.
Si c'est le cas, voici un mécanisme utile pour découvrir ce qui ne va pas. Il utilise une fonctionnalité de l'exe Apache (httpd.exe) pour vérifier ses fichiers de configuration et signaler les erreurs par nom de fichier et numéros de ligne.
Lancez une fenêtre de commande.
cd \wamp\bin\apache\apache2.4.9\bin
httpd -t
Corrigez donc les erreurs et refaites le test jusqu'à ce que vous obteniez le résultat
Syntax OK
Maintenant, il y a encore une chose.
Il y a en fait 2 nouveaux éléments de menu dans le système de menus wampmanager. L'un appelé "Mes projets" qui est activé par défaut.Et un second, appelé "Mes hôtes virtuels" , qui n'est pas activé par défaut.
"Mes projets" listera tous les sous-répertoires du répertoire \wamp\www et fournira un lien pour lancer le site dans ce sous-répertoire. Comme je l'ai dit plus tôt, il lance "project1" et non "localhost/project1" afin de rendre le travail de lien, nous devons créer une définition d'hôte virtuel pour que ce lien lance réellement ce site dans votre navigateur, sans la définition d'hôte virtuel, il est probable qu'il lancera une recherche sur le Web pour le nom du site en tant que mot-clé ou qu'il renverra simplement une condition de site introuvable.
L'élément de menu "Mes hôtes virtuels" est un peu différent. Il recherche le fichier utilisé pour définir les hôtes virtuels (nous y reviendrons dans une minute) et crée des liens de menu pour chaque paramètre ServerName qu'il trouve et crée un élément de menu pour chacun. Cela peut sembler un peu déroutant car une fois que nous créons une définition d'hôte virtuel pour les sous-répertoires du dossier \wamp\www certains éléments apparaîtront à la fois dans le menu "Mes projets" et dans le menu "Mes hôtes virtuels".
Comment puis-je activer cet autre menu "Mes hôtes virtuels" ?
- Faites une sauvegarde du fichier \wamp\wampmanager.tpl, juste au cas où vous feriez une erreur, c'est un fichier très important.
- Modifier le \wamp\wampmanager.tpl
- Trouvez ce paramètre
;WAMPPROJECTSUBMENU
, c'est dans la section '[Menu.Left]'. - Ajouter ce nouveau paramètre
;WAMPVHOSTSUBMENU
avant ou après le;WAMPPROJECTSUBMENU
paramètre. - Enregistrez le fichier.
- Maintenant, faites un clic droit sur l'icône wampmanager et sélectionnez "Actualiser". Si cela n'ajoute pas le menu, "quittez" et redémarrez wampmanager.
Grande note Le nouveau menu n'apparaîtra que si vous avez déjà défini des hôtes virtuels ! Sinon, vous ne verrez aucune différence tant que vous n'aurez pas défini un VHOST.
Maintenant, si vous prenez ceci à son extension logique
Vous pouvez maintenant déplacer le code de votre site Web complètement en dehors de \wamp\
structure de dossier en modifiant simplement le paramètre DocumentRoot dans la définition VHOST. Ainsi, par exemple, vous pourriez faire ceci :
Créez un dossier sur le disque wamp ou tout autre disque (attention au lecteur réseau, c'est un peu plus compliqué)
D:
MD websites
CD websites
MD example.com
CD example.com
MD www
Vous copiez maintenant le code de votre site ou commencez à le créer dans \websites\example.com\www
dossier et définissez votre VHOST comme ceci :
<VirtualHost *:80>
DocumentRoot "d:/websites/example.com/www"
ServerName example.dev
ServerAlias www.example.dev
<Directory "d:/websites/example.com/www">
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
php_flag display_errors Off
php_flag log_errors On
php_value max_upload_size 40M
php_value max_execution_time 60
php_value error_log "d:/wamp/logs/example_com_phperror.log"
</VirtualHost>
Ajoutez ensuite ce nouveau domaine de développement au fichier HOSTS :
127.0.0.1 localhost
::1 localhost
127.0.0.1 project1
::1 project1
127.0.0.1 example.dev
::1 example.dev
REMARQUE :Ce n'est pas une bonne idée d'utiliser un nom de serveur ou un alias de serveur identique à votre nom de domaine en direct, car si nous avions utilisé example.com comme nom de serveur, cela signifierait que nous ne pourrions plus accéder à la vraie vie site à partir de ce PC car il dirigerait example.com vers 127.0.0.1, c'est-à-dire ce PC et non sur Internet.
AUSSI :voyez que j'ai autorisé l'accès à ce site depuis Internet à partir des définitions VHOST, cette modification ne s'appliquera qu'à ce site et à aucun autre. Très utile pour permettre à un client de visualiser vos modifications pendant environ une heure sans avoir à les copier sur le serveur en direct. Cela signifie que nous devons éditer ce fichier manuellement pour activer et désactiver cet accès plutôt que d'utiliser le Put Online/ Élément de menu hors ligne sur wampmanager.
J'ai également ajouté quelques modifications à la configuration PHP, encore une fois, cela ne s'appliquera qu'à ce site. Très utile lors de la maintenance d'un site avec des exigences spécifiques contrairement à tous les autres sites que vous gérez. une longue page quelque part et elle est très mal écrite et ne fonctionnera pas avec des erreurs affichées sur le navigateur sans faire un horrible gâchis de la page. Croyez-moi, des sites comme celui-ci existent et les gens veulent toujours qu'ils soient maintenus mal . Mais cela signifie que nous n'avons qu'à modifier ces paramètres pour ce site spécifique et non globalement pour tous les sites virtuels fonctionnant sur WampServer.