2015年4月13日 星期一

不專業架站經驗:如何升級到Drupal 7?

原始發布日期:22 二月, 2011 10:22

目前最成熟與使用最普級的Drupal版本當屬Drupal 6。今年年初Drupal 7雖已正式釋出,但對於Drupal 6使用者來說是否已經可以升級上去?該怎麼升級?

根據Drupal.org的官方說法,Drupal 7效能更好,使用介面更友善,而且也整合了更多的功能。像是在Drupal 6中使用很普及的CCK,以及圖片上傳介面等。



△ 圖說:Drupal 7管理介面改成Overlay(堆疊)的設計,與Drupal 6有很大的不同。

無論如何,技術這東西都是往前看的,所以如果你現在要架一個新的網站,而且選擇要使用Drupal了,除非你要開發或在使用某種功能,這個功能的相關模組完全不知何時才會從Drupal 6移植到Drupal 7,否則在版本選擇上還是以Drupal 7為優先考量──但你要有Drupal 7的模組選擇還較為缺乏的心理準備。

但如果你目前的網站是以Drupal 6所架設,那麼是否能夠升級到Drupal 7呢?這就要非常謹慎了。

Drupal小升級〔 主要版本內升級〕

Drupal的升級有兩種:一是小升級,一是大升級。

小升級指的是,例如Drupal 6.17升級到Drupal 6.20,也就是在主要版本內的升級──其實這有點類似軟體更新而已。

目前Drupal的「主要版本」在使用中的有Drupal 5.x,Drupal 6.x,以及Drupal 7.x;其中Drupal 6算是最成熟,模組最為完整與多樣,使用也最普遍的主要版本。而最舊的Drupal 5,在官網的Drupal核心下載裡已看不到,如果你是要新架網站,完全不建議使用Drupal 5。

Drupal 6現在最新的版本就是Drupal 6.20。如果你要從前一版本(例如6.17)升級到Drupal 6.20,相當簡單。

我的經驗是,大略依以下升級過程(而且不用很嚴格遵守)就可完成小升級;而如果你的心臟夠強,或者反正你的網站也沒人在看,毀了也不怕,那你也可以試試跳過1, 2,直接從第三步驟開始攪不好也行〔不過這裡的方法本人完全不負責任,網站出問題請自行負責〕:
  1. 將網站設定為離線狀態。
  2. 做好網站備份-包含所有的網站目錄與檔案,以及資料庫。這是做任何網站升級之前一定要做的,以免升級過程當中,和結果有什麼不測,才可以藉由備份檔挽回。
  3. 下載最新版核心程式,解壓縮之後,再把全部的檔案上傳到網站的對應位置去,把舊檔覆蓋掉即可。

如果你是屬於小心謹慎型的人,那麼這是官方建議的標準升級程序:
  1. 以具有管理員身份的帳號登入你的Drupal網站〔最好用天字一號的使用者帳號〕
  2.  到「管理/網站設定/網站維護」(/admin/settings/site-maintenance)將網站狀態設定為「離線」
  3.  保留sites目錄以及你自己所建的資料,其餘網站目錄內所有的核心程式檔案全部移除。如果你有修改.htaccess或robots.txt等檔案,或是settings.php,記得在完成安裝之後重新套用之前備份的設定。
  4. 下載最新的Drupal 核心程式版本,解壓縮之後上傳到你的Drupal網站的相對應目錄裡。
  5. 必要時重新套用你的一些網站設定,如.htaccess或robots.txt。
  6. 執行updaet.php資料庫表格更新。如果網站未自動出現這個更新要求,可以在你的網站網址後面輸入/update.php

(類似這樣:http://www.example.com/update.php)。

如果無法執行update.php,打開setting.php進行設定的修改:
將以下程式碼

 $update_free_access = FALSE;

改成:

 $update_free_access = TRUE;

在做好更新後,記得把這個設定值改回FALSE的設定值。

7. 到網站狀態報告網頁(/admin/reports/status)確認一切正常,升級後沒有任何問題。

8. 確認settings.php檔案內的$update_free_access的設定值為FALSE。

9. 重新將網站狀態設為「上線」。

Drupal 6升級到Drupal 7

如果你的網站代管在有CPanel的ISP那裡,那麼不管大小升級,升級過程可能相當簡單,只需按幾個下一步就完成,完全不需這裡的說明方法,但既使你有Cpanel,網站該不該升級,能不能升級,還是必需先經過評估。

特別是主要版本之間的升級不是把核心程式升級上去就可以了,更大的問題會是你在Drupal 6上的模組/功能Drupal 7已準備好了嗎?

例如,先前我的升級評估中就發現,我的Drupal 6網站中所使用的重要模組Gmap,都還未移植到Drupal 7。而在Drupal 7釋出之後的這一個多月中也接觸與使用過很多模組及版型,也發現到尚未從Drupal 6移植到Drupal 7的情況相當普遍。

所以,以目前的時間點來說,在做升級決定之前,對於模組與功能問題,一定要做好謹慎的評估與測試--如果你需要的模組還未移植,是否有解決方案?就算已移植過去了,是否有相容性及執行上的問題 ?

也因此,在以下所整理的官方升級文件中未說明的是,商業性的網站,強烈建議,先在測試網站進行測試運作,確定可行之後再進行升級。 〔我記得先前有看過一份說明如何做測試的官方文件,一時之間找不到,找到之後會在此提供連結〕

由於我的Drupal 6網站有許多模組在Drupal 7中都沒有解決方案,所以我目前並沒有將它升級到Drupal 7,也就暫時沒有樣本可以step by step跟看倌介紹升級過程。退而求其次,我將官方的升級文件整理如下,以供有升級需要的朋友做為參考(相關文件可在Drupal 7核心程式中找到UPGRADE.txt檔):
1. 檢查你所使用的模組及版型(themes)是否已移植到Drupal 7。

〔註:檢查完之後,如果你所用的模組與版型Drupal 7還沒準備好,那麼大概就註定你暫時不能升級到Drupal 7,以下程序就不用再看;若確定可以升級,要謹慎安全起見,那麼建議先在原網站下開一個子目錄安裝Drupal 7進行測試,沒問題再進行升級。〕



△ 圖說:從Drupal 6升級到Drupal 7的主要問題都圍繞在模組上,升級之前的評估裡,要先確認你所需的模組Drupal 7都已準備好;而在升級過程當中,必需先關閉核心模組之外的其他安裝模組,圖中模組為核模組

2. 更新到最新的Drupal 6.x版本。如果你是Drupal 5.x使用者,那麼必需先升級到Drupal 6.x。

3. 以天字第一號使用者(ID 1)身份登入網站。〔就是當初架站安裝Drupal那個帳號〕

4. 到「管理/網站設定/網站維護」(/admin/settings/site-maintenance)將網站狀態設定為「離線」,然後儲存設定。




5. 到「管理/網站建置/版型」(admin/build/themes),將預設版型設回Garland。


6. 到「管理/網站建置/模組」(admin/build/modules)將「核心」類以外的模組,全部關閉。〔由於模組與模組間有依存關係,所以可能重覆操作很多次才能夠將所有非核心模組都關閉〕

如果有些模組是你不會在Drupal 7中用到的,而且相關資料你也不會再使用,那麼可以將此模組移除。

7. 移除網站中的sites/default/default.settings.php檔案

8. 除了sites目錄,以及你自己加入的檔案與資料匣保留之外,所有的核心程式檔案與資料匣全數移除。

如果你修改了.htaccess或robots.txt等檔案,記得在升級完成時重新從備份檔中重新套用舊的設定。

9. 如果要移除任何的模組,請從sites/all/modules,移以及sites/*/modules移除。其餘的模組,不管與Drupal 7相不相容,都應保留在原處。

10. 下載最新版的Drupal 7,解壓縮之後把裡面的檔案與目錄上傳到你的Drupal網站的相對應位置。

11. 重新套用.htaccess或robots.txt

12. 將settings.php檔設為可寫入,讓更新過程當中能夠將它轉變成Drupal 7.x 的設定檔,通常它的位置在:

 sites/default/settings.php

〔初學者看這裡:一般在Linux主機裡這個檔案的權限為444,更改方式為:在FTP上傳介面上,在settings.php檔案上按滑鼠右鍵,選擇「檔案權限」,然後勾選「寫入」的權限,或者將下方「444」的數字改為666。但在完成升級之後記得把權限設定設回成444。〕

↓ Linux主機上更改檔案權限方法,透過FTP軟體連上主機後在檔案上按滑鼠右鍵,選擇檔案權限





↓ 勾選"寫入",或把下方的444數值改成666



 


13. 執行update.php進行資料庫表格更新,如果系統未自動出現該更新通知,請自行在網址後輸入/update.php(類似這樣http://www.example.com/update.php)。

如果無法更新update.php,請依以下方式修改settings.php:

以文字編輯器開啟settings.php :

找到以下的程式碼

 $update_free_access = FALSE;

將上面的程式碼改成:

 $update_free_access = TRUE;

完成Drupal更新之後,記得把$update_free_access改回成FALSE

14. 在核心程式更新之後,備份你的資料庫

15. 上傳非核心的模組與版型,

16. 到「管理/報告/狀態報告」(admin/reports/status)確認升級是否成功

17. 確認settings.pho的$update_free_access改成FALSE值。

18. 到「管理/設定/開發/維護模式」(admin/reports/status)把網站狀態更改為「上線」(取消勾選「以離線模式運作」核取方塊)。



最後,不管做什麼樣的升級,過程當中如果遇到什麼錯誤訊息,記得將錯誤訊息完整記錄下來。

而如果升級失敗,除了記錄當中的錯誤訊息之外,建議先利用備份,把網站回覆,再依所記錄的錯誤訊息,去社群尋找解決之道。

沒有留言: