C'est tout à fait possible. Nous allons prendre un cas général avec Apache ici.
Disons que vous êtes un grand fan de Symfony2 et que vous souhaitez accéder à votre site symfony à l'adresse suivante http://symfony.local/
à partir de 4 ordinateurs différents (le principal qui héberge votre site web, ainsi qu'un Mac, un Windows et une distro Linux connectés (sans fil ou non) à l'ordinateur principal.
Croquis général :
1 Configurer un hôte virtuel :
Vous devez d'abord configurer un hôte virtuel dans votre serveur Apache. httpd-vhosts.conf
fichier. Sur XAMP vous pouvez trouver ce fichier ici : C:\xampp\apache\conf\extra\httpd-vhosts.conf
. Sur MAMP vous pouvez trouver ce fichier ici : Applications/MAMP/conf/apache/extra/httpd-vhosts.conf
. Cette étape prépare le serveur Web de votre ordinateur à traiter les données suivantes symfony.local
demandes. Vous devez fournir le nom de l'hôte virtuel ainsi que le dossier racine/principal de votre site Web. Pour ce faire, ajoutez la ligne suivante à la fin de ce fichier. Vous devez modifier le champ DocumentRoot
à l'endroit où se trouve votre dossier principal. Ici, j'ai pris /Applications/MAMP/htdocs/Symfony/
comme racine de mon site web.
<VirtualHost *:80>
DocumentRoot "/Applications/MAMP/htdocs/Symfony/"
ServerName symfony.local
</VirtualHost>
2 Configurez votre fichier d'hôtes :
Pour que le client (votre navigateur dans ce cas) comprenne ce qu'il faut faire. symfony.local
signifie en réalité que vous devez modifier le fichier hosts de votre ordinateur. Chaque fois que vous tapez une URL dans votre navigateur, votre ordinateur essaie de comprendre ce qu'elle signifie ! symfony.local
ne signifie rien pour un ordinateur. Il va donc essayer de résoudre le nom symfony.local
à une adresse IP. Pour ce faire, il consulte d'abord le fichier hosts de votre ordinateur pour voir s'il peut faire correspondre une adresse IP à ce que vous avez tapé dans la barre d'adresse. S'il ne le peut pas, il demandera alors Serveurs DNS . L'astuce consiste à ajouter le texte suivant à votre fichier hosts.
- Sur MAC ce fichier est en
/private/etc/hosts
;
- Sur LINUX ce fichier est en
/etc/hosts
;
- Sur Windows ce fichier est en
\Windows\system32\private\etc\hosts
;
- Sur Windows 7 ce fichier est en
\Windows\system32\drivers\etc\hosts
;
- Sur Windows 10 ce fichier est en
\Windows\system32\drivers\etc\hosts
;
Hosts file
##
# Host Database
# localhost is used to configure the loopback interface
##
#...
127.0.0.1 symfony.local
À partir de maintenant, chaque fois que vous tapez symfony.local sur cet ordinateur, votre ordinateur utilisera l'interface de bouclage pour se connecter à symfony.local. Il comprendra que vous voulez travailler sur localhost (127.0.0.1).
3 Accès symfony.local
depuis un autre ordinateur :
Nous arrivons enfin à votre question principale qui est :
Comment puis-je maintenant accéder à mon site web à partir d'un autre ordinateur ?
Eh bien, c'est maintenant facile ! Nous avons juste besoin de dire aux autres ordinateurs comment ils pourraient trouver symfony.local
! Comment faire ?
3a Obtenez l'adresse IP de l'ordinateur qui héberge le site Web. :
Nous devons d'abord connaître l'adresse IP de l'ordinateur qui héberge le site web (celui sur lequel nous travaillons depuis le début). Dans le terminal, sur MAC et LINUX type ifconfig |grep inet
le WINDOWS
type ipconfig
. Supposons que l'adresse IP de cet ordinateur soit 192.168.1.5 .
3b Modifiez le fichier hosts de l'ordinateur à partir duquel vous essayez d'accéder au site Web. :
Encore une fois, sur MAC ce fichier est en /private/etc/hosts
; sur LINUX en /etc/hosts
et ainsi de suite Windows en \Windows\system32\private\etc\hosts
(si vous utilisez Windows 7 ce fichier est en \Windows\system32\drivers\etc\hosts
).. L'astuce consiste maintenant à utiliser l'adresse IP de l'ordinateur auquel nous essayons d'accéder/de parler :
##
# Host Database
# localhost is used to configure the loopback interface
##
#...
192.168.1.5 symfony.local
4 Enfin, appréciez les résultats dans votre navigateur
Vous pouvez maintenant aller dans votre navigateur et taper http://symfony.local
pour voir joliment votre site web sur différents ordinateurs ! Notez que vous pouvez appliquer la même stratégie si vous êtes un utilisateur OSX pour tester votre site web sur Internet Explorer via Virtual Box (si vous ne voulez pas utiliser un ordinateur Windows). Ceci est magnifiquement expliqué dans Créer votre environnement de test Windows / IE sur OSX .
Vous pouvez également accéder à votre serveur local depuis des appareils mobiles.
Vous vous demandez peut-être comment accéder à votre site web localhost depuis un appareil mobile. Dans certains cas, vous ne pourrez pas modifier le fichier hosts de votre appareil (iPhone, iPad...) (à l'exception du jailbreaking).
La solution est alors d'installer un serveur proxy sur la machine qui héberge le site web et de se connecter à ce proxy depuis votre iphone. C'est en fait très bien expliqué dans les posts suivants et ce n'est pas très long à mettre en place :
Sur un Mac, je recommande : Tester un site web Mac OS X en utilisant un nom d'hôte local sur un appareil mobile : Utilisation de SquidMan comme un proxy. C'est une solution 100% gratuite. Certaines personnes peuvent également utiliser Charles comme un serveur proxy mais c'est 50$.
Sous Linux, vous pouvez adapter la méthode Mac OS ci-dessus en utilisant Calamar comme un serveur proxy.
Sous Windows, vous pouvez le faire en utilisant Fiddler . La solution est décrite dans le post suivant : Surveiller le trafic de l'iPhone avec Fiddler
Modifier le 23/11/2017 : Hey je ne veux pas modifier mon fichier Hosts.
@Dre. Y a-t-il un moyen d'accéder au site Web depuis un autre ordinateur sans avoir à sans modifier manuellement le fichier d'hôte ? Disons que j'ai 100 ordinateurs qui souhaitent accéder au site web
C'est une question intéressante, et comme elle est liée à la question du PO, laissez-moi vous aider.
Vous devrez effectuer un changement sur votre réseau afin que chaque machine sache où est hébergé votre site web. La plupart des routeurs ordinaires ne font pas ça. donc vous devrez gérer votre propre Serveur DNS sur votre réseau.
Supposons que vous ayez un routeur (192.168.1.1). Ce routeur possède un serveur DHCP et alloue des adresses IP à 100 machines sur le réseau.
Maintenant, disons que vous avez, comme ci-dessus, sur le même réseau, une machine à 192.168.1.5
qui a votre site web. Nous appellerons cette machine <a href="https://en.wikipedia.org/wiki/Pompei" rel="noreferrer">pompei</a> .
$ echo $HOSTNAME
pompei
Comme avant, cette machine pompei sur 192.168.1.5
exécute un Serveur HTTP qui sert votre site web symfony.local
.
Pour que chaque machine sache que symfony.local
est hébergé sur pompei nous avons maintenant besoin d'un serveur DNS personnalisé sur le réseau qui sait où symfony.local
est hébergé. Les appareils du réseau seront alors en mesure de résoudre les noms de domaine servis par pompei en interne.
3 étapes simples.
Step 1: DNS Server
Configurez un serveur DNS sur votre réseau. Mettons-le sur pompei par commodité et utiliser quelque chose comme dnsmasq .
Dnsmasq fournit Redirection du système de nom de domaine (DNS) , ... .
Nous voulons pompei pour exécuter DNSmasq afin de gérer les requêtes DNS Hey, pompei, where is symfony.local
et répondre Hey, sure think, it is on 192.168.1.5 but don't take my word for it
.
Allez-y, installez dnsmasq, le fichier de configuration de dnsmasq est typiquement dans /etc/dnsmasq.conf
en fonction de votre environnement.
J'utilise personnellement no-resolv
et les serveurs de google server=8.8.8.8 server=8.8.8.4
.
*Note:* Redémarrez TOUJOURS DNSmasq si vous modifiez le fichier /etc/hosts, sinon aucun changement ne sera pris en compte.
Step 2: Firewall
Pour travailler, pompei doit autoriser les paquets "domaine" entrants et sortants, qui vont de et vers le port 53. Bien entendu ! Ce sont des paquets DNS et si pompei ne les autorise pas, il n'y a aucun moyen pour votre serveur DNS d'être atteint. Allez-y et ouvrez le port 53. Sous Linux, vous utiliserez classiquement iptables
pour ça.
Je partage ce que j'ai trouvé, mais vous devrez très probablement vous plonger dans votre pare-feu et tout comprendre.
#
# Allow outbound DNS port 53
#
iptables -A INPUT -p tcp --dport 53 -j ACCEPT
iptables -A INPUT -p udp --dport 53 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 53 -j ACCEPT
iptables -A OUTPUT -p udp --dport 53 -j ACCEPT
iptables -A INPUT -p udp --sport 53 -j ACCEPT
iptables -A INPUT -p tcp --sport 53 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 53 -j ACCEPT
iptables -A OUTPUT -p udp --sport 53 -j ACCEPT
Step 3: Router
Dites à votre routeur que votre serveur dns est sur 192.168.1.5
maintenant. La plupart du temps, vous pouvez vous connecter à votre routeur et le modifier manuellement très facilement.
C'est ça, quand vous êtes sur une machine et que vous demandez symfony.local
il vous demandera Serveur DNS où symfony.local
est hébergé, et dès qu'il aura reçu sa réponse du serveur DNS, il enverra alors l'adresse appropriée à l'adresse Demande HTTP à pompei sur 192.168.1.5
.
Je vous laisse jouer avec ça et profiter du voyage. Ces deux étapes sont les principales directives, vous devrez donc déboguer et passer quelques heures si c'est la première fois que vous le faites. Disons qu'il s'agit d'un réseau un peu plus avancé, il y a un serveur DNS primaire, des serveurs DNS secondaires, etc. . Bonne chance !