用 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
內的 themes
或 plugins
資料夾有更新的檔案,你還是得自行上傳標準安裝檔中的新版取代舊版。
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 *
,就真是世界末日了。網站運作實際受干擾的時間,不會超過一分鐘。是的,我也知道舊檔案可以不用刪,用新的直接覆蓋過去就好了。我還是喜歡謹慎一點,照規矩來。