前一陣子在設置用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命令來運行。這在實際使用中需要看需求來靈活采用。
评论