上一篇:Photoshop上写的字不清楚(已解决)
下一篇:如何卸载Office 2007 (已解决)
Drupal 7: 多站点,一套核心代码,一套数据库,共用用户数据,一次登陆,同步session
米娅 2013年5月21日 12:20:51

本来两个网站是一套Drupal 7,使用一个主题(theme),使用两个域名,只是显示时看起来象两个,因为根据域名来判断显示代码。

后来另外有人做其中一个网站的主题(theme),和我原来的主题不同,这样如果坚持用一个主题就有很多代码需要修改... ... 就重新再看Drupal 7多站点

的配置,这次还算顺利。

首先是网站别名的问题,在sites目录下,复制文件example.sites.php,取名为sites.php,然后添加如下一行(这是示例):

$sites['www.cinderellas.ca.test'] = 'slipers.cinderellas.ca'

上面来自Drupal 7文档,可是我试验不成功,到drupal网站上看,很多人说不好用。下面建立了子目录,试了一下,可以用。

$sites = array(
  'aoy.cinderellas.ca' => 'slipers.cinderellas.ca',
);
 
$sites['aoy.cinderellas.ca'] = 'slipers.cinderellas.ca'

cinderellas.ca.test 是一个别名,表示在浏览器地址栏填写 cinderellas.ca/test即可访问新建的slipers.cinderellas.ca这个站点。

下面是介绍如何建立slipers.cinderellas.ca子站点和cinderellas.ca站点共享一套核心代码,自己有数据库,用户数据共享,一次登陆,同步session。

1)在sites下建立子目录:slipers.cinderellas.ca

2)一个办法是将install.php直接拷贝到子目录slipers.cinderellas.ca下,在浏览器里输入cinderellas.ca/sites/slipers.cinderellas.ca/install.php直接安装。
    另一个办法是在slipers.cinderellas.ca子目录下建files, modules, themes 目录,在数据库里再建一套表,表名前缀要有别于cinderellas.ca的那一套。这个方法我还没试成功。

然后,根据default.settings.php来建settings.php,把数据库信息写上。把用户表共享。示例如下:

$databases = array (

  'default' =>

  array (

    'default' =>

    array (

      'database' => 'cin_xxx',

      'username' => 'cin_xxx',

      'password' => 'password',

      'host' => 'localhost',

      'port' => '',

      'driver' => 'mysql',

      'prefix' => array (   
    'default' => 'yyy_', // the prefix for tables that are not shared.   
  
    'users'     => 'y_',
    'sessions'  => 'y_',
    'role'      => 'y_',
    'authmap'   => 'y_',
    'users_roles'   => 'y_',
    ),
  ),
 ),

);

cinderellas.ca用的是前缀为y_的数据库表。

4)调试完成后可以将sites.php中这一行$sites['aoy.cinderellas.ca'] = 'slipers.cinderellas.ca' 用#号注释掉。这样就可以直接用:
slipers.cinderellas.ca来访问了。多站点就建成了。

5)因为sites/all/modules目录下的module是共用的,这里模块虽然不用上传,但需要设置一下,比如和PHPBBS的同步模块。

另外,all/themes的theme并不和all目录下的子目录slipers.cinderellas.ca共用的。根目录下的可共用。

相关链接:Drupal 7: 多站点的实现


共1页
相关链接
1. Warning session_start() function.session-start cannot send session cache limiter - headers already
2. 用Session和Cookie结合实现登陆认证(附代码)
3. Session 与 Cookie