我目前正在做一个项目,我想在家里的两台笔记本电脑上进行测试,其中一台笔记本电脑连接到另一台本地主机。我正在使用XAMPP。我怎么做呢?
当前回答
如果在执行上面的步骤之后,仍然不能从其他设备访问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
其他回答
这个工具为我节省了很多,因为我在我的机器上没有管理权限,并且已经安装了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/
如果你在Windows上,使用ipconfig获取本地IPv4地址,然后在Apache配置文件:httpd.conf下指定该地址,如下所示:
Listen: 10.20.30.40:80
重新启动Apache服务器并从网络上的其他计算机上测试它。
要在两台笔记本电脑上进行测试,你可以使用http://localhost.run/或https://ngrok.com/这样的服务
如果在执行上面的步骤之后,仍然不能从其他设备访问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
这是完全有可能的。这里我们以Apache为例。
假设你是Symfony2的忠实粉丝,你想从4台不同的计算机(托管你的网站的主要计算机,以及连接到主计算机(无线或非无线)的Mac、Windows和Linux发行版)上访问你的symfony网站http://symfony.local/。
一般示意图:
1搭建虚拟主机:
You first need to set up a virtual host in your apache httpd-vhosts.conf file. On XAMP, you can find this file here: C:\xampp\apache\conf\extra\httpd-vhosts.conf. On MAMP, you can find this file here: Applications/MAMP/conf/apache/extra/httpd-vhosts.conf. This step prepares the Web server on your computer for handling symfony.local requests. You need to provide the name of the Virtual Host as well as the root/main folder of your website. To do this, add the following line at the end of that file. You need to change the DocumentRoot to wherever your main folder is. Here I have taken /Applications/MAMP/htdocs/Symfony/ as the root of my website.
<VirtualHost *:80>
DocumentRoot "/Applications/MAMP/htdocs/Symfony/"
ServerName symfony.local
</VirtualHost>
2配置hosts文件。
For the client (your browser in that case) to understand what symfony.local really means, you need to edit the hosts file on your computer. Everytime you type an URL in your browser, your computer tries to understand what it means! symfony.local doesn't mean anything for a computer. So it will try to resolve the name symfony.local to an IP address. It will do this by first looking into the hosts file on your computer to see if he can match an IP address to what you typed in the address bar. If it can't, then it will ask DNS servers. The trick here is to append the following to your hosts file.
在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;
主机文件
##
# Host Database
# localhost is used to configure the loopback interface
##
#...
127.0.0.1 symfony.local
从现在开始,每次输入symfony。这台计算机上的Local,您的计算机将使用loopback接口连接到symfy . Local。它会理解您想要在localhost(127.0.0.1)上工作。
3进入symfony。来自其他计算机的本地:
我们终于谈到了你的主要问题:
我现在如何通过另一台电脑访问我的网站?
现在这很简单!我们只需要告诉其他电脑如何找到symfony。local!我们怎么做呢?
获取承载网站的电脑的IP地址:
我们首先需要知道托管网站的计算机上的IP地址(我们从一开始就在工作的那个)。在终端中,在MAC和LINUX下输入ifconfig |grep inet,在WINDOWS下输入ipconfig。让我们假设这台计算机的IP地址是192.168.1.5。
在你试图访问网站的电脑上编辑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用户,你可以通过Virtual Box在Internet Explorer上测试你的网站(如果你不想使用Windows计算机),你可以应用相同的策略。这在OSX上制作你的Windows / IE测试环境中有很好的解释。
您还可以从移动设备访问本地主机
您可能想知道如何从移动设备访问本地主机网站。在某些情况下,你不能在你的设备上修改主机文件(iPhone, iPad…)(越狱除外)。
那么,解决方案是在托管网站的机器上安装一个代理服务器,并从iphone连接到该代理服务器。实际上,下面的帖子解释得很好,设置起来并不长:
在Mac上,我建议:在移动设备上使用本地主机名测试Mac OS X网站:使用SquidMan作为代理。这是一个100%免费的解决方案。有些人也可以使用Charles作为代理服务器,但需要50美元。
在Linux上,你可以通过使用Squid作为代理服务器来适应Mac操作系统。
在Windows上,你可以使用Fiddler来做到这一点。解决方案在下面的帖子中描述:用Fiddler监控iPhone流量
编辑23/11/2017:嘿,我不想修改我的Hosts文件
@Dre。任何可能的方式,以访问网站从另一台电脑不 手动编辑主机文件?假设我想要100台电脑 访问网站
这是一个有趣的问题,因为它与OP问题有关,让我来帮忙。
你必须在你的网络上做一个改变,这样每台机器都知道你的网站在哪里。大多数日常路由器不会这样做,所以你必须在你的网络上运行你自己的DNS服务器。
假设您有一个路由器(192.168.1.1)。这台路由器有一个DHCP服务器,为网络上的100台机器分配IP地址。
现在,假设你在同一个网络上有一台192.168.1.5的机器,上面有你的网站。我们把这台机器叫做庞培。
$ echo $HOSTNAME
pompei
和以前一样,192.168.1.5上的机器pompei运行一个HTTP服务器,为你的网站symfy .local提供服务。
让每台机器都知道这个symfony。local托管在pompei上,我们现在需要一个自定义DNS服务器在网络上,它知道symfony在哪里。本地托管。网络上的设备将能够解析庞培内部提供的域名。
3个简单的步骤。
步骤1:DNS服务器
在你的网络上设置一个DNS服务器。为了方便,让我们把它放在pompei上,并使用像dnsmasq这样的东西。
Dnsmasq提供域名系统(DNS)转发器,....
我们想让庞培运行DNSmasq来处理DNS请求嘿,庞培,哪里是symfony。嘿,当然,它是在192.168.1.5,但不要相信我的话。
继续安装dnsmasq, dnsmasq配置文件通常在/etc/dnsmasq.conf中,这取决于你的环境。
我个人使用no-resolv和谷歌服务器server=8.8.8.8 server=8.8.8.4。
*注意:*如果修改/etc/hosts文件,必须重启DNSmasq,否则任何修改都不会生效。
2 .防火墙
为了工作,pompei需要允许传入和传出“域”数据包,这些数据包从端口53发送到端口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。在本地,它会问你的DNS服务器在哪里symfony。local是托管的,一旦它从DNS服务器接收到答案,就会向192.168.1.5上的pompei发送正确的HTTP请求。
我让你玩这个,享受这个过程。这2个步骤是主要的指导方针,所以如果这是您第一次这样做,那么您将不得不花几个小时进行调试。假设这是一个更高级的网络,有主DNS服务器,备用DNS服务器等。好运!
推荐文章
- 如何从同一网络上的另一台计算机连接到此本地主机?
- 127.0.0.1和localhost之间的区别是什么
- 如何允许本地主机上的Apache使用HTTPS ?
- OAuth:如何测试本地url ?
- 为跨源请求设置cookie
- 在Ansible主机上执行命令
- 从Android模拟器访问localhost:端口
- 你能在本地主机地址上测试谷歌分析吗?
- 当ngrok试图连接到React开发服务器时,主机头无效
- 如何在Android模拟器中连接本地主机?
- 如何从iPhone浏览器访问本地主机上运行的网站
- 在MacOS上的Chrome中,NET::ERR_CERT_INVALID上没有“Proceed Anyway”选项
- 在本地主机上使用reCAPTCHA
- 如何从Android模拟器连接到我的http://localhost web服务器
- 从VirtualBox虚拟机寻址localhost