說明
本篇文章為阿寶自己進行 Joomla! 網站版本升級動作時的心得記錄,由於升級動作會牽動的因素繁多,不一定會與你的情況相同,未盡之處尚請見諒。本文章所記載的內容對網站有一定危險性,如果不確定如何操作請交由專業人士處理。
事前準備一:公告周知
架構升級對正在運作的網站來說會是邁向未來的一大步,不過也有可能是災難的開始(笑)。請站務人員務必在作業進行前於網站畫面顯眼處貼出通告,社群頻道與推撥媒介(如 RSS)也別忘了。
為了確保升級前後資料的一致性,有的網站會先關閉像是討論區主題發表、會員文章發表等功能,請依照自己的狀況決定。
事前準備二:備齊工具
以下是阿寶進行網站升級時準備的工具程式,提供參考:
Akeeba Backup Core 與 Akeeba Kickstart
老牌的系統備份元件,其中 Core 版本可免費取得,用來備份整個網站。Akeeba Kickstart 用來回復 Akeeba Backup 製作的網站備份檔,解壓縮速度夭壽快。
很多朋友以為 Akeeba Kickstart 要透過管理區「擴充套件管理 – 安裝」畫面進行安裝,其實這個程式是 Joomla! 之外,獨立運作(Standalone)的解壓縮程式,所以別再問「為什麼不能安裝」了。
PHPMyAdmin
以 PHP 語言寫成的 MySQL 資料庫管理程式,作用為何站長們都很清楚,接下來的內容中會用這個程式作些事情。
FileZilla Client
使用 FTP 服務傳輸檔案的自由軟體,你也可以選擇自己習慣使用的 FTP 程式。
本機電腦的 AMP 環境
阿寶建議在本機電腦進行升級作業,在本機電腦運作 Joomla! 網站需要先行建構 AMP 環境(Apache、MySQL 與 PHP)。Windows 作業系統可以使用 WAMP,Mac OSX 可以參考 MAMP(下載時會連同 MAMP Pro 一起下載,記得執行 MAMP 即可)。
XAMPP有 Windows 與 OSX 版本,Windows 作業系統還可以選擇可攜版(綠色版本),可直接在 USB 隨身碟上執行。
Joomla! 3.3 的運作需求 PHP 5.3.10 或以後版本,只要不要太舊的 AMP 環境都能達標。還有一件事情是:忘了 AppServ 吧,美好的回憶留在過去就好。
即時通訊軟體 Skype 可能會使用 TCP 通訊埠號 80,這會跟 Apache 相衝突,請記得到軟體設定中更改。同時也請注意防火牆軟體(或設備)對 80 及 3306(MySQL 使用)通訊埠號的開啟設定。
▲Windows 防火牆提示
純文字編輯器軟體
調整設定檔內容或是微調 SQL 檔案時使用,Windows 系統可以使用 Notepad++,OSX 可在 Mac AppStore 找到 TextWrangler,兩者都是免費軟體。
事前準備三:清點擴充套件,下載最新版
請透過管理區「擴充套件管理 – 管理」畫面,將 Joomla! 網站所使用的擴充套件項目(包含元件、模組、外掛及佈景主題)一一列出記錄下來,接著到 JED 或是擴充套件開發商網站下載對應 Joomla! 3 系列的最新版本。
如果發現所使用的擴充套件沒有對應 Joomla! 3,看是要寫信詢問開發廠商是否有計畫,不然就是找尋替代品。
進行作業一:全站備份
每次發表 Joomla! 版本更新消息時阿寶都會建議在更新前進行例行備份,比起更新作業還重要的升級作業就更不用說了,透過 Akeeba Backup 把正在運作的網站做個全站備份吧。
備份下來的檔案建議透過 FileZilla Client 下載下來,以阿寶的經驗大小超過 400MB 的備份檔案都不建議使用瀏覽器直接下載,在回復的時候很容易發生資料損毀的情況。
這個全站備份檔案請好好保存,除了作為升級失敗時回復網站使用外,你也需要將網站於本機 AMP 環境中重建使用。在本機 AMP 環境透過 Akeeba Kickstart 回復網站的方式請參考《Joomla! 2.5 素人架站計畫》Ch02 內容。
進行作業二:關閉或移除系統類外掛
系統類(system)外掛與 Joomla! 核心運作息息相關,也因為這個特性讓這類行外掛會綁定 Joomla! 版本,在尚未停用的情況下進行系統升級,會有很大的機率讓升級作業中斷。
建議你在進行系統升級動作前先將所有自行安裝的第三方系統類外掛停用或移除,等到升級作業完成後再安裝最新版本。
進行作業三:匯出元件資料表資料(非必要)
一直以來 Joomla! 使用 MyISAM 作為資料庫驅動引擎,到了 Joomla! 3 開始改用 InnoDB。你可在網路上找到這兩種驅動引擎的比較文章,大致上來說 InnoDB 對系統效能的要求比 MyISAM 來得高,在此同時也提供了更高的穩定性,讓 Joomla! 面對大型網站頻繁、大量的資料存取需求時有更好的表現。
對應 Joomla! 3 的第三方擴充套件(主要是元件類)在安裝時所建立的資料表預設也會使用 InnoDB 作為驅動引擎,不過如果是從 Joomla! 2.5 升級過去的情況,第三方擴充套件使用的資料表有可能不會更動,因為版本更新而需增加的資料表就不會加進資料庫,讓擴充套件運作發生狀況。
阿寶的作法是透過 PHPMyAdmin 的「匯出」功能,先將資料表中的資料匯出成 SQL 檔案(僅資料即可,不要包含結構)。然後將擴充套件移除,如果移除過後資料庫中仍有遺留資料表也一併刪除。
▲PHPMyAdmin 資料匯出畫面,要標記匯出方式為「資料」。
上述動作完成後重新安裝對應 Joomla! 3的新版擴充套件,此時將會以 InnoDB 驅動引擎建立資料表。最後再透過 PHPMyAdmin 的「匯入」功能將先前匯出的 SQL 檔案匯入,這樣你就擁有全新的擴充套件運作架構,而且原有的資料都在喔。
進行作業四:移除不必要的資料表
在網站的運作過程中你可能會安裝,或是移除某些擴充套件,而屬於元件類的擴充套件通常會在資料庫中建立要使用的資料表,這些資料表不一定會隨著元件的移除而一併刪除。
不再使用的資料表除了會增加備份的時間外,也會拉高網站遭受 SQL 資料隱碼攻擊(SQL Injection)的風險。擴充套件所使用的資料表通常會有套件的名稱,確定不會再用到的話就透過 PHPMyAdmin 刪除吧,執行動作前記得先備份喔。
進行作業五:停用「系統 – 記得我」外掛
系統類外掛「記得我」的作用是讓會員登入網站時使用瀏覽器 cookie 功能記住登入帳號及密碼,下次瀏覽網站就不用重新輸入,預設狀態是啟用。
因為尚未查明的原因,這個外掛在系統升級的過程中有可能會造成作業中斷(阿寶升級《華燈初上》時沒有狀況,但在升級部落格網站時發生狀況),所以為了安全起見建議將該外掛停用,等升級作業完成後再行啟用。
進行作業六:調整「Joomla! 更新」元件選項,進行升級
這篇文章的寫作當時 Joomla! PLT 已經更新了原先公布的 Joomla! 主程式發佈計畫,Joomla! 3.3 以後的各次號都會是穩定版本,現在就可以進行升級動作囉。
Joomla! 2.5 管理區的「Joomla! 更新」元件在阿寶撰寫文章的時候尚未因應新版發佈計畫做調整,所以你需要調整元件選項中「更新伺服器」項目為「短期支援」,才能找到 Joomla! 3.3 的更新檔進行更新。
X!更新當中掛掉了怎麼辦?
即使做了前述內容中的各項準備,在更新過程中你也許還是會發生狀況,望著滿白的瀏覽器畫面而不知所措,心中浮現的是那熟悉的…X。
會發生以上情況的主要原因,是網站原有的某個擴充套件與升級過後的 Joomla! 程式起衝突。此時你需要透過文字編輯器軟體開啟 Joomla! 網站根目錄下的「configuration.php」檔案,將其中「public $error_reporting =」字串右方單引號的內容改成「maximum」,然後將滿白的瀏覽器畫面重新讀取,就可以知道是那個擴充套件出包了。
升級後作業一:全站備份
排除前述內容經歷的千辛萬苦,你終於讓自己的 Joomla! 網站在最新的3 系列架構下運作了,還有什麼會比使用 Akeeba Backup 做全站備份更能確保你的心血呢,快做吧!
升級後作業二:安裝新版擴充套件
如果你和阿寶一樣,在升級之前將網站安裝的擴充套件減少到最少範圍以便利升級作業的話,現在就是將最新版擴充套件一一裝回去,同時將原先匯出資料表內容匯入的時候了。
Joomla! 在 3.2 之前使用 mootools JavaScript 運作框架,讓擴充套件有方便的 JavaScript 資源可以使用。到了 Joomla! 3.3,內建的 JavaScript 運作框架改為市佔率第一的 jQuery,某些仍使用 mootools 的擴充套件可能會發生問題,請前往擴充套件開發商網站下載適用於 Joomla! 3.2 以後的版本。
▲擴充套件發行記錄中載明「適用於 Joomla! 3.2」的文字。
升級後作業三:使用 Akeeba Backup 與 Akeeba Kickstart,部署到正式運作空間
託 Akeeba 的福,你可以用非常簡單的方式,將本機 AMP 環境測試好的網站升級版本部署到正式網站運作空間。還原網站內容到正式運作空間的詳細流程請參考《Joomla! 2.5 素人架站計畫》Ch02,簡單敘述如下:
- 在管理區操作 Akeeba Backup 元件,將網站資料及資料庫資料備份成單一備份檔。
- 將上一步驟的備份檔案連同 Akeeba Kickstart 程式上傳到正式運作空間。
- 執行 Akeeba Kickstart 程式,解壓縮網站備份檔案。
- 執行 ANGIE 程式,還原網站資料及資料庫資料。
- 如果你的 Joomla! 網站有開啟 SEF(搜尋引擎友善化)功能,請記得在 ANGIE 程式執行完畢後將網站根目錄的「htaccess.txt」檔案更名為「.htaccess」,避免發生「404 網頁找不到」錯誤訊息。
升級後作業四:再做一次全站備份
到此為止你已經完成網站升級的龍圖大業,在慰勞自己的辛苦同時請別忘了將正式運作的 Joomla! 網站做一次全站備份,辛苦了。
相關資源
- Akeeba Backup:https://www.akeebabackup.com/products/akeeba-backup.html
- Akeeba Kickstart:https://www.akeebabackup.com/products/akeeba-kickstart.html
- PHPMyAdmin:http://www.phpmyadmin.net
- FileZilla:https://filezilla-project.org/
- WAMP:http://www.wampserver.com/en/
- MAMP:http://www.mamp.info/en/
- XAMPP:https://www.apachefriends.org/zh_tw/
- JED(Joomla! Extensions Directory):http://extensions.joomla.org/
- Notepad++:http://notepad-plus-plus.org/
- TextWrangler:http://www.barebones.com/products/textwrangler/