ckan 2.0 Installation Notes

ckan-logo

 

(8/9 更新:這篇是 jetty 6 + solr 1.x 版本之教學,若需要 jetty8/9 + solr 4.x 之教學,及未來的所有更新,請移駕至 這裡。)

暑假因為工作需要研究了一下 ckan 2.0,做個安裝筆記。

ckan 是著名的開放原始碼資料入口平台(Data Portal Platform),

由 Open data 界大名鼎鼎的 Open Knowledge Foundation(OKF)支持發展。

他的功能非常多,除了 data repository 外,還支援 visualize、search、tag、revision、share、organization…,

更有許多的 plugins 可以強化其功能。

使用 ckan 最有名的專案就是英國政府開放資料平台 data.gov.uk 了。 

 

ckan 使用以 Python 為基礎的 Pylons 網頁框架開發,template 使用 jinja(神社)2

多國語言支援採用 Babel 系統,

資料庫使用 PostgreSQL,ORM 是 Pylons 推薦的 SQLAlchemy

搜尋功能則使用 Apache Solr 實作,同時搭配 jetty 這個 servlet container。

(真是拼裝車之極致,據說前面的版本連安裝都有困難,可想而知了…)

 

這篇教學文將說明如何自 *nix OS 從無到有安裝一個 ckan 2.0 系統。

環境為 Linux Mint 14 (based on Ubuntu 12.10)
大致按照官方文件 Install from Source 的方式。

1. 安裝必須套件

(註:apt 套件庫中的 solr-jetty 的 solr 版本很舊 (1.x),欲更新至新版亦可,但要留意搭配的 IKAnalyzer 版本,後面會詳述)

 

2. Virtual environment 設定

    a. 新增一個 virtual environment (virtualenv) 供 ckan 使用:

    b. 進入剛才新增的 virtualenv:

要離開 virtualenv,可使用 deactivate 指令。若需要返回 virtualenv,可以再執行一次 . /usr/lib/ckan/default/bin/activate 即可。

 

3. 安裝 ckan 2.0

    自 github ckeckout source (這邊以 release-2.0 為例)並安裝:

 

4. 設定資料庫

    a. 新增 ckan 使用之 postgreSQL 使用者:

    b. 新增 ckan 使用之資料庫:

 

5. 建立 ckan 設定檔

    a. 新增放置 ckan 設定檔之目錄:

    b. 透過 paster 新增範例設定檔:
       (注意:執行任何 paster 指令時,請確認是在 virtual environment 下!)

    c. 修改前面新增的設定檔,搜尋下面字串,並將帳號密碼與 db 名稱依照 4. 所新增的 db 設定:

       (第一個 ckan_default 是使用者名稱,pass 請填寫 db 密碼,最後的 ckan_default 填入 db 名稱)

 

6. 設定 jetty 與 solr(w/搜尋中文支援)

    a. 修改 jetty 設定檔,搜尋下列字串並反註解:

    b. 啟動 jetty 服務:

    c. 打開瀏覽器,進入 solr admin(http://localhost:8983/solr/admin)查看,若能看到畫面即代表安裝成功

    c-1. 若您遇到 error 404 問題,原因可能來自 solr-jetty 套件預設之 alias 錯誤,請刪除原本的:

           並新增:

    d. 使用 ckan source 附帶的 schema 取代 solr 內建的版本:

    e. 下載中文斷詞套件 IKAnalyzer,這邊以 2012 update 6 為例,解壓縮:

(註:請下載「完整分發包」,這樣才會有編譯好的 jar 檔)

    f. 將檔案複製到指定位置:

       IKAnalyzer2012_u6.jar 複製到 /var/lib/jetty/webapps/solr/WEB-INF/lib
       IKAnalyzer.cfg.xml 和 stopword.dic 複製到 /var/lib/jetty/webapps/solr/WEB-INF/class

    g. 修改 schema:

        搜尋 <fieldType name=”text” positionIncrementGap=”100″>
        將 analyzer type=“index” 和 “query” 的 tokenizer class 修改如下:

      (isMaxWordLength=”false” 意指使用預設之「正向迭代最細粒度切分演算法」,如此可以斷出最多可能的詞)

請留意 solr 與 IKAanalyzer 之版本對應:IKAanalyzer 最新版 (FF) 僅對應 solr 4.x,因 solr 之 tokenizer class 取消,所以 IKAanalyzer 對應之 org.wltea.analyzer.solr.IKTokenizerFactory 也取消。若您安裝的是 solr-jetty 套件(也就是本文所介紹的方法),solr 版本仍為 1.x,故「不可」使用 FF 版本!

    h. 重啟 jetty 服務:

    i. 再次修改 development.ini,將以下字串反註解:

 

7. 初始化資料庫

    a. 透過 paster 初始化 ckan db:

    b. 如果一切正常,則會看到此訊息:Initialising DB: SUCCESS

 

8. 建立 who.ini link

 

9. 新增 ckan 系統管理者

    透過 paster 新增 ckan 系統管理者(admin 請代換為您需要的使用者名稱,並依照程式提示設定密碼):

 

10. 在 development 環境下執行

    a. 透過 paster serve 新安裝的 ckan instance:

    b. 打開瀏覽器,前往 http://127.0.0.1:5000/,至此 ckan 安裝完成。

 

補充:佈署 ckan

 

這邊使用 nginx+uwsgi 示範。

 

    a. 新增 production.ini 設定檔:

    b. 修改 production.ini,搜尋並修改/新增下列字串:

    c. 安裝 nginx:

    d. 新增 /etc/nginx/sites-available/ckan 檔案,並編輯加入以下設定:

    e. 建立 alies 至 sites-enabled:

    f. 安裝 uwsgi:
      (在 virtual environment 下)

    g. 執行 nginx 與 uwsgi:

    h. 打開瀏覽器,前往 http://127.0.0.1/,若能看到頁面,恭喜您已經完成所有設定!

 

7/15 追記:今天在研討時分享了 ckan 的一些介紹,投影片也一併放上:

 

Sol Lee

Taiwanese. (A little) Python & R & Java programmer. I have interest in IT and ACG.