211 votes

Comment puis-je me connecter à cet hôte local à partir d'un autre ordinateur sur le même réseau ?

Je travaille actuellement sur un projet et j'aimerais le tester sur deux ordinateurs portables à la maison, l'un se connectant à l'hôte local de l'autre. J'utilise XAMPP. Comment dois-je m'y prendre ?

328voto

Patt Points 5838

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 :

enter image description here


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 DNSsymfony.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 !

0 votes

Belle réponse. J'ai suivi la dernière partie jusqu'à ce que j'arrive à "Monitoring iPhone traffic with Fiddler". Il pointe vers la page d'accueil de Fiddler. Ce devrait être le lien : conceptdev.blogspot.com/2009/01/

0 votes

J'ai modifié le fichier d'hôte mais le problème est que j'ai également un serveur IIS en cours d'exécution donc mon "localhost" ou "127.0.0.1" pointe vers le serveur IIS ; comment puis-je le remplacer par le serveur xamp ?

0 votes

Existe-t-il également un moyen de le faire sans avoir à l'ajouter à votre propre fichier d'hôte ?

23voto

Codrin Eugeniu Points 1107

À condition que les deux machines soient dans le même groupe de travail, ouvrez cmd.exe sur la machine à laquelle vous voulez vous connecter, tapez ipconfig et notez l'IP à la IPv4 Address ligne.

Ensuite, sur la machine avec laquelle vous voulez vous connecter, utilisez http:// + the IP of the target machine .

Ça devrait le faire.

5 votes

Cela fonctionne si le port 80 est le port de l'application (c'est normalement le cas), mais n'oubliez pas que nous pouvons utiliser un autre port. Cela signifie http:// + l'IP de la machine cible + ":PORT_NUMBER".

0 votes

C'est la solution simple que je cherchais. @Codrin Eugeniu : Veuillez envisager d'incorporer la suggestion ":PORT_NUMBER" dans votre réponse comme mentionné par ggderas. Pour moi, cela était nécessaire car je me suis connecté via le port 8088 en utilisant Apache Superset.

5voto

KarlosFontana Points 113

Il se peut que vos pare-feu vous empêchent d'accéder au serveur web de l'hôte local.
Mettez les adresses IP des deux ordinateurs de votre sécurité internet antivirus sécurité réseau comme adresses IP sûres si nécessaire.
Comment trouver l'adresse IP de votre PC sous Windows : Démarrer > (Exécuter) tapez : cmd (Entrée)
(Cela ouvre l'invite de commande de la boîte noire)
tapez ipconfig (Enter)
Disons que votre serveur web Apache ou IIS est installé sur votre PC : 192.168.0.3
et vous voulez accéder à votre serveur web avec votre ordinateur portable. (l'IP de l'ordinateur portable est 192.168.0.5)
Sur votre PC, vous tapez : http://localhost/ dans votre navigateur Firefox ou Internet Eplorer pour accéder à vos données sur votre serveur web.
Sur votre ordinateur portable, vous tapez http://192.168.0.3/ pour accéder à votre serveur web sur votre PC.

Pour que tout cela fonctionne, vous devez avoir installé correctement un serveur web (par exemple, IIS, Apache, XAMP, WAMP, etc.).

Si cela ne fonctionne pas, essayez d'envoyer un ping à votre PC depuis votre ordinateur portable :
Ouvrez le propmt de commande sur votre ordinateur portable : Démarrer > cmd (Enter)
ping 192.168.1.3 (Entrer)
Si le ping échoue, cela signifie que des pare-feu bloquent votre connexion ou que votre câblage réseau est défectueux. Redémarrez votre modem ou votre commutateur réseau et vos machines.
Fermez les programmes tels que les programmes de chat qui utilisent vos ports.
Vous pouvez également essayer un numéro de port différent : http:192.168.0.3:80 ou http:192.168.0.3:81 ou tout autre numéro aléatoire à la fin.

1 votes

Merci @KarlosFontana - vous venez de répondre à ma question également. J'avais des problèmes pour connecter mon iPhone à un serveur que j'ai écrit sur le bureau. L'iPhone était connecté au WiFi de mon PC. Votre dernière ligne a répondu à ma question :-)

4voto

ken Points 489

Il s'agit d'une remarque secondaire si l'on ne peut toujours pas accéder à localhost depuis un autre appareil après avoir suivi l'étape ci-dessus. Cela peut être dû au fait que le fichier apache ports.conf a été configuré pour servir localement (127.0.0.1) et non vers l'extérieur.

vérifiez ce qui suit, (pour ubuntu apache2)

  $ cat /etc/apache2/ports.conf

si les éléments suivants sont définis,

NameVirtualHost *:80  
Listen 127.0.0.1:80  

puis remettez la valeur par défaut

NameVirtualHost *:80  
Listen 80

0voto

adelphus Points 1463

Vous ne pouvez pas vous connecter à localhost sur une autre machine. localhost fait toujours référence à la machine hôte locale. C'est un système de dénomination un peu fou, non ?

Si vous voulez vous connecter à une autre machine sur un réseau, vous devez remplacer localhost par le nom de réseau (ou l'adresse IP) de la machine en question.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X