我在本地networking中为我的django项目提供服务时遇到问题。 每个项目在hosts文件中都需要一个唯一的域名。 在我的本地networking中,其他计算机无法看到这些项目。
我的电脑IP在networking上是192.168.2.2我电脑上的主机文件如下:
127.0.0.101 myProject1.local 127.0.0.102 myProject2.local 127.0.0.103 myProject3.local
我想我必须这样做,但它不起作用。
192.168.2.101 myProject1.local 192.168.2.102 myProject2.local 192.168.2.103 myProject3.local
最后,我find了解决scheme,它必须在本地networking中build立一个DNS服务器,如果你有任何服务器版的操作系统计算机,它将很容易configuration其DNS服务器,并指向你的项目IP。 但是当networking中没有服务器计算机(例如:家庭networking)时,问题就是find一个DNS服务器来搪塞责任。
我将在Windows 7上configurationApache或其他任何东西来处理与WSGI的Django项目…
我的本地IP地址是192.168.2.2,并且在路由器设置中将其与我的MAC地址绑定。
注意:请务必使您的IP不可更改,否则会使您的DNS服务器和本地networking不稳定。
第一步是configurationApache运行项目:
下面将为www.myproject1.local上的myProject1和www.myproject2.local上的myProject2
NameVirtualHost *:80 <VirtualHost *:80> ServerName www.myProject1.local ServerAlias myProject1.local *.myProject1.local ServerAdmin [email protected] DocumentRoot "C:/path/to/myProject1/" </VirtualHost> <VirtualHost *:80> ServerName www.myProject2.local ServerAlias myProject2.local *.myProject2.local ServerAdmin [email protected] DocumentRoot "C:/another/path/to/myProject2/" </VirtualHost> ...
有关更多信息,请访问:[基于Apache名称的虚拟主机支持]
如果你想服务一个PHP项目的作品,但要configurationWSGI,你必须做一些像下面的变化。 我把project1当成django项目
<VirtualHost *:80> ServerName www.myProject1.local ServerAlias myProject1.local *.myProject1.local ServerAdmin [email protected] #WSGIDaemonProcess myProject1 processes=2 threads=15 display-name=%{GROUP} #WSGIProcessGroup myProject1 WSGIScriptAlias / "C:/path/to/myProject1/myproject1.wsgi" </VirtualHost> ...
一定要加载:[mod_wsgi.so]
注释行WSGIDaemonProcess和WSGIProcessGroup是执行更好的WSGI服务的更多信息的选项访问:[mod_wsgi Wiki页]
现在你必须configuration你的DNS服务器。 在我的情况下,我没有在我的电脑上安装DNS服务器,所以第一步是find适当的DNS服务器来完成这项工作。
我使用[MaraDNS],并configuration它如下所示:
mararc文件
ipv4_bind_addresses = "192.168.2.2" timestamp_type = 2 random_seed_file = "secret.txt" hide_disclaimer = "YES" csv2 = {} csv2["myproject1.local."] = "db.default.txt" csv2["myproject2.local."] = "db.default.txt" upstream_servers = {} upstream_servers["."] = "yyy.yyy.yyy.yyy, zzz.zzz.zzz.zzz"
和下面的db.default.txt文件
% 192.168.2.2 ~ www.% 192.168.2.2 ~
有关maraDNS的更多信息,请访问MaraDNS网站
午餐maraDNS服务器
maradns -f mararc
您可以通过将主DNS服务器设置为指向本地networking中每台计算机的192.168.2.2来访问您的域。 但您也可以设置路由器DHCP服务器使用您的IP作为默认的DNS服务器。 它只需要访问路由器networkingpipe理。
所以input您的IP作为DNS服务器和工作完成。
现在,您可以在本地networking中将您的项目作为伪造域来使用,而无需使用:端口号或IP地址。 只需在任何本地networking计算机或WiFi设备的地址栏中inputmyproject1.local即可获得正确的结果。
🙂
你正试图做的是在同一个主机上设置多个IP地址,而不是域名。 您尝试执行的操作有几个问题:首先,您似乎只在运行服务器应用程序的计算机上设置hosts
文件,这意味着networking中没有其他计算机可以知道它们。
另一个问题是,要在同一个主机上设置多个IP地址,您必须在networkingconfiguration中执行此操作,并且根据所使用的操作系统不同而有所不同。
第三件事是你不需要每个主机一个IP地址。 一个IP地址可以有许多主机名。 这是在名称服务器中设置的,或者如果您没有用于本地networking,则可以在hosts
文件中使用别名:
192.168.0.101 hostname1 hostname2 hostname3
然后在Apache(或任何您使用的Web服务器)中使用基于名称的虚拟主机 。
并且使用127.xxx范围内的IP地址logging当前的设置,这些对于主机来说总是被认为是本地的,所以尝试通过该地址范围连接另一台计算机将永远不会工作。