В настоящее время я работаю над проектом, и я хотел бы проверить его на двух ноутбуках дома, где один ноутбук подключается к локальному хосту, а другой. Я использую XAMPP. Как мне это сделать?
В настоящее время я работаю над проектом, и я хотел бы проверить его на двух ноутбуках дома, где один ноутбук подключается к локальному хосту, а другой. Я использую XAMPP. Как мне это сделать?
Ответы:
Это определенно возможно. Мы рассмотрим общий случай с Apache здесь.
Допустим, вы большой поклонник Symfony2 и хотели бы получить доступ к своему веб-сайту Symfony на http://symfony.local/
4 разных компьютерах (главном, на котором размещен ваш веб-сайт, а также Mac, Windows и Linux-дистрибутив, подключенный (беспроводной или нет) к главный компьютер.
1 Настройте виртуальный хост :
Сначала вам нужно настроить виртуальный хост в вашем httpd-vhosts.conf
файле apache . На 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.
/private/etc/hosts
;/etc/hosts
;\Windows\system32\private\etc\hosts
;\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
С этого момента каждый раз, когда вы вводите symfony.local на этом компьютере, ваш компьютер будет использовать интерфейс обратной связи для подключения к symfony.local. Он поймет, что вы хотите работать на localhost (127.0.0.1).
3 Доступ symfony.local
с другого компьютера :
Наконец, мы подошли к вашему главному вопросу:
Как я могу теперь получить доступ к своему веб-сайту через другой компьютер?
Ну, это теперь легко! Нам просто нужно рассказать другим компьютерам, как они могут найти symfony.local
! как нам это сделать?
3a Получить IP-адрес компьютера, на котором размещен сайт :
Сначала нам нужно узнать IP-адрес компьютера, на котором размещен веб-сайт (тот, над которым мы работаем с самого начала). В терминале, по типу MAC и LINUXifconfig |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 .
Вы можете спросить, как получить доступ к вашему локальному веб-сайту с мобильного устройства. В некоторых случаях вы не сможете изменить файл hosts (iPhone, iPad ...) на своем устройстве (исключая джейлбрейк).
Итак, решение - установить прокси-сервер на компьютере, на котором размещен веб-сайт, и подключиться к этому прокси с вашего iphone. На самом деле это очень хорошо объяснено в следующих постах и не так долго настраивать:
На Mac я бы порекомендовал: Тестирование веб-сайта Mac OS X с использованием локального имени хоста на мобильном устройстве : Использование SquidMan в качестве прокси. Это 100% бесплатное решение. Некоторые люди также могут использовать Чарльза в качестве прокси-сервера, но это 50 $.
В Linux вы можете адаптировать Mac OS выше, используя Squid в качестве прокси-сервера.
В Windows вы можете сделать это с помощью Fiddler . Решение описано в следующем посте: Мониторинг трафика iPhone с помощью Fiddler
@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внутри.
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
и гугл серверами 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
.
Я позволю тебе играть с этим и наслаждаться поездкой. Эти 2 шага являются основными рекомендациями, поэтому вам придется отлаживать и тратить несколько часов, если вы делаете это впервые. Допустим, это немного более продвинутая сеть, есть первичный DNS-сервер, вторичный DNS-сервер и т . Д. Удачи!
host
файл вручную? скажем, у меня есть 100 компьютеров, которые хотели получить доступ к сайту
Для тестирования на обоих ноутбуках с одинаковым беспроводным подключением и через Интернет вы можете использовать сервис, такой как http://localhost.run/ или https://ngrok.com/
Если обе машины находятся в одной рабочей группе, откройте cmd.exe
на машине, к которой вы хотите подключиться, введите ipconfig
и запишите IP в IPv4 Address
строке.
Затем на машине, к которой вы хотите подключиться, используйте http:// + the IP of the target machine
.
Это должно сделать это.
В Mac OS X:
В терминале запустите, ifconfig | grep 192.
чтобы получить внутренний IP-адрес вашей машины в текущей сети. Это может быть что-то вроде192.168.1.140
Запустите сервер. Например, node server.js
может запустить сервер на каком-то порту.
На вашем телефоне зайдите на 192.168.1.140:3000
любой другой порт вашего сервера.
Этот инструмент сильно меня спас, так как у меня нет прав администратора на моей машине, и у меня уже установлены 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
browser-sync start --proxy localhost:3000
в отдельной оболочке. На другом устройстве, которое подключено к сети, я печатаю: ${computerIP}:3000
но ничего не вижу. Я предполагаю, что есть кое-что еще, что я должен предоставить.
Возможно, ваши брандмауэры не позволяют вам получить доступ к веб-серверу 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 на вашем ноутбуке: Start> cmd (Enter)
ping 192.168.1.3 (Enter)
Если сбой ping не пройден, брандмауэры блокируют ваше соединение или сеть кабели неисправны. Перезагрузите модем или сетевой коммутатор и ваши машины.
Закройте такие программы, как программы чата, которые используют ваши порты.
Вы также можете попробовать другой номер порта: http: 192.168.0.3: 80 или http: 192.168.0.3: 81 или любое случайное число в конце
Это примечание, если вы все еще не можете получить доступ к 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