前一阵子在设置用Drupal搭建的系列网站时,因为子网站数量众多(上百个),不得不考虑使用批量设置的办法来进行初始设置及修改,否则逐个网站去点击鼠标进行设置的话,每个站点起码要点击几百次,总的鼠标点击次数要达到数万甚至更多,即使鼠标不崩溃的话,人恐怕也得崩溃了。
用Drush是必然的选择,但实际设置中Drush也无法解决所有的问题,还综合使用了一些其它的办法,包括直接修改MySQL数据库,现在把一些典型的修改办法记录如下。
首先要做的是做一个循环sh批处理程序,对需要设置的众多网站进行逐个处理,例如:
#!/bin/bash
DB=(hti hnd hun isl ind idn irn irq irl isr ita jam jpn kaz ken kgz lva lbn lbr lby lie ltu lux mkd mdg mys mdv mli mlt mex mda mco)
#DB=(afg)
for i in "${DB[@]}";do
echo database $i
drush --root=/usr/local/apache2/htdocs/drupal7.postcodebase.com --uri=http://$i.postcodebase.com updatedb -y
drush --root=/usr/local/apache2/htdocs/drupal7.postcodebase.com --uri=http://$i.postcodebase.com cache-clear alldone
用上面这个办法可以进行的设置有:
- Drupal的初始安装;
- Drupal核心及第三方模块的更新;
- 数据库更新;
- 清理缓存;
- 变量设置(例如站点名称、首页网址、cache时间、xmlsitemap时限等);
- 数组变量的设置(要用ev运行简短的php程序来实现,例如theme中的logo和favicon、内部搜索中去掉user搜索等);
- 用ev运行简短程序执行更多操作(例如新增分类词汇表、新增内容类型、新增字段、删除taxonomy_vocabulary、删除node等);
- 检查内部搜索索引生成情况。
在某些情况下,Drush也无法实现批量修改,这时可以尝试采用直接复制例子网站的MySQL相关表的方式,例如在feeds添加初始设置和xmlsitemap中添加多语言站点地图中,都是采用了修改MySQL相关表的办法,这种办法不是很规范,建议慎重采取、反复测试。
还有就是采取综合的办法,有些情况下需要用到php程序来生成drush命令,再运行,例如设置多站点多语言site name的时候,就是先用php程序进行翻译,然后把翻译出的文本做成drush命令来运行。这在实际使用中需要看需求来灵活采用。
评论