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?
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?
Réponses:
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.
1 Configurer un hôte virtuel :
Vous devez d'abord configurer un hôte virtuel dans votre httpd-vhosts.conf
fichier 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.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 remplacer le DocumentRoot
par 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.local
cela 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.local
ne veut rien dire pour un ordinateur. Il essaiera donc de résoudre le nom symfony.local
en 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.
/private/etc/hosts
;/etc/hosts
;\Windows\system32\private\etc\hosts
format;\Windows\system32\drivers\etc\hosts
;\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.local
depuis 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 WINDOWS
type 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.local
pour 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 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
@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.5
laquelle se trouve votre site Web. Nous appellerons cette machine pompei.
$ echo $HOSTNAME
pompei
Comme avant, cette machine pompeià 192.168.1.5
exécute un serveur HTTP qui sert votre site Web symfony.local
.
Pour que chaque machine sache qu'elle symfony.local
est hébergée, pompeinous aurons maintenant besoin d'un serveur DNS personnalisé sur le réseau qui sait où symfony.local
est hébergé. Les appareils sur le réseau pourront alors résoudre les noms de domaine servis en pompeiinterne.
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.local
et 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.conf
votre environnement.
J'utilise personnellement no-resolv
et 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 iptables
pour 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.5
maintenant 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 DNS où symfony.local
est 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!
host
fichier manuellement? disons que j'ai 100 ordinateurs voulaient accéder au site Web
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/
À condition que les deux machines soient dans le même groupe de travail, ouvrez cmd.exe
sur la machine à laquelle vous souhaitez vous connecter, tapez ipconfig
et notez l'adresse IP sur la IPv4 Address
ligne.
Ensuite, sur la machine à laquelle vous souhaitez vous connecter, utilisez http:// + the IP of the target machine
.
Ça devrait le faire.
Sur Mac OS X:
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
Démarrez un serveur. Par exemple, node server.js
peut démarrer un serveur sur un port.
Sur votre téléphone, visitez 192.168.1.140:3000
ou quel que soit le port sur lequel votre serveur fonctionne.
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
browser-sync start --proxy localhost:3000
dans un shell séparé. Sur un autre appareil connecté au réseau, je tape: ${computerIP}:3000
mais je ne vois rien. Je suppose que je devrais fournir quelque chose de plus.
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
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
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.