Como eu me conecto a este host local de outro computador na mesma rede?

172

Atualmente, estou trabalhando em um projeto e gostaria de testá-lo em dois laptops em casa, onde um laptop se conecta ao host local do outro. Estou usando o XAMPP. Como eu faço isso?

user1219572
fonte

Respostas:

284

Isso é definitivamente possível. Vamos abordar um caso geral com o Apache aqui.

Digamos que você seja um grande fã do Symfony2 e gostaria de acessar seu site symfony em http://symfony.local/4 computadores diferentes (o principal que hospeda seu site, além de um Mac, uma Windows e uma distribuição Linux conectada (sem fio ou não) a o computador principal.

Esboço geral:

insira a descrição da imagem aqui


1 Configure um host virtual :

Você primeiro precisa configurar um host virtual no seu httpd-vhosts.confarquivo apache . Em XAMP , você pode encontrar este arquivo aqui: C:\xampp\apache\conf\extra\httpd-vhosts.conf. Em MAMP , você pode encontrar este arquivo aqui: Applications/MAMP/conf/apache/extra/httpd-vhosts.conf. Esta etapa prepara o servidor da Web no seu computador para lidar com symfony.localsolicitações. Você precisa fornecer o nome do host virtual e a pasta principal / raiz do seu site. Para fazer isso, adicione a seguinte linha no final desse arquivo. Você precisa alterar DocumentRootpara onde estiver a pasta principal. Aqui eu tomei /Applications/MAMP/htdocs/Symfony/como a raiz do meu site.

<VirtualHost *:80>
    DocumentRoot "/Applications/MAMP/htdocs/Symfony/"
    ServerName symfony.local
</VirtualHost>

2 Configure o seu arquivo hosts :

Para o cliente (seu navegador nesse caso) entender o que symfony.localrealmente significa, você precisa editar o arquivo de hosts no seu computador. Sempre que você digita um URL no seu navegador, seu computador tenta entender o que isso significa! symfony.localnão significa nada para um computador. Portanto, ele tentará resolver o nome symfony.localpara um endereço IP. Isso será feito primeiro olhando para o arquivo de hosts no seu computador, para ver se ele pode corresponder um endereço IP ao que você digitou na barra de endereços. Se não puder, ele perguntará aos servidores DNS . O truque aqui é anexar o seguinte ao seu arquivo hosts.

  • No MAC , esse arquivo está dentro /private/etc/hosts;
  • No LINUX , esse arquivo está dentro /etc/hosts;
  • No WINDOWS , esse arquivo está dentro \Windows\system32\private\etc\hosts;
  • Em WINDOWS 7 , esse arquivo está dentro\Windows\system32\drivers\etc\hosts;
  • No WINDOWS 10 , esse arquivo está dentro \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 agora, toda vez que você digitar symfony.local neste computador, seu computador usará a interface de loopback para conectar-se ao symfony.local. Ele entenderá que você deseja trabalhar no host local (127.0.0.1).

3 Acesso symfony.local partir de outro computador :

Finalmente chegamos à sua pergunta principal, que é:

Como posso acessar meu site agora através de outro computador?

Bem, isso agora é fácil! Só precisamos dizer aos outros computadores como eles podem encontrarsymfony.local ! Como vamos fazer isso?

3a Obter o endereço IP do computador que hospeda o site :

Primeiro precisamos saber o endereço IP no computador que hospeda o site (aquele em que trabalhamos desde o início). No terminal, na MAC e LINUX tipo ifconfig |grep inet, em WINDOWStipo ipconfig. Vamos supor que o endereço IP deste computador seja 192.168.1.5 .

3b Edite o arquivo hosts no computador em que você está tentando acessar o site.:

Novamente, no MAC , esse arquivo está dentro /private/etc/hosts; no LINUX , em /etc/hosts; e no WINDOWS , em \Windows\system32\private\etc\hosts(se você estiver usando o WINDOWS 7 , esse arquivo está em \Windows\system32\drivers\etc\hosts) .. O truque agora é usar o endereço IP do computador que estamos tentando acessar / conversar:

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

4 Por fim, aproveite os resultados no seu navegador

Agora você pode acessar o seu navegador e digitar http://symfony.localpara ver o seu site de maneira bonita em computadores diferentes! Observe que você pode aplicar a mesma estratégia se for um usuário do OSX para testar seu site no Internet Explorer via Virtual Box (se não quiser usar um computador com Windows). Isso é bem explicado em Criando seu ambiente de teste do Windows / IE no OSX .


Você também pode acessar seu host local a partir de dispositivos móveis

Você pode se perguntar como acessar o site do host local a partir de um dispositivo móvel. Em alguns casos, você não poderá modificar o arquivo hosts (iPhone, iPad ...) no seu dispositivo (excluindo o jailbreak).

Bem, a solução é instalar um servidor proxy na máquina que hospeda o site e conectar-se a esse proxy a partir do seu iphone. Na verdade, é muito bem explicado nas postagens a seguir e não demora muito para configurar:

Em um Mac, eu recomendaria: Testar um site do Mac OS X usando um nome de host local em um dispositivo móvel : Usando o SquidMan como proxy. É uma solução 100% gratuita. Algumas pessoas também podem usar Charles como um servidor proxy, mas são 50 $.

No Linux, você pode adaptar o Mac OS acima, usando o Squid como um servidor proxy.

No Windows, você pode fazer isso usando o Fiddler . A solução é descrita na seguinte postagem: Monitorando o tráfego do iPhone com o Fiddler


Editar 23/11/2017: Ei, eu não quero modificar meu arquivo Hosts

@Dre. Existe alguma maneira possível de acessar o site de outro computador, não editando o arquivo host manualmente? digamos que eu tenho 100 computadores que queria acessar o site

Essa é uma pergunta interessante e, como está relacionada à questão do OP, deixe-me ajudar.

Você precisaria fazer uma alteração na sua rede para que cada máquina saiba onde seu site está hospedado. A maioria dos roteadores todos os dias não faz isso, então você teria que executar seu próprio servidor DNS na sua rede.

Vamos fingir que você tem um roteador (192.168.1.1). Este roteador possui um servidor DHCP e aloca endereços IP para 100 máquinas na rede.

Agora, digamos que você tenha, da mesma forma que acima, na mesma rede, uma máquina na 192.168.1.5qual o seu site está. Vamos ligar para essa máquina pompei.

$ echo $HOSTNAME
pompei

Mesmo que antes, essa máquina pompeiem 192.168.1.5pistas de um servidor HTTP que serve o seu site symfony.local.

Para que todas as máquinas saibam que symfony.localestá hospedado pompei, agora precisamos de um servidor DNS personalizado na rede que saiba onde symfony.localestá hospedado. Os dispositivos na rede poderão resolver nomes de domínio servidos porpompei internamente.

3 etapas simples.

Step 1: DNS Server

Configure um servidor DNS na sua rede. Vamos pompeiusá- lo por conveniência e usar algo como dnsmasq .

Dnsmasq fornece Domain Name System (DNS) transitário , ... .

Queremos pompeiexecutar o DNSmasq para lidar com solicitações de DNS Hey, pompei, where is symfony.locale responderHey, sure think, it is on 192.168.1.5 but don't take my word for it .

Vá em frente, instale o dnsmasq, normalmente o arquivo de configuração do dnsmasq /etc/dnsmasq.confdepende do seu ambiente.

Eu pessoalmente uso no-resolve servidores do Google server=8.8.8.8 server=8.8.8.4.

* Nota: * SEMPRE reinicie o DNSmasq se modificar o arquivo / etc / hosts, pois nenhuma alteração terá efeito caso contrário.

Step 2: Firewall

Para funcionar, é pompeinecessário permitir pacotes de 'domínio' de entrada e saída, que vão da e para a porta 53. Claro! Estes são pacotes DNS e, se pompeinão os permitir, não há como o servidor DNS ser acessado. Vá em frente e abra a porta 53. No linux, você usaria classicamente iptablespara isso.

Compartilhar o que eu criei, mas você provavelmente terá que mergulhar no seu firewall e entender tudo bem.

#
# 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

Informe ao seu roteador que seu servidor DNS está ativado 192.168.1.5agora. Na maioria das vezes, você pode simplesmente fazer login no seu roteador e alterá-lo manualmente com muita facilidade.

É isso: quando você estiver em uma máquina e solicitando symfony.local, ele perguntará ao servidor DNS onde symfony.localestá hospedado e, assim que receber a resposta do servidor DNS, enviará a solicitação HTTP adequada para pompeion 192.168.1.5.

Eu deixo você brincar com isso e aproveitar o passeio. Essas duas etapas são as principais diretrizes, portanto, você terá que depurar e passar algumas horas, se for a primeira vez que faz isso. Vamos dizer que isso é um pouco de rede mais avançada, há servidor DNS primário, servidores DNS secundários, etc . Boa sorte!

Mick
fonte
Boa resposta. Segui a última parte até chegar a "Monitorando o tráfego do iPhone com o Fiddler". Aponta para a página inicial do Fiddler. Este deve ser o link: conceptdev.blogspot.com/2009/01/…
helpse
Modifiquei o arquivo host, mas o problema é que também tenho o servidor IIS em execução, de modo que meu "localhost" ou "127.0.0.1" esteja apontando para o servidor IIS, como posso substituí-lo pelo servidor xamp?
Uzair Ali 21/03
1
@Mick qualquer maneira possível de acessar o site de outro computador, não editando o hostarquivo manualmente? digamos que eu tenho 100 computadores desejados para acessar o site
Drenyl 22/11
1
@Dre Sim, você precisaria fazer uma alteração na sua rede para que cada máquina saiba onde seu site está hospedado. Eu adicionei informações no final da resposta. Espero que ajude.
Mick
1
Excelente explicação!
Pastor
25

Para testar nos dois laptops na mesma conexão sem fio e na Internet, você pode usar um serviço como http://localhost.run/ ou https://ngrok.com/

tommyvn
fonte
3
localhost.run funcionou como charme. O meu servidor foi executado na porta 8000 e só mudou a linha de comando de 80 a 8000.
Isuru
3
Uau! impressionante ... realmente trabalhou no único go ... graças @tommyvn
Jabongg
Muito mais fácil configurar o NGROK do que atualizar o arquivo de hosts locais. 1
BlackHatSamurai
Solução fácil para teste rápido
shamila
15

Desde que as duas máquinas estejam no mesmo grupo de trabalho, abra cmd.exena máquina à qual você deseja se conectar, digite ipconfige anote o IP na IPv4 Addresslinha.

Em seguida, na máquina com a qual você deseja se conectar, use http:// + the IP of the target machine.

Isso deve resolver.

Codrin Eugeniu
fonte
3
Isso funcionaria se a porta 80 fosse a porta do aplicativo (normalmente é), mas lembre-se de que podemos usar uma porta diferente. Isso seria dizer http: // + o IP da máquina de destino + ": PORT_NUMBER"
ggderas
Essa era a solução simples que eu estava procurando. @Codrin Eugeniu: Considere incorporar a sugestão ": PORT_NUMBER" em sua resposta, conforme mencionado por ggderas. Para mim, isso foi necessário, pois eu me conectei pela porta 8088 usando o Apache Superset.
Ohumeronen 06/06
8

No Mac OS X:

  1. No terminal, execute ifconfig | grep 192.para obter o IP interno da sua máquina na rede atual. Pode ser algo como192.168.1.140

  2. Inicie um servidor. Por exemplo, node server.jspode iniciar um servidor em alguma porta.

  3. No telefone, visite 192.168.1.140:3000ou qualquer porta em que o servidor esteja sendo executado.

Raphael Rafatpanah
fonte
6

Essa ferramenta me salvou muito, pois não tenho permissão de administrador na minha máquina e já tinha o nodejs instalado. Por algum motivo, a configuração na minha rede não me dá acesso a outras máquinas apenas apontando o IP no navegador.

# 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
fonte
Eu executo um webapp no ​​localhost: 3000. Eu usei browser-sync start --proxy localhost:3000em uma concha separada. Em outro dispositivo conectado à rede, digito: ${computerIP}:3000mas não vejo nada. Eu acho que há algo mais que eu deveria fornecer.
Ben Carp
5

pode ser que seus firewalls estejam impedindo que você acesse o servidor da web do host local.
Coloque os endereços IP da segurança de rede antivírus de segurança na Internet de ambos os computadores como endereços IP seguros, se necessário.
Como encontrar o endereço IP do seu PC com Windows: Iniciar> (Executar) digite: cmd (Enter)
(Isso abre o prompt de comando da caixa preta)
digite ipconfig (Enter)
Digamos que seu servidor Apache ou IIS esteja instalado no seu PC : 192.168.0.3
e você deseja acessar seu servidor da web com seu laptop. (o IP do laptop é 192.168.0.5) No seu laptop, você digita http://192.168.0.3/ para acessar seu servidor da web no seu PC. Para que tudo isso funcione, você precisa ter instalado um servidor da Web corretamente (por exemplo, IIS, Apache, XAMP, WAMP, etc.).
No seu PC, você digita: http: // localhost / dentro do navegador Firefox ou Internet Eplorer para acessar seus dados no servidor da web.



Se não funcionar, tente
executar o ping no seu PC a partir do seu laptop: Abra o comando propmt no seu laptop: Iniciar> cmd (Enter)
ping 192.168.1.3 (Enter)
Se o ping falhar, os firewalls estão bloqueando sua conexão ou sua rede. o cabeamento está com defeito. Reinicie seu modem ou comutador de rede e suas máquinas.
Feche programas como programas de bate-papo que estão usando suas portas.
Você também pode tentar um número de porta diferente: http: 192.168.0.3: 80 ou http: 192.168.0.3: 81 ou qualquer número aleatório no final

KarlosFontana
fonte
1
Obrigado tou @KarlosFontana - você também respondeu minha pergunta. Estava com problemas para conectar meu iPhone a um servidor que escrevi na área de trabalho. O iPhone estava conectado ao WiFi do meu PC. Sua última linha respondeu à minha pergunta :-)
Tommy
4

Esta é uma observação se ainda não for possível acessar o host local de outros dispositivos após seguir a etapa acima. Isso pode dever-se ao fato de o apache ports.conf ter sido configurado para servir localmente (127.0.0.1) e não para o exterior.

verifique o seguinte (para o ubuntu apache2)

  $ cat /etc/apache2/ports.conf

se o seguinte estiver definido,

NameVirtualHost *:80  
Listen 127.0.0.1:80  

altere-o novamente para o valor padrão

NameVirtualHost *:80  
Listen 80  
ken
fonte
0

Se você estiver no Windows, use ipconfig para obter o endereço IPv4 local e especifique-o no arquivo de configuração do Apache: httpd.conf , como:

Listen: 10.20.30.40:80

Reinicie o servidor Apache e teste-o em outro computador na rede.

shasi kanth
fonte