我正在编写一个脚本,我将在一系列Web服务器上展开。 这将允许我在他们每个人上承载数千个站点…脚本的一部分是将新的域和子域添加到数据库中。 虽然我这样做,我要么[一个]添加每个域到我的虚拟主机使用PHP(我不知道如何做到这一点),或者[b]添加某种通配符DNS的任何域指向我的服务器使用Alogging将转到相同的文件/目录,在那里它将被sorting使用htaccess和PHP(我认为更好的select)。 有任何想法吗?
它需要完全由数据库驱动。 所以,当你去test.com/file.htm它将提供dedicateddomain.com/index.php?s=test.com&f=file.htm将拉和显示从MySql的一些内容。
它需要是这样的,因为不值得进入的原因,所以大概我需要做一些虚拟主机的东西,使一切去dedicatedDirector.com和其余与Htacess / modrewrite?
你看过mod_vhost_alias吗?
你可能不需要重新发明轮子。
我有一个类似的设置,允许我在我开发的特定平台上滚动数千个域。
(请注意,如果您想拥有多个dynamic子域名,可以使用通配符DNS条目* .domain.com指向IP和ServerAlias(位于您的某个虚拟主机* .domain.com中) – 但由于这很漂亮简单我不会再去解释如何设置dynamic域的设置)
我不会告诉你什么是最好的方法,因为我相信没有这样的事情,有很多方法可以做你想做的事情:我只希望通过摆脱我的设置一些灯,它可能会帮助您。
将域添加到DNS服务器应该由一些脚本自动化(我更喜欢在bash脚本中使用该function,并将其与PHP或任何其他语言分开)。
照顾一切的脚本太长,但理性很简单:
添加一个域
1.计算序列号(date+一些增量编号)
2.检查域是否存在
3.validationIP(如果你打算在你的系统中使用多个IP地址,如果不是的话,你可以把这个位设置为静态的)
4.添加到named.conf域区域引用
5.创buildzone.db文件
删除域名
1.减less序列号
2.从named.conf中删除域区域引用
3.删除zone.db文件
由于Serverfault并没有很好的显示bash脚本(而且我的脚本很长),所以我把它发布到了pastebin, 你可以在这里find脚本
然后你需要照顾虚拟主机,如果你使用的是Apache 2.2,这很容易,你只需要编写一个脚本来创build一个$ domain.conf文件,其中指定了所有的指令。
第三阶段是使用某种RewriteRule将域传递给index.php,您可以在其中内部redirect该域到相关的结构。
我相信这个模式,因为这是一个模式,可以让你轻松地做出改变和调整。
希望有所帮助。
如果您希望将相同的设置应用于任何Web请求(无论主机名如何),则只需在虚拟节之外设置所需的configuration参数,这意味着对于任何不匹配的请求,它都会“默认”应用任何定义的虚拟主机。
基于名称的虚拟结合通配符DNS可以是一个非常强大的组合。 我有一个有4500个网站的服务器,其configuration可能比普通的httpd.conf长5行,加上BIND中的通配符设置。 最好的部分是,一旦build立起来,就不需要重新configuration任何东西了,只需要创build另一个名称就像你希望被调用的域名,把一些内容放在那里,然后就完成了。