同一服务器上的多个站点共享代码

时间:2009-06-24 13:16:02

标签: php architecture lamp

我将制作一系列约5个网站。他们需要在同一个系统上运行。我打算让它们都指向同一台服务器,然后根据使用哪个域来访问它,将提供不同的内容/样式。所以它基本上是5个左右不同的零售网站,专门从事特定的产品类型。

但是所有人都使用相同的后端代码,以便更容易维护。我以前从来没有设置过这样的东西,想知道是否有任何我应该考虑的信息,或者是否有人知道一个解释如何做得好的好地方?

此外,我们不会托管自己,而是通过托管公司(如果这很重要)。

谢谢!

3 个答案:

答案 0 :(得分:2)

对我来说非常直接

只要一个目录:

/var/www/siteLibraries/foo.php

或其他合适的目录。

/var/www/site1/foo.php
/var/www/site2/foo.php

并在PHP(http://uk.php.net/manual/en/language.oop5.autoload.php)中设置默认类加载,以便当专家网站实例化一个类时......它将搜索该网站的本地库(用于专家覆盖)和然后默认为共享库。您也可以这样安排内容。

一个简短的解释,但是如果您不需要担心两个站点共享权限(我假设客户不会编辑代码),那么我将如何处理它的粗略概述。

请记住:您的每站点代码应该专门从默认代码库开始(OOP非常适用于此)。什么不具体,是共享的。当然,共享代码库应该知道它是共享的,所以 logs 之类的东西应该指定在发生错误时哪个特定站点正在使用该库以及所有这些。

祝你好运

答案 1 :(得分:0)

我目前正在编写一个内容管理系统来解决这个问题。我发现有些事情有助于思考。

开发网站时,请将每个网站减少到最低公分母。也就是说,您的所有网站都有哪些共同点?例如,每个网站都有一系列页面,可能还有某种形式的购物车系统。

对于我的系统,我为每个站点都有一个单独的模板文件。通过这种方式,我将PHP和HTML分开,这使事情变得更加容易。一旦我有了最低的共同标准,对我来说最艰难的挑战是将网站分开。

我使用我的htaccess文件将example.com重定向到www.example.com - 这样,我就可以从标题中可靠地获取www.example.com,并使用它来从中选择给定网站的信息数据库。

艾登在代码特定方面也有一些好处。对我来说,我发现代码不是特别重要的问题,而是我如何为多站点环境实现该代码。

希望这有帮助。

答案 2 :(得分:0)

如果您希望您的网站具有不同的代码库,Aiden的方法看起来非常好。

如果您的需求更简单,即所有网站都运行相同的代码,但根据域名显示不同的内容,那么您也可以使用更简单的解决方案。

将所有域指向脚本所在的同一目录,并根据HTTP“主机”值区分要发送的内容类型。

即:

$host = $_SERVER["HTTP_HOST"];

$rs = mysql_query("SELECT * FROM products WHERE website = '$host'");

// ...etc

N.B:此代码仅用于说明目的。如上所述,它易受SQL注入攻击,你应该适当地保护它。