drupal子域上的模块

时间:2010-07-28 18:55:30

标签: php drupal content-management-system

我的drupal网站在加载新模块时变得非常沉重和缓慢。除了站点的商店部分之外,不需要其中一些模块。

我正在考虑创建一个store子域,并以某种方式仅在该子域中加载这些模块。

  • 这是否意味着我必须安装drupal两次,一次在store.mydrupalsite.com上,一次在mydrupalsite.com上?
  • 在商店子域中,除了专门的商店模块之外,我还需要重新安装基本模块,还是有办法让商店子域以某种方式从主站点继承模块?< / LI>
  • 如果用户已在主站点上登录,该怎么办?他们是否需要在store子域重新登录,或者有没有办法共享数据库?
  • 这个想法真的有什么好处,还是我过于复杂化了?
  • 如果我过度复杂化,我应该做些什么

2 个答案:

答案 0 :(得分:5)

如果您在其他域上创建第二个站点,您实际上是在创建另一个具有不同用户存储,不同配置和不同数据库的独立站点。

你不必做的一件事是重新安装Drupal或重新下载所有模块:Drupal支持一些名为多站点配置的东西,它允许你让多个站点运行相同的Drupal安装。如果您确保要为两个站点共享的模块位于sites / all文件夹中,那么您只需为站点文件夹中的每个网站创建一个包含所需域的新文件夹。

例如,如果您有mydrupalsite.com和store.mydrupalsite.com,则会在名为mydrupalsite.com和store.mydrupalsite.com的sites文件夹中创建两个文件夹。在这些文件夹中,您将拥有settings.php和一个文件文件夹,其中包含该特定网站的所有文件。

您可以在Drupal.org上阅读有关Drupal's multisite feature的更多信息。

所有这一切,你所描述的可能不是最好的方法:将两个站点与不同的用户和数据存储同步是一个真正的难以维护。除非模块调用hook_init()或其他全局钩子,否则当页面实际使用它实现的一个钩子时,它会按需加载。

表示,核心中有一个模块Throttle,可让您指定在网站拥挤时关闭哪些模块。

但是Throttle只走了这么远。如果您希望从Drupal安装中获得最佳性能,您应该开始研究缓存机制,例如BoostMemcachedVarnish,甚至Pressflow

答案 1 :(得分:4)

如果您查看settings.php,它可以很好地解释所谓的multisite

来自settings.php:

 * The configuration file to be loaded is based upon the rules below.
 *
 * The configuration directory will be discovered by stripping the
 * website's hostname from left to right and pathname from right to
 * left. The first configuration file found will be used and any
 * others will be ignored. If no other configuration file is found
 * then the default configuration file at 'sites/default' will be used.
 *
 * For example, for a fictitious site installed at
 * http://www.drupal.org/mysite/test/, the 'settings.php'
 * is searched in the following directories:
 *
 *  1. sites/www.drupal.org.mysite.test
 *  2. sites/drupal.org.mysite.test
 *  3. sites/org.mysite.test
 *
 *  4. sites/www.drupal.org.mysite
 *  5. sites/drupal.org.mysite
 *  6. sites/org.mysite
 *
 *  7. sites/www.drupal.org
 *  8. sites/drupal.org
 *  9. sites/org
 *
 * 10. sites/default
 *
 * If you are installing on a non-standard port number, prefix the
 * hostname with that number. For example,
 * http://www.drupal.org:8080/mysite/test/ could be loaded from

因此。您将创建一个目录store.example.com并仅为该域放置settings.php。 在该目录中,创建一个目录modules并将所有模块放在那里,该模块应该只出现在该域中。