如何处理访问一个“大脑”的多个站点?

时间:2009-08-25 04:49:12

标签: php mysql kohana multiple-sites

一般来说,我的开发只涉及中小型公司和电子商务网站。

我的下一个项目将包含30个站点 - 但是,他们彼此之间的共同点约为95%。我希望他们拥有1个“大脑”,这意味着我可以只进行一次更改,更新框架等。

我想知道Stack Overflow系列网站是否这样做(超级用户,stackoverflow,serverfault等)。

我选择的语言/平台是PHP 5.3,MySQL 5和Kohana Framework。

大脑应该

  • 1个可以处理每个网站的管理系统
  • 所有模板都存在于大脑中 - 但是它们有占位符,例如标题,徽标等
  • 我可以推出对全局模板的任何更新的方式将自动过滤到所有其他网站。

我意识到这会给大脑带来很大的压力,所以我必须经常使用服务器端缓存。

我如何让每个域访问大脑,例如:

http://www.mysite2.com/products/something

默默访问http://www.mothership.com/mysite2/products/something

那会是最好的方法吗?你有什么建议吗?我是在正确的轨道上吗?

随时问我更多细节。

2 个答案:

答案 0 :(得分:3)

最简单的方法是使用虚拟主机。基本上你在一台机器上运行所有站点。这台计算机有一个Apache配置,可以为所有站点提供服务。

如果网站比不同的网站更相似,那么只需将所有网站指向一个目录即可。 PHP文件可以检测他们正在服务的网站。您可以为每个站点提供不同的页眉和页脚来处理外观。您也可以通过这种方式限制某些页面。

如果网站与类似网站不同,则将每个网站指向不同的目录,并在每个目录中包含与这些网站相关的网页。

对于常见功能,您可以使用mod_rewrite之类的东西将不同站点上的URL映射到同一个脚本,或者您可以在每个位置包含/需要常用功能的PHP脚本。

基本上有很多选择。您的目标应该是使网站易于维护并将代码重复保持在最低限度。

根据要求,建议阅读:

答案 1 :(得分:0)

您可以使用<VirtualHost> Directive在Apache中实现此目的。要在Apache 2.x下执行此操作,请编辑httpd.conf并取消注释此行(通常位于文件末尾附近):Include conf/extra/httpd-vhosts.conf。然后找到文件httpd-vhosts.conf并以此格式输入VirtualHosts

<VirtualHost 10.1.2.3>
DocumentRoot /home/site1
ServerName site1.com
</VirtualHost>

<VirtualHost 10.1.2.3>
DocumentRoot /home/site2
ServerName site2.com
</VirtualHost>

<VirtualHost 10.1.2.3>
DocumentRoot /home/site2
ServerName site3.com
</VirtualHost>