【问题标题】:Mutliple sites on same server sharing code同一服务器上的多个站点共享代码
【发布时间】:2009-06-24 21:38:38
【问题描述】:

我将制作一系列大约 5 个网站。它们都需要在同一个系统上运行。我计划让它们都指向同一个服务器,然后根据用于访问它的域,将提供不同的内容/样式。因此,它本质上将是 5 个左右不同的零售网站,专门从事特定的产品类型。

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

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

谢谢!

【问题讨论】:

    标签: php architecture lamp


    【解决方案1】:

    对我来说听起来很简单

    只要有一个目录:

    /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 这样的东西应该指定发生错误时哪个特定站点正在使用该库等等。

    祝你好运

    【讨论】:

      【解决方案2】:

      我目前正在编写一个内容管理系统来解决这个确切的问题。一些我觉得很有帮助的事情。

      在开发您的网站时,请尽量减少每个网站的共同点。也就是说,您的所有网站都有哪些元素?例如,每个网站都会有一系列页面,可能还有某种形式的购物车系统。

      对于我的系统,每个站点都有一个单独的模板文件。这样,我将我的 PHP 和 HTML 分开,这让事情变得容易多了。一旦我有了最小的公分母,对我来说最大的挑战就是区分网站。

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

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

      希望这会有所帮助。

      【讨论】:

        【解决方案3】:

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

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

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

        即:

        $host = $_SERVER["HTTP_HOST"];
        
        $rs = mysql_query("SELECT * FROM products WHERE website = '$host'");
        
        // ...etc
        

        注意:此代码仅用于说明目的。正如所写的那样,它容易受到 SQL 注入的影响,你应该适当地保护它。

        【讨论】:

          猜你喜欢
          • 2013-11-11
          • 1970-01-01
          • 1970-01-01
          • 2017-05-22
          • 1970-01-01
          • 2011-04-14
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多