五月 9, 2016 | 後端和Drupal

如何將一般drupal網站轉換Multi-site多網站??

對於網站轉換成Multi-site十分心動? 但是又感覺無從下手呢? 來看看這篇吧

前言:

在看過,上一篇「一鍵升級你所有客戶的安全性更新: Drupal Multi-Site 多網站架構」後大家是否對於網站轉換成Multi-site十分心動?但是又感覺無從下手呢?
這邊讓我們來說說,如何讓一般drupal網站轉換成Multi-site!!

建立Multi-site的drupal網站

相信大家在上一篇「一鍵升級你所有客戶的安全性更新: Drupal Multi-Site 多網站架構」中已經對Drupal Multi-Site有了認識,所以這邊就簡單提出以下大致Drupal Multi-Site網站建立步驟,詳細的還請大家回到上一篇詳讀喔!!

1.建立一個Folder,並且名字取名為新網站的Domain名稱。
ex:建立Multi-site的資料夾"domain.hellosanta.tw"。

2.複製default.settings.php到「domain.hellosanta.tw」這個資料夾,並且改名為settings.php。

3.移動files資料夾到「domain.hellosanta.tw」這個資料夾。

4.開始Drupal的安裝流程。

5.匯入之前網站的資料。

註:原本的模組或版型先不要移動,維持在sites/all/底下,等等才處理。

資料庫更動

這時會發現,node頁裡面的圖片路徑是失敗的,這是因為原本網站的圖片路徑是/sites/default/,如何解決呢!?

1.資料庫匯出

把MYSQL資料庫dump出來,移動至domain.hellosanta.tw資料夾內執行。

mysqldump -u root -p d7 > old_d7.sql  

2.更改匯出的資料庫

更改dump出來的MYSQL資料庫,把old_d7.sql裡面所有/sites/default/路徑,更改成/sites/domain.hellosanta.tw/的路徑。

sed [email protected]/default/@sites/domain.hellosanta.tw/@g old_d7.sql > new_d7.sql

3.刪掉現有的資料庫

清除舊的資料庫,為了防止部份資料錯誤問題,先清空Drupal的資料庫(執行前先"備份"資料庫喔!!)。

drush sql-drop

4.匯入更改後的資料庫

把更改過路徑的new_d7.sql匯入回d7的資料庫。

mysql -u root -p d7 < new_d7.sql

這時開啟網站,會看到node頁裡面的所有圖片,都以可以正常顯示。

註:執行以上步驟前,最好都要先備份的資料庫,以避免失敗後,無法重來。

遷移模組

在一開始的時候,我們有提到所有的sites/all底下都先放到一樣的位子,這個時候如果不想共享模組或版型,就必須把檔案搬到,sites/domain.hellosanta.tw/底下的modules或themes或libraries。

1.建立資料夾

在sites/domain.hellosanta.tw/內建立modules、themes、libraries

mkdir modules themes libraries

2.安裝drush的模組

registry_rebuild算是個更新drupal註冊表的drush模組。

drush dl registry_rebuild

3.清除網站快取

如果沒有清除快取,下面在執行模組搬移之類的動作時,有極大機率造成drush rr的錯誤。

drush cc all

4.移動模組

到sites/all/modules,找到至幾不想共享的模組。

mv xxx ../../domain.hellosanta.tw/modules/ 

移動到sites/domain.hellosanta.tw執行drush rr 更新註冊表。

drush rr

完成網站轉換。

註:
drush rr 如果出現錯誤,請查看錯誤,並且把錯誤的模組mv回原本路徑,接著在drush rr 一次。
移動任何東西前,一定要清除快取。

結論

drupal 轉換成Multi-site的障礙,主要就是node中的圖片路徑問題與模組版型的移動,這些問題的解決,使之前沒有使用Multi-site來架設的網站,都能開始轉換Multi-site來運行,不用再面對每次安全性更新時維護上的麻煩,也節省了許多的空間與時間。

還在對於使用Multi-site感到心動,但是擔心舊網站而遲遲不知如何下手嗎?快來試試吧!!