多域开发的交钥匙dns服务器和代理。

localdev的Python项目详细描述


localdev
==


一个命令行工具,它将开发域(如*.myserver.dev)映射到在localhost上运行的一组服务器。这个工具是为了显著减少设置多域本地开发的
[痛苦](http://mikeferrier.com/2011/04/04/setting-up-wildcard-dns-on-localhost-domains-on-osx/)
。它取代了像bind或dnsmasq这样的dns
服务器,以及像apache或nginx这样的反向代理。

使用localdev,您可以停止使用/etc/hosts和配置文件。
相反,用一个命令连接开发服务器。

5001上的API服务器和端口5002上承载客户内容的服务器。
localdev通过将每个请求的主机名与规则匹配并将请求代理到相应的端口,将web请求路由到三个服务器。

您还可以将流量路由到运行在其他地方的
服务器,例如在您的局域网上:

sudo localdev--rules"*.here.dev=5000,*.there.dev=192.168.1.10:5000"


sudo是必需的,如果您使用默认端口53和80来处理dns和
http流量。要在没有sudo的情况下运行,您需要提供替代端口,
这对于http来说是很正常的,但是在53以外的端口上设置dns是非常奇怪的。如果这很重要,请参阅选项-d上的[reference](ref)。


它完全包含在一个进程中。


启动时,local dev启动两个服务:一个本地dns服务器,它将tld
(如.dev)映射到localhost,另一个反向代理,它根据配置规则将http请求路由到
服务器。

澄清此过程的趣闻轶事:

>;当您在浏览器中键入"mysite.dev"时,首先您的浏览器会向您的主DNS服务器发出DNS查询。如果安装正确,localdev会说"哟,服务器在localhost上"。然后,您的浏览器像"word"一样,向本地主机端口80发送http请求。然后localdev滑过来说"惊喜!,并根据您定义的规则将http请求代理到目标服务器。不管怎样,"你的浏览器说,

dns是一个基于[devdns]的轻量级服务器(https://github.com/colevscode/devdns)。
反向代理基于[quickproxy](https://github.com/colevscode/quickproxy),
它本身就构建在[tornado]之上(http://www.tornado web.org/)。


使用Mac或Linux:



对于Python用户:


\r设置localhost作为主DNS服务器<;a name="dnslist">;

您的浏览器需要使用它进行DNS解析。
这需要将本地主机(127.0.0.1)放在系统范围内DNS服务器列表的顶部。我还建议添加google的dns地址(8.8.8.8和
8.8.4.4)作为备份服务器(因为localdev不是通用的dns服务器)。

要在mac上执行此操作,请打开系统首选项并打开网络窗格。在
左侧,选择您使用的网络适配器(很可能是您的无线
适配器),然后单击高级。在dns选项卡下,单击dns服务器列表下的+按钮,然后按顺序添加127.0.0.1、8.8.8.8和8.8.4.4。
单击"确定",然后单击"应用"。

![](http://raw.github.com/colevscode/devdns/master/dnsconfig.png)

故障排除(mac)

不幸的是,这也意味着很难为
每个人制作一个现成的dns工具。以下是一些您可以检查localdev是否在
上不起作用的东西,首先尝试:

-使用"dig"查看localdev是否正确地将您的域名解析为127.0.0.1




dig mycolsite.dev


mysite.dev
;<;>;>;>;dig 9.8.3-p1<;>;>;mysite.dev
;;全局选项:+cmd
;;得到的答案:
;->;>;标题<;<;—操作码:查询,状态:无错误,ID:55138
;;标志:qr rd ra;查询:1,答案:1,权限:0,附加:0

;问题部分:
;mysite.dev.in a

;;回答部分:
mysite.dev.60 in a 127.0.0.1

;;查询时间:31毫秒
;;服务器:127.0.0.1 53(127.0.0.1)
;时间:2014年2月2日星期日21:44:45
;消息大小接收:44


如果没有应答部分,请确保已正确配置
[dns服务器列表](dns list)。

-使用"curl-v mysite.dev"查看是否有错误。根据错误的不同,
您可以尝试以下操作:

-`curl:(6)无法解析主机:mysite.dev`

在这种情况下,请尝试刷新DNS缓存并重新启动MDNSresponder:

sudo killall-hup mdnsrresponder

如果那不起作用,卸载并重新加载mdnsresponder:

sudo launchctl unload-w/system/library/launchdaemons/com.apple.mdnsresponder.plist
sudo launchctl load-w/system/library/launchdaemons/com.apple.mdnsresponder.plist

更多讨论[此处](http://apple.stackexchange.com/questions/26616/dns not resolving on mac os)。

-`curl:(52)来自服务器的空回复`


请参阅下面关于以前安装的讨论。

-如果以前安装了bind或dnsmasq,则可能必须禁用这些
服务。

卸载绑定:

sudo launchctl unload-w/system/library/launchdaemons/org.isc.named.plist

可能与dnsmasq类似。

-如果要将端口80转发到非限制端口,如8080,使用ipfw
或pf,这也可能是一个问题。尝试使用该端口运行localdev:

localdev-r mysite.dev=5000-p 8080


>通常,请检查防火墙设置以确保http流量可以到达
localdev。

[-r规则][-p端口][-t tld][-i ip]
[-s sslport][-d dns port][-v][-w]


config
存储代理规则的配置文件。格式
文件的每一行都包含一个源,后跟一个
目标主机:端口。(localhost是默认的
目标主机)例如:

*.myserver.dev 5001

-r规则,--规则规则
source=dest对的逗号分隔列表,其中source是带可选通配符的
域,dest是host:port。
(localhost是默认的目标主机)例如:

localdev-r myserver.dev=5000,*.myserver.dev=5001

-p port,--port port端口。(默认值80)
-t tld,--tld tld使用的tld为了当地的发展。默认值:"dev"。
-i ip,--ip ip本地域将路由到的ip。默认值:
'127.0.0.1'。
-s ssl port,--sslport sslport
如果设置,将在指定端口上启用SSL测试。
-d dnsport,--dnsport dnsport
dns的端口。(默认值53)
-v,--verbose将调试信息打印到控制台。
-w,--watch配置文件中的更改。(需要安装
看门狗)

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java编辑并重新运行spring引导单元测试,无需重新加载上下文即可加快测试速度   为什么我不能做演员?   java为什么是线程。join通常用于停止安卓中的线程   java从weblogic服务器调用JSON POST REST服务时收到400:错误请求   java在DeviceAdmin模式禁用时设置身份验证?   java SortedMap的keySet()能否始终安全地强制转换到SortedSet?   安卓 java。lang.NoSuchMethodException可包裹类   java JOGL库安装   javatomcat内存管理   java使用getString()中的变量   java将最小星号设置为评级栏   Java中字符串相等的println()方法。。。它到底是如何工作的?   java如何从文本中输出的数组中放入随机图像