Как мне подключиться к этому локальному хосту с другого компьютера в той же сети? - PullRequest
145 голосов
/ 13 марта 2012

В настоящее время я работаю над проектом, и я хотел бы проверить его на двух ноутбуках дома, где один ноутбук подключается к локальному хосту, а другой.Я использую XAMPP.Как мне это сделать?

Ответы [ 8 ]

254 голосов
/ 15 марта 2013

Это определенно возможно. Мы рассмотрим общий случай с Apache здесь.

Допустим, вы большой поклонник Symfony2 и хотели бы получить доступ к своему веб-сайту Symfony по адресу http://symfony.local/ с 4 разных компьютеров (основного, на котором размещен ваш сайт, а также подключенных дистрибутивов Mac, Windows и Linux). (беспроводной или нет) к основному компьютеру.

Общий эскиз:

enter image description here


1 Настройка виртуального хоста :

Сначала вам нужно настроить виртуальный хост в вашем файле apache httpd-vhosts.conf. На XAMP вы можете найти этот файл здесь: C:\xampp\apache\conf\extra\httpd-vhosts.conf. На MAMP вы можете найти этот файл здесь: Applications/MAMP/conf/apache/extra/httpd-vhosts.conf. Этот шаг подготавливает веб-сервер на вашем компьютере для обработки symfony.local запросов. Вам необходимо указать имя виртуального хоста, а также корневую / основную папку вашего сайта. Для этого добавьте следующую строку в конец этого файла. Вам нужно изменить DocumentRoot, где находится ваша основная папка. Здесь я взял /Applications/MAMP/htdocs/Symfony/ в качестве корня моего сайта.

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

2 Настройте файл hosts :

Чтобы клиент (в данном случае ваш браузер) понял, что на самом деле означает symfony.local, вам нужно отредактировать файл hosts на вашем компьютере. Каждый раз, когда вы набираете URL в вашем браузере, ваш компьютер пытается понять, что это значит! symfony.local ничего не значит для компьютера. Поэтому он попытается разрешить имя symfony.local в IP-адрес. Это будет сделано, сначала посмотрев файл hosts на вашем компьютере, чтобы увидеть, может ли он сопоставить IP-адрес с тем, что вы ввели в адресной строке. Если это невозможно, то он спросит DNS-серверы . Хитрость в том, чтобы добавить следующее в ваш файл hosts.

  • Вкл. MAC , этот файл находится в /private/etc/hosts;
  • Вкл. LINUX , этот файл находится в /etc/hosts;
  • Вкл. ОКНА , этот файл находится в \Windows\system32\private\etc\hosts;
  • Вкл. WINDOWS 7 , этот файл находится в \Windows\system32\drivers\etc\hosts;
  • Вкл. ОКНА 10 , этот файл находится в \Windows\system32\drivers\etc\hosts;

Файл Hosts

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

С этого момента каждый раз, когда вы вводите symfony.local на этом компьютере, ваш компьютер будет использовать интерфейс обратной связи для подключения к symfony.local. Он поймет, что вы хотите работать на localhost (127.0.0.1).

3 Доступ symfony.local с другого компьютера :

Наконец-то мы подошли к вашему главному вопросу:

Как теперь я могу получить доступ к своему веб-сайту через другой компьютер?

Ну, теперь это легко! Нам просто нужно сообщить другим компьютерам, как они могут найти symfony.local! как нам это сделать?

3a Получить IP-адрес компьютера, на котором размещен сайт :

Сначала нам нужно узнать IP-адрес компьютера, на котором размещен веб-сайт (тот, с которым мы работали с самого начала). В терминале: MAC и LINUX тип ifconfig |grep inet, WINDOWS тип ipconfig. Давайте предположим, что IP-адрес этого компьютера 192.168.1.5 .

3b Отредактируйте файл hosts на компьютере, с которого вы пытаетесь получить доступ к веб-сайту. :

Опять же, на MAC , этот файл находится в /private/etc/hosts; LINUX , /etc/hosts; и WINDOWS , в \Windows\system32\private\etc\hosts (если вы используете WINDOWS 7 , этот файл находится в \Windows\system32\drivers\etc\hosts). Теперь хитрость заключается в том, чтобы использовать IP-адрес компьютера, к которому мы пытаемся получить доступ / поговорить:

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

4 Наконец, наслаждайтесь результатами в вашем браузере

Теперь вы можете зайти в свой браузер и набрать http://symfony.local, чтобы красиво увидеть ваш сайт на разных компьютерах! Обратите внимание, что вы можете применить ту же стратегию, если вы являетесь пользователем OSX, чтобы протестировать свой веб-сайт в Internet Explorer через Virtual Box (если вы не хотите использовать компьютер с Windows). Это прекрасно объясняется в Создание среды тестирования Windows / IE на OSX .


Вы также можете получить доступ к своему локальному хосту с мобильных устройств

Вы можете задаться вопросом, как получить доступ к сайту localhost с мобильного устройства. В некоторых случаях вы не сможете изменить файл hosts (iPhone, iPad ...) на своем устройстве (исключая джейлбрейк).

Итак, решение заключается в том, чтобы установить прокси-сервер на компьютере, на котором размещен веб-сайт, и подключиться к этому прокси с вашего iphone. На самом деле это очень хорошо объяснено в следующих постах и ​​не так долго настраивается:

На Mac я бы порекомендовал: Тестирование веб-сайта Mac OS X с использованием локального имени хоста на мобильном устройстве : Использование SquidMan в качестве прокси. Это 100% бесплатное решение. Некоторые люди также могут использовать Charles в качестве прокси-сервера, но это 50 $.

В Linux вы можете адаптировать Mac OS выше, используя Squid в качестве прокси-сервера.

В Windows вы можете сделать это, используя Fiddler . Решение описано в следующем посте: Мониторинг трафика iPhone с помощью Fiddler


Редактировать 23/11/2017: Эй, я не хочу изменять мой файл Hosts

@ Dre. Любой возможный способ получить доступ к сайту с другого компьютера, не редактировать файл хоста вручную? скажем, у меня 100 компьютеров хотел для доступа к сайту

Это интересный вопрос, и, поскольку он связан с вопросом ОП, позвольте мне помочь.

Вам нужно будет внести изменения в свою сеть, чтобы каждая машина знала, где размещен ваш веб-сайт. Большинство обычных маршрутизаторов этого не делают , поэтому вам придется запустить собственный DNS-сервер в своей сети.

Давайте представим, что у вас есть маршрутизатор (192.168.1.1). Этот маршрутизатор имеет DHCP-сервер и выделяет IP-адреса для 100 компьютеров в сети.

Теперь, допустим, у вас, как и выше, в той же сети есть машина с 192.168.1.5, на которой есть ваш веб-сайт. Мы назовем эту машину Помпеи .

$ echo $HOSTNAME
pompei

Как и прежде, на этой машине pompei в 192.168.1.5 работает HTTP-сервер , который обслуживает ваш сайт symfony.local.

Чтобы каждая машина знала, что symfony.local размещена на pompei , теперь нам потребуется специальный DNS-сервер в сети, который знает, где размещен symfony.local. Устройства в сети смогут разрешать доменные имена, обслуживаемые pompei внутри.

3 простых шага.

Шаг 1: DNS-сервер

Настройка DNS-сервера в вашей сети. Давайте для удобства сделаем это на pompei и используем что-то вроде dnsmasq .

Dnsmasq предоставляет сервер доменных имен (DNS) , ... .

Мы хотим, чтобы pompei запустили DNSmasq для обработки DNS-запросов Hey, pompei, where is symfony.local и ответили Hey, sure think, it is on 192.168.1.5 but don't take my word for it.

Продолжайте установку dnsmasq, файл конфигурации dnsmasq обычно находится в /etc/dnsmasq.conf, в зависимости от вашей среды.

Я лично использую no-resolv и серверы Google server=8.8.8.8 server=8.8.8.4.

* Примечание: * ВСЕГДА перезапускайте DNSmasq при изменении файла / etc / hosts, так как в противном случае изменения не вступят в силу.

Шаг 2: Брандмауэр

Для работы pompei необходимо разрешить входящие и исходящие «доменные» пакеты, которые идут от и к порту 53. Конечно! Это пакеты DNS, и если pompei не разрешает их, ваш DNS-сервер вообще не сможет связаться. Идем дальше и откроем этот порт 53. В Linux вы бы классически использовали iptables для этого.

Делитесь тем, что я придумал, но вам, скорее всего, придется погрузиться в брандмауэр и все хорошо понять.

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

Шаг 3: Маршрутизатор

Сообщите вашему маршрутизатору, что ваш DNS-сервер сейчас 192.168.1.5. В большинстве случаев вы можете просто войти в свой маршрутизатор и изменить это вручную очень легко.

Вот и все, когда вы находитесь на компьютере и запрашиваете symfony.local, он спросит ваш DNS-сервер , где размещен symfony.local, и как только он получит свой ответ от DNS затем сервер отправит правильный HTTP-запрос на pompei на 192.168.1.5.

Я позволю тебе поиграть с этим и наслаждаться поездкой. Эти 2 шага являются основными рекомендациями, поэтому вам придется отлаживать и тратить несколько часов, если вы делаете это впервые. Допустим, это немного более продвинутая сеть, есть первичный DNS-сервер, вторичный DNS-сервер, и т. Д. . Удачи!

14 голосов
/ 15 марта 2017

Для тестирования на обоих ноутбуках с одинаковым беспроводным подключением и через Интернет вы можете воспользоваться услугой типа http://localhost.run/ или https://ngrok.com/

12 голосов
/ 13 марта 2012

Если обе машины находятся в одной рабочей группе, откройте cmd.exe на машине, к которой вы хотите подключиться, введите ipconfig и запишите IP в строке IPv4 Address.

Затем намашина, с которой вы хотите соединиться, используйте http:// + the IP of the target machine.

Это должно сделать это.

6 голосов
/ 24 апреля 2017

В Mac OS X:

  1. В терминале введите ifconfig | grep 192., чтобы получить внутренний IP-адрес вашей машины в текущей сети.Это может быть что-то вроде 192.168.1.140

  2. Запустить сервер.Например, node server.js может запустить сервер на каком-либо порту.

  3. На вашем телефоне посетите 192.168.1.140:3000 или любой другой порт, на котором работает ваш сервер.

6 голосов
/ 13 февраля 2015

Этот инструмент сильно меня спас, так как у меня нет прав администратора на моей машине, и уже были установлены nodejs.По какой-то причине конфигурация в моей сети не дает мне доступ к другим машинам, просто указывая IP-адрес в браузере.

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

5 голосов
/ 02 января 2013

возможно, ваши брандмауэры не позволяют вам получить доступ к веб-серверу localhost.
При необходимости укажите IP-адреса безопасности антивирусной сети на обоих компьютерах в качестве безопасных IP-адресов.
Как найтиIP-адрес вашего компьютера с Windows: Пуск> (Выполнить) введите: cmd (Enter)
(откроется командная строка черного ящика)
введите ipconfig (Enter)
Допустим, ваш веб-сервер Apache или IISустановлен на вашем компьютере: 192.168.0.3
, и вы хотите получить доступ к вашему веб-серверу с вашего ноутбука.(IP-адрес ноутбука - 192.168.0.5)
На своем ПК вы вводите: http://localhost/ в браузере Firefox или Internet Eplorer для доступа к вашим данным на веб-сервере.
На своем ноутбуке вы набираете http://192.168.0.3/ для доступаваш веб-сервер на вашем компьютере.

Чтобы все эти вещи работали, вам нужно правильно установить веб-сервер (например, IIS, Apache, XAMP, WAMP и т. Д.).

Если это не работает, попробуйте проверить связь с вашим сервером.ПК с вашего ноутбука:
Откройте команду propmt на вашем ноутбуке: Пуск> cmd (Enter)
ping 192.168.1.3 (Enter)
В случае сбоя проверки связи брандмауэры блокируют ваше соединение или сетевые кабелинеисправен.Перезагрузите модем или сетевой коммутатор и ваши компьютеры.
Закройте такие программы, как программы чата, использующие ваши порты.
Вы также можете попробовать другой номер порта: http: 192.168.0.3: 80 или http: 192.168.0.3: 81 или любое случайное число в конце

4 голосов
/ 14 марта 2014

Это примечание, если вы все еще не можете получить доступ к localhost с других устройств после выполнения вышеуказанного шага.Это может быть связано с тем, что apache ports.conf был настроен для локального обслуживания (127.0.0.1), а не для внешнего.

проверьте следующее (для ubuntu apache2)

  $ cat /etc/apache2/ports.conf

если установлено следующее,

NameVirtualHost *:80  
Listen 127.0.0.1:80  

, затем верните его к значению по умолчанию

NameVirtualHost *:80  
Listen 80  
0 голосов
/ 12 апреля 2018

Если вы работаете в Windows, используйте ipconfig , чтобы получить локальный адрес IPv4, а затем укажите это в файле конфигурации Apache: httpd.conf , например:

Listen: 10.20.30.40:80

Перезагрузите сервер Apache и протестируйте его с другого компьютера в сети.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...