web-dev-qa-db-fra.com

Comment se connecter à cet hôte local à partir d'un autre ordinateur du même réseau?

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

138
user1219572

C'est certainement possible. Nous allons prendre un cas général avec Apache ici.

Supposons que vous soyez un grand fan de Symfony2 et que vous souhaitez accéder à votre site Web Symfony à l'adresse http://symfony.local/ à partir de 4 ordinateurs différents (le principal hébergeant votre site Web, ainsi qu'un Mac, une distribution Windows et Linux distribuée (sans fil ou non). à l'ordinateur principal.

Esquisse générale:

enter image description here


1  Configurer un hôte virtuel :

Vous devez d’abord configurer un hôte virtuel dans votre fichier Apache httpd-vhosts.conf. 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 à la gestion des requêtes symfony.local. 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 paramètre DocumentRoot par 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 hôtes :

Pour que le client (votre navigateur dans ce cas) comprenne vraiment ce que signifie symfony.local, 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.local ne veut rien dire pour un ordinateur. Il essaiera donc de résoudre le nom symfony.local en une adresse IP. Pour ce faire, il recherchera d'abord dans le fichier hosts de votre ordinateur s'il peut faire correspondre une adresse IP à celle que vous avez saisie dans la barre d'adresse. S'il ne le peut pas, il demandera des serveurs DNS . L'astuce ici est d'ajouter ce qui suit à votre fichier hosts.

  • On MAC, ce fichier est en /private/etc/hosts;
  • On 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. Vous comprendrez que vous souhaitez travailler sur localhost (127.0.0.1).

3  Accédez à symfony.local à partir d'un autre ordinateur :

Nous arrivons enfin à votre question principale qui est:

Comment puis-je accéder maintenant à mon site Web via 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 faisons-nous cela?

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

Nous devons d’abord connaître l’adresse IP de l’ordinateur hébergeant le site Web (celle sur laquelle nous travaillons depuis le tout début). Dans le terminal, on MAC et LINUX tapez ifconfig |grep inet , sur WINDOWS tapez 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; on LINUX, dans /etc/hosts; et sur WINDOWS, dans \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 que nous essayons accéder/parler à:

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

4  Enfin, profitez des résultats dans votre navigateur

Vous pouvez maintenant aller dans votre navigateur et tapez http://symfony.local pour afficher 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 sous Internet Explorer via Virtual Box (si vous ne souhaitez pas utiliser un ordinateur Windows). Ceci est magnifiquement expliqué dans Crafting Your Windows/IE Environnement de test sur OSX .


Vous pouvez également accéder à votre localhost à partir d'appareils mobiles

Vous pourriez vous demander 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 (sauf le jailbreaking).

La solution consiste alors à installer un serveur proxy sur la machine hébergeant le site Web et à vous connecter à ce serveur mandataire à partir de votre iphone. C'est en fait très bien expliqué dans les articles suivants et il n'est pas si long à mettre en place:

Sur un Mac, je recommanderais: Test d'un site Web Mac OS X en utilisant un nom d'hôte local sur un appareil mobile : Utilisation de SquidMan en tant que proxy. C'est une solution 100% gratuite. Certaines personnes peuvent également utiliser Charles en tant que 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 le post suivant: Surveillance du trafic iPhone avec Fiddler


23/11/2017: Hé, je ne veux pas modifier mon fichier Hosts

@Dre. 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 voulus pour accéder au site

C'est une question intéressante, et comme elle est liée à la question du PO, laissez-moi vous aider.

Vous devrez modifier votre réseau pour que chaque ordinateur 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.

Supposons que vous avez un routeur (192.168.1.1). Ce routeur dispose d’un serveur DHCP et attribue des adresses IP à 100 machines du réseau.

Maintenant, supposons que vous ayez, comme ci-dessus, sur le même réseau, une machine à 192.168.1.5 qui contient votre site web. Nous appellerons cette machine pompei.

$ echo $HOSTNAME
pompei

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

Pour que chaque machine sache que symfony.local est hébergé sur pompei nous aurons maintenant besoin d’un serveur DNS personnalisé sur le réseau, qui sait où est hébergé symfony.local. Les appareils du réseau pourront alors résoudre les noms de domaine servis par pompei intérieurement.

3 étapes simples.

Step 1: DNS Server

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

Dnsmasq fournit un redirecteur DNS (Domain Name System) , ... .

Nous voulons pompei pour exécuter DNSmasq afin de gérer les requêtes DNS Hey, pompei, where is symfony.local et de 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 dnsmasq est généralement 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.

* Remarque: * TOUJOURS redémarrer DNSmasq si vous modifiez le fichier/etc/hosts car aucune modification ne prend effet, sinon.

Step 2: Firewall

Travailler, pompei doit autoriser les paquets de "domaine" entrants et sortants, qui vont et viennent du port 53. Bien sûr! Ce sont des paquets DNS et si pompei ne les autorise pas, il n’existe aucun moyen de contacter votre serveur DNS. Allez-y et ouvrez ce port 53. Sous Linux, vous utiliseriez classiquement iptables pour cela.

Si vous partagez ce que j'ai imaginé, 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 simplement vous connecter à votre routeur et le modifier manuellement très facilement.

Ça y est, quand vous êtes sur une machine et demandez symfony.local, il demandera à votre serveur DNS symfony.local est hébergé, et dès qu'il l'a reçu sa réponse du serveur DNS envoie alors la requête HTTP appropriée à pompei sur 192.168.1.5.

Je vous laisse jouer avec ça et profiter de la balade. Ces deux étapes sont les instructions principales. Vous devrez donc déboguer et passer quelques heures si c'est la première fois que vous le faites. Disons que la mise en réseau est un peu plus avancée: il existe un serveur DNS principal, des serveurs DNS secondaires, etc. . Bonne chance!

252
Mick

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

11
tommyvn

Sous réserve que les deux machines appartiennent au même groupe de travail, ouvrez cmd.exe sur la machine à laquelle vous souhaitez vous connecter, tapez ipconfig et notez l'IP à la ligne IPv4 Address.

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

Ça devrait le faire.

9
Codrin Eugeniu

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. Ce peut être quelque chose comme 192.168.1.140

  2. Démarrer un serveur. Par exemple, node server.js peut démarrer un serveur sur un port.

  3. Sur votre téléphone, visitez 192.168.1.140:3000 ou le port sur lequel votre serveur est exécuté.

6
Raphael Rafatpanah

Cet outil m’a beaucoup sauvé, car je n’ai pas d’autorisation Admin sur ma machine et j’avais déjà installé nodejs Pour une raison quelconque, la configuration de mon réseau ne me permet pas d'accéder à d'autres machines qui pointent simplement l'adresse IP du 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/

6
Ventura

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é du réseau antivirus de la sécurité Internet de vos deux ordinateurs sous forme d'adresses IP sécurisées, si nécessaire.
Comment trouver l'adresse IP de votre PC Windows: Démarrer> (Exécuter), tapez: cmd (Entrée)
(Ceci ouvre l'invite de commande de la boîte noire)
tapez ipconfig (Entrée)
Supposons que votre serveur Web Apache ou IIS soit installé sur votre PC: 192.168.0.3
et vous voulez accéder à votre serveur Web avec votre ordinateur portable. (IP de l'ordinateur portable est 192.168.0.5)
Sur votre PC, entrez: http: // localhost/dans votre navigateur Firefox ou Internet Eplorer pour accéder à vos données sur votre serveur Web.
Sur votre ordinateur portable, vous saisissez http://192.168.0.3/ pour accéder à votre serveur Web sur votre PC. 

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

Si cela ne fonctionne pas, essayez d’envoyer une requête ping à votre PC à partir de votre ordinateur portable:
Ouvrez la commande propmt sur votre ordinateur portable: Démarrer> cmd (Entrée)
ping 192.168.1.3 (Entrée)
Si la commande ping échoue, des pare-feu bloquent votre connexion ou le câblage de votre 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 discussion utilisant 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 n’importe quel nombre aléatoire à la fin.

5
KarlosFontana

Ceci est une note complémentaire si vous ne pouvez toujours pas accéder à localhost depuis un autre périphérique après avoir suivi l'étape précédente. 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 les éléments suivants (pour Ubuntu Apache2)

  $ cat /etc/Apache2/ports.conf

si ce qui suit est défini, 

NameVirtualHost *:80  
Listen 127.0.0.1:80  

puis revenez à la valeur par défaut 

NameVirtualHost *:80  
Listen 80  
4
ken

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

Listen: 10.20.30.40:80

Redémarrez votre serveur Apache et testez-le à partir d'un autre ordinateur du réseau.

0
shasi kanth