我目前正在开发一个项目,我想在家里的两台笔记本电脑上测试一下,其中一台笔记本电脑连接到另一台笔记本电脑。我正在使用XAMPP。我该怎么做?
答案 0 :(得分:250)
这绝对有可能。我们在这里采用Apache的一般情况。
让我们说你是Symfony2的忠实粉丝,你想从4台不同的计算机(托管你网站的主计算机,以及Mac)访问http://symfony.local/
的symfony网站,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
。 This step准备计算机上的Web服务器以处理symfony.local
个请求。您需要提供虚拟主机的名称以及您网站的root / main文件夹。为此,请在该文件的末尾添加以下行。您需要将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服务器。这里的技巧是将以下内容附加到您的hosts文件。
/private/etc/hosts
; /etc/hosts
; \Windows\system32\private\etc\hosts
; \Windows\system32\drivers\etc\hosts
; \Windows\system32\drivers\etc\hosts
; 主持文件
##
# 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 在您尝试访问该网站的计算机上编辑主机文件。:
同样,在 MAC 上,此文件位于/private/etc/hosts
;在 LINUX ,在/etc/hosts
;并在\Windows\system32\private\etc\hosts
中的 WINDOWS (如果您正在使用 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用户,可以通过Virtual Box在Internet Explorer上测试您的网站(如果您不想使用Windows计算机),则可以应用相同的策略。这在Crafting Your Windows / IE Test Environment on OSX中得到了很好的解释。
您可能想知道如何从移动设备访问您的localhost网站。在某些情况下,您无法修改设备上的主机文件(iPhone,iPad ...)(不包括越狱)。
那么,解决方案是在托管网站的计算机上安装代理服务器并从iPhone连接到该代理。实际上,在以下帖子中对此进行了很好的解释,并且设置时间不长:
在Mac上,我建议:Testing a Mac OS X web site using a local hostname on a mobile device:使用SquidMan作为代理。这是一个100%免费的解决方案。有些人也可以使用Charles作为代理服务器,但它只需要50美元。
在Linux上,您可以使用Squid作为代理服务器来调整上述Mac OS。
在Windows上,您可以使用Fiddler执行此操作。解决方案在以下帖子中进行了描述:Monitoring iPhone traffic with Fiddler
@Dre。任何可能的方式从另一台计算机访问该网站没有 手动编辑主机文件?让我们说我想要100台电脑 访问该网站
这是一个有趣的问题,因为它与OP问题有关,请允许我帮忙。
您必须对网络进行更改,以便每台计算机都知道您的网站所在的位置。 Most everyday routers don't do that因此您必须在网络上运行自己的 DNS服务器。
让我们假装你有一台路由器(192.168.1.1)。该路由器具有DHCP服务器,并为网络上的100台计算机分配IP地址。
现在,让我们假设您拥有与上述相同的网络,192.168.1.5
拥有您网站的计算机。我们将该机器称为 pompei 。
$ echo $HOSTNAME
pompei
与之前相同,192.168.1.5
处的 pompei 机器运行 HTTP服务器,为您的网站symfony.local
提供服务。
对于每台机器都知道 pompei 上托管了symfony.local
,我们现在需要一个知道symfony.local
托管位置的网络上的自定义DNS服务器。然后,网络上的设备将能够在内部解析由 pompei 提供的域名。
第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
。
*注意:* 如果修改/ etc / hosts文件,请务必重启DNSmasq,否则更改将不会生效。
第2步:防火墙
要工作, pompei 需要允许传入和传出的域名&#39;数据包,从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服务器收到答案,然后会在192.168.1.5
上向 pompei 发送正确的 HTTP请求。
我让你玩这个,享受骑行。这两个步骤是主要指导原则,因此如果您是第一次这样做,则必须进行调试并花费几个小时。让我们说这是一个更高级的网络,有主DNS服务器,辅助DNS服务器,etc.。祝你好运!
答案 1 :(得分:13)
要在同一无线和互联网上的两台笔记本电脑上进行测试,您可以使用http://localhost.run/或https://ngrok.com/等服务
答案 2 :(得分:9)
如果两台计算机位于同一工作组中,请在要连接的计算机上打开cmd.exe
,键入ipconfig
并在IPv4 Address
行注明IP。
然后,在您要连接的计算机上,使用http:// + the IP of the target machine
。
应该这样做。
答案 3 :(得分:6)
这个工具为我节省了很多,因为我的机器上没有管理员权限,并且已经安装了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
答案 4 :(得分:6)
在Mac OS X上:
在终端中,运行ifconfig | grep 192.
以在其当前网络上获取您机器的内部IP。它可能类似于192.168.1.140
启动服务器。例如,node server.js
可以在某个端口上启动服务器。
在手机上,访问192.168.1.140:3000
或运行服务器的任何端口。
答案 5 :(得分:5)
可能是您的防火墙阻止您访问localhost的网络服务器
如果需要,将两台计算机的Internet安全防病毒网络安全的IP地址作为安全IP地址
如何查找Windows PC的IP地址:开始&gt; (运行)输入:cmd(回车)
(这会打开黑匣子命令提示符)
输入ipconfig(回车)
假设您的PC上安装了Apache或IIS网络服务器:192.168.0.3
并且您想要使用笔记本电脑访问您的网络服务器。 (笔记本电脑的IP为192.168.0.5)
在您的PC上,您可以在Firefox或Internet Eplorer浏览器中输入:http:// localhost /,以访问您的网络服务器上的数据。
在笔记本电脑上输入http://192.168.0.3/以访问PC上的网络服务器。
要使所有这些工作正常,您需要正确安装网络服务器(例如IIS,Apache,XAMP,WAMP等)。
如果不起作用,请尝试从笔记本电脑ping您的电脑:
在笔记本电脑上打开命令propmt:开始&gt; cmd(回车)
ping 192.168.1.3(回车)
如果ping失败,则防火墙会阻止您的连接,或者您的网络布线有问题。重新启动调制解调器或网络交换机和您的机器
关闭正在使用您的端口的聊天程序等程序
您还可以尝试不同的端口号:
http:192.168.0.3:80或http:192.168.0.3:81或末尾随机数
答案 6 :(得分:4)
如果在完成上述步骤后仍无法从其他设备访问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
答案 7 :(得分:0)
如果您使用的是Windows,请使用 ipconfig 获取本地IPv4地址,然后在Apache配置文件中指定: httpd.conf ,例如:
Listen: 10.20.30.40:80
重新启动Apache服务器并从网络上的其他计算机进行测试。