3

我们正在开发将作为托管解决方案提供的应用程序。我非常理解如何使用具有相同代码的多个站点而无需复制基本代码。运行在相同代码库上的多个网站?

例如: 网站1:www.example.com和网站2:www.sample.com将运行相同的代码,但会有不同的配置设置和不同的主题......就像我们运行我们自己的域名在wordpress中。

我想知道我该怎么做。

也在数据库的情况下..会更好,我创建每个网站的个人数据库或使用相同的数据库与网站ID作为列在每个表中。

请帮帮我。

[澄清] 它没有域别名。像...这将是一项服务。其中不同的客户将以不同的主题在他们自己的域名上提供相同的应用。像什么Blogger不会。与自己的域名,但同样的博客应用

[技术] 特别期待在如何使用主机名来确定要使用的配置中,我们使用的是PHP 和MySQL

+0

这不是一个坏问题,但如果您在发布之前花时间对其进行校对,那本来就不错。 – 2009-11-15 08:51:42

+0

我确实检查了以前的问题,发现了这一点。 http://stackoverflow.com/questions/1530286/single-codebase-multiple-websites但无法理解。 – Masade 2009-11-15 08:53:04

+0

正在等待回复 – Masade 2009-11-15 10:49:42

回答

2

重复使用代码是绝对需要的。从你的帖子很难想象这些网站会有什么不同。我们是否在谈论徽标,配色方案或不同的功能?

我会以不同的外观&的感觉开始。我还会假设这是服务器上唯一的应用程序。

我建议仔细规划你的目录结构。例如:

www-root/ 
/lib 
/themes 
     /domain1 
     /domain2 


index.php: 

<?php 
$host = $_SERVER['HTTP_HOST']; 
$include_theme = "themes/" . $host . "/configuration.php"; 
//make sure the file exists 
require_once($include_theme); 

这是一个简单的方法,但有关事情。

+0

这正是我所期待的。只有主题和配置会改变。我将使用数据库中的配置数据。 – Masade 2009-11-25 14:20:25

+0

谢谢。很高兴帮助。如果您有进一步的问题,请在此发布其他评论。 – 2009-12-01 22:50:34

1

实际上它非常简单。

您的代码库可以并且应该是单一的。您将其上传到hosting1和hosting2。当您更新代码时,请立即将其上传到两个主机空间。

我想这也是这个网站的工作原理。看看页面的页脚。你有那里的stackoverflow,元,超级用户和serverfault。如果你看看现在右下角的评论是什么,那将是“svn revision:5404”。一样的东西。一个代码库发布到四个站点。当然数据库是不同的,包含完全不同的内容。

所以可变部分是:

  1. 配置

  2. 设置

  3. 数据

你需要复制那些。

您需要以这种方式对其进行编码,即配置和设置不是硬编码的,而是存储在某个数据库表中,或者至少存储在某些外部配置文件中。这些不构成代码的一部分(或者如果你愿意,可以实现),所以它们不需要在代码中。如果你有他们,把他们拿出来。

+0

我需要使用单个托管来完成。我将主办大约1000个网站。所以它是不切实际的,我更新所有的托管帐户 – Masade 2009-11-15 08:56:35

+0

请解释有多个网站背后的想法是什么?它只是域名或一个家庭的几个网站? – 2009-11-15 08:57:27

+0

它没有域别名。 像...这将是一项服务。其中不同的客户将以不同的主题在他们自己的域名上提供相同的应用。 类似于博客用自己的域名,但同一个博客应用程序。 – Masade 2009-11-15 09:01:38

1

我想你可能有两个不同的域指向同一个服务器,并根据主机名设置不同的配置。我不会推荐这个。您可能会遇到稳定性和性能方面的问题,特别是如果您拥有庞大的用户群或指向代码库的大量域名时。

通常,如果您运行的是多个站点,则每个站点应该有不同的服务器。

编辑:

阅读对方的回答后评论,我理解你的使用情况好一点。

如果您有大量站点需要使用此设置,如果您正确设计架构,并实施某种类型的负载平衡方案以处理大量用户负载,则可以使其工作。

要回顾一下:

  • 得到多个服务器,并在它们之间平衡负载。
  • 设计应用程序来处理大量的用户负载。
  • 使用主机名来确定使用哪个配置。
+0

这会增加我的服务器成本..他们通常如何做呢?博主是我想到的一个例子吗?他们通常如何做到这一点? – Masade 2009-11-15 09:12:16

+0

看到我的编辑。你用什么语言来开发这个应用程序?如果我们知道您正在使用什么来开发应用程序,我们可能能够帮助您实施。 – 2009-11-15 09:15:18

+0

是的,我们正在计划这样做..负载平衡等...... 我无法获得关于如何做第三部分的代码 “使用主机名来确定使用哪个配置” – Masade 2009-11-15 09:17:39

0

我们现在用大约15,000个独特的域来做到这一点。这并不困难,但确实需要一些设计考虑才能正确实施。

您可以关闭一个代码库&服务器,并且基本上只是构建您的代码,以完全依赖传入请求的HTTP_HOST值。然后,您的数据库中的所有内容都将作为正确分隔数据并用相应的数据/ html回答请求的方式。

0

出于安全原因,你可能会考虑:

A)设置单独的open_basedir限制每个主机,以便用户上传的文件不能被其他网站进行访问,例如: /SHARED_LIBRARY /主机1/user_images /host2/user_images

您可以在允许的路径中包含共享和特定于域的目录。

B)连接到每个主机的不同数据库,以防止数据库查询中的任何错误意外地抓取另一个网站的数据,并允许更轻松地扩展数据库服务器(例如将繁忙域移动到不同的数据库服务器上)

如果你有一个非常简单的应用程序,你可能会逃脱一个数据库。

在任何情况下,您都应该制定推出策略,以便在进行更改时不会破坏任何网站。

相关问题