我如何學會停止憂慮而愛上 WordPress 升級

WordPress 架站的人都知道,升級新版本永遠是件讓人焦慮的事。就算之前的升級都很順利,每次要升級時還是會擔心發生意外毀了網站或資料庫。自從架站至今,每次有新版本我都會立即升級。剛開始的時候,無論是備份資料庫、上傳、下載或刪除檔案,總是會有那種「按錯一個鍵就是世界末日」的恐慌。這就是為什麼我每次升級時都想到「奇愛博士(Dr. Strangelove)」;這篇文章的標題就是這麼來的。

官方網站的升級指引中「How to Upgrade in Five Steps」列出的升級步驟,對於上傳頻寬有限的 ADSL 使用者來說不是非常方便。三百多個檔案,傳輸量接近 2 MB,得花不少時間。連線不穩時,你還得擔心到底是不是所有檔案都上傳成功了。不僅如此,下載舊檔案備份得花時間,透過 FTP 軟體刪除遠端主機的大量檔案也需要較長的時間。這些,都增加了升級時的焦慮。

所有的 WordPress 使用者都一樣,升級的經驗多了,總會學到一些讓自己比較不焦慮的方法。我的紓壓方法如下:

1. Mark Jaquith 的更新檔案壓縮檔(Changed Files ZIP)

我覺得最有幫助的,是 Mark Jaquith 在每次 WordPress 釋出新版後製作的更新檔案壓縮檔。他會找出前後版本間有差異的檔案,再把這些檔案挑出來。只要解壓縮後上傳至 WordPress 資料夾,就完成升級了。不用上傳全套的軟體,減少許多上傳的時間。當然,謹慎一點,還是要先備份資料庫與舊版的檔案。我的朋友蘇三寫過一篇「我的 WordPress 2.0 昇級步驟」,裡頭詳細說明了如何備份資料庫,也讓我獲益良多。

最新的 WordPress 2.0.6 版釋出後,Mark Jaquith 也把 2.05 到 2.06 的更新檔案壓縮檔做好了。請參閱「WordPress 2.0.6 Upgrade: changed files ZIP, changes diff, changed files list」。如果升級後遇到 feedburner 的問題,請再參考這篇:「WordPress 2.0.6: Feedburner issue, and fix」。

從 2.0.4 升級到 2.0.5 版,我就是利用這套更新檔案升級的。要注意的是,更新檔是不包含 wp-content 資料夾的更新的。如果 wp-content 內的 themesplugins 資料夾有更新的檔案,你還是得自行上傳標準安裝檔中的新版取代舊版。

2. Unix Shell

這次從 2.0.5 升級到 2.0.6 版,我因為比較心急,在 Mark Jaquith 釋出最新的更新檔前就完成升級了。用的是我習慣的另一種方式:透過 Unix shell 升級。

我的作法是,先用 phpMyAdmin 備份資料庫,然後在 WordPress 管理介面關閉 plugins。之後,就直接以 ssh 或 telnet 登入虛擬主機,在 Unix shell 完成下載、備份與複製(我的虛擬主機作業系統是 Linux)。直接在主機上操作,不僅速度比較快,我也覺得比較安心一點。不備份舊檔的話,只要三步即可完成更新。假定原來的 WordPress 安裝於 ~/blog 資料夾:

wget http://wordpress.org/latest.tar.gz
tar -xzf latest.tar.gz
cp -Rpf ./wordpress/* ./blog

接著執行 upgrade.php,逐一啟動 plugins,就完成升級了。這個標準的升級程序,從頭到尾不會超過一分鐘。

我比較保守一點,在下載與解壓縮新版軟體後,還是會先備份所有舊檔案:

cp -Rpf ./blog/ ./backup

再進入 blog 資料夾,把安裝位置根目錄「不該刪」的三個檔案,複製一份到新版軟體所在處:

cd blog
cp -p .htaccess wp-config.php favicon.ico ../wordpress

此時仍在 blog 資料夾。如果是從 2.0.5 升級到 2.0.6 版,依照官方網站上 Upgrade 2.0.5 to 2.0.6 的說明,在備份之後刪除指定的舊檔案:

rm -r wp-content/plugins/akismet/*
rm -r wp-content/themes/default/*
rm -r wp-content/themes/classic/*
rm *
rm -r wp-includes/*
rm -r wp-admin/*

複製新檔案:

cp -Rpf ../wordpress/* .

這樣就完成升級了,整個程序大概不超過三分鐘。系統複製或刪除檔案的速度很快,我打字也不慢。這兩分多鐘多半都是用來確認命令,畢竟如果在不對的地方 rm -r *,就真是世界末日了。網站運作實際受干擾的時間,不會超過一分鐘。是的,我也知道舊檔案可以不用刪,用新的直接覆蓋過去就好了。我還是喜歡謹慎一點,照規矩來。