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

172

Je travaille actuellement sur un projet et j'aimerais le tester sur deux ordinateurs portables à la maison où un ordinateur portable se connecte à l'hôte local de l'autre. J'utilise XAMPP. Comment puis-je faire cela?

user1219572
la source

Réponses:

284

C'est certainement 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 Web symfony à http://symfony.local/partir de 4 ordinateurs différents (le principal hébergeant votre site Web, ainsi qu'un Mac, un Windows et une distribution Linux connectés (sans fil ou non) à l'ordinateur principal.

Croquis général:

entrez la description de l'image ici


1 Configurer un hôte virtuel :

Vous devez d'abord configurer un hôte virtuel dans votre httpd-vhosts.conffichier apache . 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 pour le traitement des symfony.localdemandes. 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 remplacer le DocumentRootpar 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 que symfony.localcela signifie réellement, vous devez modifier le fichier hosts sur votre ordinateur. Chaque fois que vous tapez une URL dans votre navigateur, votre ordinateur essaie de comprendre ce que cela signifie! symfony.localne veut rien dire pour un ordinateur. Il essaiera donc de résoudre le nom symfony.localen une adresse IP. Il le fera en examinant d'abord le fichier hosts sur votre ordinateur pour voir s'il peut faire correspondre une adresse IP à ce que vous avez tapé dans la barre d'adresse. Si ce n'est pas le cas, il demandera aux serveurs DNS . L'astuce ici est d'ajouter ce qui suit à votre fichier hosts.

  • Sur MAC , ce fichier est dans /private/etc/hosts;
  • Sur LINUX , ce fichier est au format/etc/hosts ;
  • Sous WINDOWS , ce fichier est au \Windows\system32\private\etc\hostsformat;
  • Sous WINDOWS 7 , ce fichier est dans \Windows\system32\drivers\etc\hosts;
  • Sous WINDOWS 10 , ce fichier est dans \Windows\system32\drivers\etc\hosts;

Hosts file

##
# Host Database
# localhost is used to configure the loopback interface
##
#...
127.0.0.1           symfony.local

A 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 souhaitez travailler sur localhost (127.0.0.1).

3 Accès symfony.localdepuis un autre ordinateur :

Nous arrivons enfin à votre question principale qui est:

Comment puis-je maintenant accéder à mon site Web via un autre ordinateur?

Eh bien, c'est maintenant facile! Nous avons juste besoin de dire aux autres ordinateurs comment ils ont pu trouver symfony.local! Comment faisons-nous cela?

3a Obtenez l'adresse IP de l'ordinateur hébergeant le site Web :

Nous devons d'abord connaître l'adresse IP de l'ordinateur qui héberge le site Web (celle sur laquelle nous travaillons depuis le tout début). Dans le terminal, sur MAC et LINUX de type ifconfig |grep inet, sur le WINDOWStype ipconfig. Supposons que l'adresse IP de cet ordinateur est 192.168.1.5 .

3b Modifiez le fichier hosts sur 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 , dans /etc/hosts; et sous WINDOWS , dans \Windows\system32\private\etc\hosts(si vous utilisez WINDOWS 7 , ce fichier est dans \Windows\system32\drivers\etc\hosts) .. L'astuce consiste maintenant à utiliser l'adresse IP de l'ordinateur auquel nous essayons d'accéder / parler:

##
# Host Database
# localhost is used to configure the loopback interface
##
#...
192.168.1.5         symfony.local

4 Profitez enfin des résultats dans votre navigateur

Vous pouvez maintenant aller dans votre navigateur et taper http://symfony.localpour voir magnifiquement 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 souhaitez pas utiliser un ordinateur Windows). Ceci est magnifiquement expliqué dans Création de votre environnement de test Windows / IE sur OSX .


Vous pouvez également accéder à votre hôte local à partir d'appareils mobiles

Vous vous demandez peut-être comment accéder à votre site Web localhost à partir d'un appareil mobile. Dans certains cas, vous ne pourrez pas modifier le fichier hosts (iPhone, iPad ...) sur votre appareil (hors jailbreak).

Eh bien, la solution consiste alors à installer un serveur proxy sur la machine hébergeant le site Web et à se connecter à ce proxy depuis votre iPhone. C'est en fait très bien expliqué dans les articles suivants et n'est pas si long à mettre en place:

Sur un Mac, je recommanderais: Tester un site Web Mac OS X en utilisant un nom d'hôte local sur un appareil mobile : Utiliser SquidMan comme proxy. C'est une solution 100% gratuite. Certaines personnes peuvent également utiliser Charles comme serveur proxy mais c'est 50 $.

Sous Linux, vous pouvez adapter la méthode Mac OS ci-dessus en utilisant Squid comme serveur proxy.

Sous Windows, vous pouvez le faire en utilisant Fiddler . La solution est décrite dans l'article suivant: Surveillance du trafic iPhone avec Fiddler


Edit 23/11/2017: Hey je ne veux pas modifier mon fichier Hosts

@Dre. Existe-t-il un moyen possible d'accéder au site Web à partir d'un autre ordinateur en ne modifiant pas le fichier hôte manuellement? disons que j'ai 100 ordinateurs voulaient accéder au site Web

C'est une question intéressante, et comme elle est liée à la question OP, permettez-moi de vous aider.

Vous auriez à faire un changement sur votre réseau pour que chaque machine sache où votre site Web est hébergé. La plupart des routeurs quotidiens ne le font pas , vous devrez donc exécuter votre propre serveur DNS sur votre réseau.

Imaginons que vous ayez un routeur (192.168.1.1). Ce routeur dispose d'un serveur DHCP et attribue 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 sur 192.168.1.5laquelle se trouve votre site Web. Nous appellerons cette machine pompei.

$ echo $HOSTNAME
pompei

Comme avant, cette machine pompeià 192.168.1.5exécute un serveur HTTP qui sert votre site Web symfony.local.

Pour que chaque machine sache qu'elle symfony.localest hébergée, pompeinous aurons maintenant besoin d'un serveur DNS personnalisé sur le réseau qui sait où symfony.localest hébergé. Les appareils sur le réseau pourront alors résoudre les noms de domaine servis en pompeiinterne.

3 étapes simples.

Step 1: DNS Server

Configurez un serveur DNS sur votre réseau. Allons-y pompeipour plus de commodité et utilisons quelque chose comme dnsmasq .

Dnsmasq fournit commissionnaire Domain Name System (DNS) , ... .

Nous voulons pompeiexécuter DNSmasq pour gérer les requêtes DNS Hey, pompei, where is symfony.localet y 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 dépend généralement de /etc/dnsmasq.confvotre environnement.

J'utilise personnellement no-resolvet les serveurs Google server=8.8.8.8 server=8.8.8.4.

* Remarque: * Redémarrez TOUJOURS DNSmasq si vous modifiez le fichier / etc / hosts car aucune modification ne prendra effet dans le cas contraire.

Step 2: Firewall

Pour fonctionner, il pompeifaut autoriser les paquets «domaine» entrants et sortants, qui vont du et vers le port 53. Bien sûr! Ce sont des paquets DNS et si pompeicela ne les autorise pas, il n'y a aucun moyen pour votre serveur DNS d'être atteint du tout. Allez-y et ouvrez ce port 53. Sous Linux, vous l'utiliseriez classiquement iptablespour cela.

En partageant ce que j'ai proposé, vous devrez très probablement plonger dans votre pare-feu et bien 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 192.168.1.5maintenant activé . La plupart du temps, vous pouvez simplement vous connecter à votre routeur et le modifier manuellement très facilement.

Voilà, lorsque vous êtes sur une machine et que vous demandez symfony.local, il demandera à votre serveur DNSsymfony.localest hébergé, et dès qu'il aura reçu sa réponse du serveur DNS, il enverra alors la requête HTTP appropriée à pompeion 192.168.1.5.

Je vous laisse jouer avec ça et profiter de la balade. Ces 2 é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 que cela est un peu plus avancé en réseau, il y a serveur DNS primaire, les serveurs DNS secondaires, etc. . Bonne chance!

Mick
la source
Bonne réponse. J'ai suivi la dernière partie jusqu'à ce que j'arrive à "Surveillance du trafic iPhone avec Fiddler". Il pointe vers la page d'accueil de Fiddler. Cela devrait être le lien: conceptdev.blogspot.com/2009/01
...
J'ai modifié le fichier hôte mais le problème est que le serveur IIS est également 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?
Uzair Ali
1
@Mick un moyen possible d'accéder au site Web à partir d'un autre ordinateur en ne modifiant pas le hostfichier manuellement? disons que j'ai 100 ordinateurs voulaient accéder au site Web
Drenyl
1
@Dre Oui, vous devrez effectuer un changement sur votre réseau pour que chaque machine sache où votre site Web est hébergé. J'ai ajouté des informations à la fin de la réponse. J'espère que cela pourra aider.
Mick
1
Excellente explication!
Shepherd
25

Pour tester sur les deux ordinateurs portables sur le même réseau sans fil et sur Internet, vous pouvez utiliser un service tel que http://localhost.run/ ou https://ngrok.com/

Tommyvn
la source
3
localhost.run a fonctionné comme du charme. Mon serveur fonctionnait sur le port 8000 et vient de changer la ligne de commande de 80 à 8000.
Isuru
3
Hou la la! génial ... cela a vraiment fonctionné au single ... merci @tommyvn
Jabongg
Il est bien plus facile de configurer NGROK que de mettre à jour le fichier d'hôtes locaux. +1
BlackHatSamurai
Solution facile pour un test rapide
shamila
15

À condition que les deux machines soient dans le même groupe de travail, ouvrez cmd.exesur la machine à laquelle vous souhaitez vous connecter, tapez ipconfiget notez l'adresse IP sur la IPv4 Addressligne.

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

Ça devrait le faire.

Codrin Eugeniu
la source
3
Cela fonctionnerait si le port 80 est le port de l'application (normalement c'est le cas), mais gardez à l'esprit que nous pouvons utiliser un port différent. Cela signifierait http: // + l'adresse IP de la machine cible + ": PORT_NUMBER"
ggderas
C'était la solution simple que je recherchais. @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.
Ohumeronen le
8

Sur Mac OS X:

  1. Dans le terminal, exécutez ifconfig | grep 192.pour obtenir l'adresse IP interne de votre machine sur son réseau actuel. Cela peut être quelque chose comme192.168.1.140

  2. Démarrez un serveur. Par exemple, node server.jspeut démarrer un serveur sur un port.

  3. Sur votre téléphone, visitez 192.168.1.140:3000ou quel que soit le port sur lequel votre serveur fonctionne.

Raphael Rafatpanah
la source
6

Cet outil m'a beaucoup sauvé, car je n'ai pas d'autorisation d'administrateur sur ma machine et que nodejs était déjà installé. Pour une raison quelconque, la configuration sur mon réseau ne me donne pas accès à d'autres machines qui pointent simplement l'adresse IP sur le navigateur.

# Using a local.dev vhost
$ browser-sync start --proxy

# Using a local.dev vhost with PORT
$ browser-sync start --proxy local.dev:8001

# Using a localhost address
$ browser-sync start --proxy localhost:8001

# Using a localhost address in a sub-dir
$ browser-sync start --proxy localhost:8080/site1

http://www.browsersync.io/docs/command-line/

Thiago C. S Ventura
la source
Je lance une application Web sur localhost: 3000. Je l'ai utilisé browser-sync start --proxy localhost:3000dans un shell séparé. Sur un autre appareil connecté au réseau, je tape: ${computerIP}:3000mais je ne vois rien. Je suppose que je devrais fournir quelque chose de plus.
Ben Carp
5

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 de la sécurité réseau antivirus de sécurité Internet de vos deux ordinateurs comme adresses IP sûres si nécessaire.
Comment trouver l'adresse IP de votre PC Windows: Démarrer> (Exécuter) tapez: cmd (Entrée)
(Cela ouvre l'invite de commande de la boîte noire)
tapez ipconfig (Entrée)
Disons que votre serveur Web Apache ou IIS est installé sur votre PC : 192.168.0.3
et que vous souhaitez accéder à votre serveur Web avec votre ordinateur portable. (l'adresse 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, saisissez http://192.168.0.3/ pour accéder à votre serveur Web sur votre PC.

Pour que toutes ces choses fonctionnent, vous devez avoir installé un serveur Web correctement (par exemple IIS, Apache, XAMP, WAMP, etc.).

Si cela ne fonctionne pas, essayez d'
envoyer une requête ping à votre PC depuis votre ordinateur portable: Ouvrez la commande propmt sur votre ordinateur portable: Démarrer> cmd (Entrée)
ping 192.168.1.3 (Entrée)
Si le ping échoue, les pare-feu bloquent votre connexion ou votre réseau le câblage est défectueux. Redémarrez votre modem ou 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 nombre aléatoire à la fin

KarlosFontana
la source
1
Merci tou @KarlosFontana - vous venez de répondre à ma question aussi. J'avais du mal à connecter mon iPhone à un serveur que j'avais écrit sur le bureau. L'iPhone était connecté au WiFi de mon PC. Votre dernière ligne a répondu à ma question :-)
Tommy
4

Ceci est une note latérale si l'on ne peut toujours pas accéder à localhost à partir d'un autre appareil après avoir suivi l'étape ci-dessus. Cela peut être dû au fait que apache ports.conf a été configuré pour servir localement (127.0.0.1) et non à l'extérieur.

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

  $ cat /etc/apache2/ports.conf

si ce qui suit est défini,

NameVirtualHost *:80  
Listen 127.0.0.1:80  

puis remettez-le à sa valeur par défaut

NameVirtualHost *:80  
Listen 80  
Ken
la source
0

Si vous êtes sous Windows, utilisez ipconfig pour obtenir l'adresse IPv4 locale, puis spécifiez-la sous votre fichier de configuration Apache: httpd.conf , comme:

Listen: 10.20.30.40:80

Redémarrez votre serveur Apache et testez-le depuis un autre ordinateur du réseau.

shasi kanth
la source