總共需要下載三個檔案:已重新包裝過支援 postgresql jdbc driver 的 snipsnap.jar、一個 SQL 語法檔和合適版本的 jdbc driver(從其官網上下載)。
細節我已放在下方,有任何問題歡迎大家一起討論。
至於除掉 jetty 的步驟我會儘快完成的。
Migrate Snipsnap from Mckoidb to PostgreSQL
本篇介紹的是如何將 Snipsnap 0.4.2a 從預設的 Mckiodb 資料庫轉換到 PostgreSQL。請注意,在做以下任何動作之前,最好先將原有的資料庫備份起來(需備份 applications/xxx/WEB-INF/db/ 目錄),或是整個網站也可以(備份 applications/xxx/ 目錄)。另外,我已經做了一些測試和檔案已確保轉換過程可以儘量順利完成,以及轉換後可以正常使用 Snipsnap,但這並不保証你在轉換時不會出現任何問題。大多數可能的情況是出在資料庫方面,這部份最好的解決方法是在 Google 搜尋關鍵字或查詢相關文件。
最後,本篇只適用於已安裝好 Snipsnap 並已新增 application 的使用者。想轉換到 MySQL 的也可以藉由下列步驟完成,但是一些相關參數要做些修改,並且 jar 也要重新包過一次。另外需使用 4.1 以上的版本,因為 4.0 以下並不支援 Unicode。Snipsnap 0.5a 已可以直接選用其他資料庫來替代預設的 mckoidb,請直接在 Snipsnap 0.5a 的管理介面中設定,本手冊僅適用於 Snipsnap 0.4.2a。
檔案下載:
- snipsnap.jar(26.4KB):http://blog.cyberjos.idv.tw/download/snipsnap.jar(僅適用於 postgresql,連結已失效)
- snip-createdb-postgresql.sql(6.21KB):http://blog.cyberjos.idv.tw/download/snip-createdb-postgresql.sql(連結已失效)
- 下載 PostgreSQL 的 JDBC Driver。請注意不同的 JDK 和 PostgreSQL 版本需使用相對應的 driver。另為了避免檔名差異而產生問題,請將您下載回來的檔案改名成 postgresql.jar。
步驟:
- 在 postgresql 中新增一名使用者,以下用 snipuser 做為示範帳號。然後新增資料庫,以下用 snipdb 做為示範資料庫。
$ createuser -A -d -P -E
Enter name of user to add: snipuser
Enter password for user "snipuser":
Enter it again:
CREATE USER
$ createdb -U snipuser -E UNICODE snipdb
CREATE DATABASE
- 修改
snip-createdb-postgresql.sql
的內容。將第二行的 ADMIN 改成你的 snipsnap 帳號,並且將第三行的 admin@xxx.com 改成你的電子郵件地址。改完後存檔。 - 將
snip-createdb-postgresql.sql
輸入到 PostgreSQL 中。
$ psql -f snip-createdb-postgresql.sql -U snipuser
- 登入 snipsnap,並且使用管理(manager)的功能將資料全部匯出(export)成 XML 檔案,然後關閉 snipsnap。此時你可以在 applications/xxx/WEB-INF/ 中看到一個 *.snip 的檔案。
- 將下載回來的 snipsnap.jar 覆蓋至 lib/snipsnap.jar。
- 將下載並改名過的 postgresql.jar 放到 lib/ 目錄下。
- 將 applications/xxx/WEB-INF/db/ 目錄移動到臨時備份目錄。
- 刪除 applications/xxx/WEB-INF/index/write.lock 檔案(如果有的話)。
- 編輯 applications/xxx/WEB-INF/application.conf,修改下列選項:
admin.password=$password
app.jdbc.url=jdbc\\:postgresql\\:snipdb
app.jdbc.driver=org.postgresql.Driver
admin.login=snipuser
- 重新啟動 snipsnap 並以瀏覽器觀看。這時你應該可以看到你的 Blog 的畫面是 snipsnap 剛安裝好的樣子。使用管理者身份登入,帳號就是剛剛替代 ADMIN 的那個名字,密碼 1234。
- 登入後到管理(manager)頁面將之前的 *.snip 再匯入(import)。之後密碼就會變回你之前原先的管理者密碼。大功告成。
Good luck.