В настоящее время я работаю над проектом, и я бы хотел проверить его на двух ноутбуках дома, где один ноутбук подключается к локальному хосту на другом. Я использую XAMPP. Как это сделать?
Как подключиться к этому локальному хосту с другого компьютера в той же сети?
Ответ 1
Это определенно возможно. Мы рассмотрим общий пример с Apache.
Скажем, вы большой поклонник Symfony2, и вы хотели бы получить доступ к своему сайту symfony на http://symfony.local/
с 4-х разных компьютеров (основной из которых размещен на вашем веб-сайте, а также Mac, Windows и Linux-дистрибутив (беспроводной или нет) на главный компьютер.
Общий эскиз:
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 Настроить файл хостов:
Чтобы клиент (ваш браузер в этом случае) понял, что означает symfony.local
, вам нужно отредактировать файл hosts на своем компьютере. Каждый раз, когда вы вводите URL-адрес в своем браузере, ваш компьютер пытается понять, что это значит! symfony.local
ничего не значит для компьютера. Поэтому он попытается разрешить имя symfony.local
на IP-адрес. Он будет делать это, сначала просмотрев файл hosts на вашем компьютере, чтобы узнать, может ли он соответствовать IP-адресу тому, что вы ввели в адресной строке. Если он не может, тогда он запросит DNS-серверы. Трюк здесь заключается в добавлении следующего файла вашего хоста.
- В MAC этот файл находится в
/private/etc/hosts
; - В LINUX этот файл находится в
/etc/hosts
; - В WINDOWS этот файл находится в
\Windows\system32\private\etc\hosts
; - В WINDOWS 7 этот файл находится в
\Windows\system32\drivers\etc\hosts
; - В WINDOWS 10 этот файл находится в
\Windows\system32\drivers\etc\hosts
;
Hosts file
##
# Host Database
# localhost is used to configure the loopback interface
##
#...
127.0.0.1 symfony.local
С этого момента каждый раз, когда вы вводите symfony.local на этом компьютере, ваш компьютер будет использовать интерфейс loopback для подключения к 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 с мобильного устройства. В некоторых случаях вы не сможете изменить файл хостов (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
, на которой есть ваш сайт. Мы назовем эту машину pompei.
$ echo $HOSTNAME
pompei
Как и раньше, эта машина pompei в 192.168.1.5
запускает HTTP-сервер, который обслуживает ваш веб-сайт symfony.local
.
Для каждой машины, которая знает, что symfony.local
размещена на pompei, теперь нам понадобится собственный DNS-сервер в сети, который знает, где находится symfony.local
. Затем устройства в сети смогут разрешать имена доменов, обслуживаемые pompei внутренне.
3 простых шага.
Step 1: DNS Server
Настройка 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 servers server=8.8.8.8 server=8.8.8.4
.
* Примечание: * ВСЕГДА перезапустите DNSmasq, если вы изменяете файл /etc/hosts, поскольку никакие изменения не вступают в силу в противном случае.
Step 2: Firewall
Чтобы работать, 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
Step 3: Router
Сообщите вашему маршрутизатору, что ваш сервер dns включен на 192.168.1.5
. В большинстве случаев вы можете просто войти в свой маршрутизатор и легко изменить это вручную.
Это, когда вы находитесь на машине и запрашиваете symfony.local
, он будет запрашивать ваш DNS-сервер, где находится symfony.local
, и как только он получит свой ответ от DNS-сервер, отправит соответствующий HTTP-запрос на pompei на 192.168.1.5
.
Я позволил тебе играть с этим и наслаждаться поездкой. Эти два шага являются основными рекомендациями, поэтому вам придется отлаживать и тратить несколько часов, если вы впервые это сделаете. Скажем, это немного более совершенная сеть, есть первичный DNS-сервер, вторичные DNS-серверы, и т.д.. Удачи!
Ответ 2
Если обе машины находятся в одной рабочей группе, откройте cmd.exe
на компьютере, к которому вы хотите подключиться, введите ipconfig
и обратите внимание на IP-адрес в строке IPv4 Address
.
Затем на машине, с которой вы хотите установить соединение, используйте http:// + the IP of the target machine
.
Это должно сделать это.
Ответ 3
возможно, что ваши брандмауэры не позволяют вам получить доступ к веб-серверу 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 и т.д.).
Если это не сработает, попробуйте выполнить ping ваш компьютер с вашего ноутбука:
Откройте команду propmt на своем ноутбуке: Пуск > cmd (Enter)
ping 192.168.1.3 (Enter)
Если pinging терпит неудачу, тогда брандмауэры блокируют ваше соединение или ваша сетевая кабельная сеть неисправна. Перезагрузите модем или сетевой коммутатор и ваши устройства.
Закройте программы, такие как чат-программы, которые используют ваши порты.
Вы также можете попробовать другой номер порта:
http: 192.168.0.3: 80 или http: 192.168.0.3: 81 или любое случайное число в конце
Ответ 4
Этот инструмент меня очень сильно сэкономил, так как у меня нет прав администратора на моей машине и уже установлены узлы. По какой-то причине конфигурация в моей сети не дает мне доступа к другим машинам, просто указывая 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
Ответ 5
Это побочная заметка, если по-прежнему не удается получить доступ к локальному хосту с других устройств после выполнения описанного выше шага. Это может быть связано с тем, что 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
Ответ 6
Для тестирования на обоих ноутбуках в одной и той же беспроводной сети и через Интернет вы можете использовать сервис, например http://localhost.run/ или https://ngrok.com/
Ответ 7
В Mac OS X:
-
В терминале запустите
ifconfig | grep 192.
, чтобы получить внутренний IP-адрес вашего компьютера в текущей сети. Это может быть что-то вроде192.168.1.140
-
Запустите сервер. Например,
node server.js
может запустить сервер на каком-то порту. -
На вашем телефоне посетите
192.168.1.140:3000
или любой другой порт, на котором работает ваш сервер.