Drupal で、サイトを複製する方法

Drupal は、設定ファイル settings.php を除き、設定情報やコンテンツはすべてデータベースに入っているので、リファレンスモデルとなるサイトを作って(すなわち、インストールした直後または、少しの修正をほどこしたサイト)、そこでできたデータベースまたはテーブルをコピーすればよい。 まずは雛形となるサイト(https://template.yourdomain.com など)を作る。その後、settings.php の内容を修正したものを適切なディレクトリにコピーしてから、https://newsite.yourdomain.com/install.php を走らせる。 以下はサイトを複製する SQL スクリプト。仕様としては、
  • コピー元となるサイト
    • データベース名: drupal
    • テーブル名のプリフィックス: template_
  • コピー先のサイト
    • データベース名: drupal
    • テーブル名のプリフィックス: newsite_
このスクリプトを実行するとサイトを大量生産できるのだ。
CREATE  TABLE  `drupal`.`newsite_accesslog` (  `aid` int( 11  )  NOT  NULL  auto_increment ,
`sid` varchar( 64  )  NOT  NULL default  '',
`title` varchar( 255  )  default NULL ,
`path` varchar( 255  )  default NULL ,
`url` varchar( 255  )  default NULL ,
`hostname` varchar( 128  )  default NULL ,
`uid` int( 10  ) unsigned default  '0',
`timer` int( 10  )  unsigned NOT  NULL default  '0',
`timestamp` int( 10  )  unsigned NOT  NULL default  '0',
PRIMARY  KEY (  `aid`  ) ,
KEY  `accesslog_timestamp` (  `timestamp`  )  ) ENGINE  =  MyISAM  DEFAULT CHARSET  = utf8;

CREATE  TABLE  `drupal`.`newsite_profile_fields` (  `fid` int( 11  )  NOT  NULL  auto_increment ,
`title` varchar( 255  )  default NULL ,
`name` varchar( 128  )  default NULL ,
`explanation` text,
`category` varchar( 255  )  default NULL ,
`page` varchar( 255  )  default NULL ,
`type` varchar( 128  )  default NULL ,
`weight` tinyint( 4  )  NOT  NULL default  '0',
`required` tinyint( 4  )  NOT  NULL default  '0',
`register` tinyint( 4  )  NOT  NULL default  '0',
`visibility` tinyint( 4  )  NOT  NULL default  '0',
`autocomplete` tinyint( 4  )  NOT  NULL default  '0',
`options` text,
PRIMARY  KEY (  `fid`  ) ,
UNIQUE  KEY  `name` (  `name`  ) ,
KEY  `category` (  `category`  )  ) ENGINE  =  MyISAM  DEFAULT CHARSET  = utf8;

CREATE  TABLE  `drupal`.`newsite_profile_values` (  `fid` int( 10  ) unsigned default  '0',
`uid` int( 10  ) unsigned default  '0',
`value` text,
KEY  `uid` (  `uid`  ) ,
KEY  `fid` (  `fid`  )  ) ENGINE  =  MyISAM  DEFAULT CHARSET  = utf8;

DELETE FROM `drupal`.`newsite_accesslog`;
DELETE FROM `drupal`.`newsite_access`;
DELETE FROM `drupal`.`newsite_blocks`;
DELETE FROM `drupal`.`newsite_blocks_roles`;
DELETE FROM `drupal`.`newsite_filters`;
DELETE FROM `drupal`.`newsite_filter_formats`;
DELETE FROM `drupal`.`newsite_menu`;
DELETE FROM `drupal`.`newsite_permission`;
DELETE FROM `drupal`.`newsite_profile_fields`;
DELETE FROM `drupal`.`newsite_profile_values`;
DELETE FROM `drupal`.`newsite_role`;
DELETE FROM `drupal`.`newsite_sequences`;
DELETE FROM `drupal`.`newsite_system`;
DELETE FROM `drupal`.`newsite_users`;
DELETE FROM `drupal`.`newsite_variable`;

INSERT INTO `drupal`.`newsite_accesslog` SELECT * FROM `drupal`.`template_accesslog`;
INSERT INTO `drupal`.`newsite_access` SELECT * FROM `drupal`.`template_access`;
INSERT INTO `drupal`.`newsite_blocks` SELECT * FROM `drupal`.`template_blocks`;
INSERT INTO `drupal`.`newsite_blocks_roles` SELECT * FROM `drupal`.`template_blocks_roles`;
INSERT INTO `drupal`.`newsite_filters` SELECT * FROM `drupal`.`template_filters`;
INSERT INTO `drupal`.`newsite_filter_formats` SELECT * FROM `drupal`.`template_filter_formats`;
INSERT INTO `drupal`.`newsite_menu` SELECT * FROM `drupal`.`template_menu`;
INSERT INTO `drupal`.`newsite_node` SELECT * FROM `drupal`.`template_node`;
INSERT INTO `drupal`.`newsite_node_access` SELECT * FROM `drupal`.`template_node_access`;
INSERT INTO `drupal`.`newsite_node_comment_statistics` SELECT * FROM `drupal`.`template_node_comment_statistics`;
INSERT INTO `drupal`.`newsite_node_revisions` SELECT * FROM `drupal`.`template_node_revisions`;
INSERT INTO `drupal`.`newsite_node_type` SELECT * FROM `drupal`.`template_node_type`;
INSERT INTO `drupal`.`newsite_permission` SELECT * FROM `drupal`.`template_permission`;
INSERT INTO `drupal`.`newsite_profile_fields` SELECT * FROM `drupal`.`template_profile_fields`;
INSERT INTO `drupal`.`newsite_profile_values` SELECT * FROM `drupal`.`template_profile_values`;
INSERT INTO `drupal`.`newsite_role` SELECT * FROM `drupal`.`template_role`;
INSERT INTO `drupal`.`newsite_sequences` SELECT * FROM `drupal`.`template_sequences`;
INSERT INTO `drupal`.`newsite_system` SELECT * FROM `drupal`.`template_system`;
INSERT INTO `drupal`.`newsite_users` SELECT * FROM `drupal`.`template_users`;
INSERT INTO `drupal`.`newsite_variable` SELECT * FROM `drupal`.`template_variable`;

UPDATE `drupal`.`newtable_sequences` SET `name` = 'newtable_users_uid' WHERE CONVERT( `newtable_sequences`.`name` USING utf8 ) = 'template_users_uid' LIMIT 1 ;
UPDATE `drupal`.`newtable_sequences` SET `name` = 'newtable_menu_mid' WHERE CONVERT( `newtable_sequences`.`name` USING utf8 ) = 'template_menu_mid' LIMIT 1 ;
UPDATE `drupal`.`newtable_sequences` SET `name` = 'newtable_node_nid' WHERE CONVERT( `newtable_sequences`.`name` USING utf8 ) = 'template_node_nid' LIMIT 1 ;
UPDATE `drupal`.`newtable_sequences` SET `name` = 'newtable_node_revisions_vid' WHERE CONVERT( `newtable_sequences`.`name` USING utf8 ) = 'template_node_revisions_vid' LIMIT 1 ;
トラックバック URL: https://perltips.twinkle.cc/trackback/243