1. 安裝必須套件
$ sudo apt-get install python-dev postgresql libpq-dev python-pip python-virtualenv git-core jetty8 openjdk-7-jdk
2. Virtual environment 設定
新增一個 virtual environment (virtualenv) 供 ckan 使用:
$ sudo mkdir -p /usr/lib/ckan/default $ sudo chown `whoami` /usr/lib/ckan/default $ virtualenv --no-site-packages /usr/lib/ckan/default
進入剛才新增的 virtualenv:
$ . /usr/lib/ckan/default/bin/activate
Note
要離開 virtualenv,可使用 deactivate 指令。若需要返回 virtualenv,可以再執行一次 . /usr/lib/ckan/default/bin/activate 即可。
3. 安裝 ckan 2.0
自 github ckeckout source (這邊以 release-2.0 為例)並安裝:
(pyenv) $ pip install -e 'git+https://github.com/okfn/ckan.git@ckan-2.0#egg=ckan'安裝所需 Python 套件:
(pyenv) $ pip install -r /usr/lib/ckan/default/src/ckan/pip-requirements.txt
4. 設定資料庫
新增 ckan 使用之 postgreSQL 使用者:
$ sudo -u postgres createuser -S -D -R -P ckan_default
新增 ckan 使用之資料庫:
$ sudo -u postgres createdb -O ckan_default ckan_default -E utf-8
5. 建立 ckan 設定檔
新增放置 ckan 設定檔之目錄:
$ sudo mkdir -p /etc/ckan/default $ sudo chown -R `whoami` /etc/ckan/
透過 paster 新增範例設定檔:
Important
執行任何 paster 指令時,請確認是在 virtualenv 下
(pyenv) $ paster make-config ckan /etc/ckan/default/development.ini
修改前面新增的 development.ini,搜尋下面字串,並將帳號密碼與 db 名稱依照 4. 所新增的 db 設定:
sqlalchemy.url = postgresql://ckan_default:pass@localhost/ckan_default
Note
第一個 ckan_default 是使用者名稱,pass 請填寫 db 密碼,最後的 ckan_default 填入 db 名稱)
6. 設定 jetty8 與 solr4(w/搜尋中文支援)
修改 jetty 設定(位於 /etc/default/jetty8):
NO_START=0 JETTY_HOST=127.0.0.1 JETTY_PORT=8983 JAVA_OPTIONS="-Dsolr.solr.home=/usr/share/solr $JAVA_OPTIONS"
安裝 solr4:
至官網 http://lucene.apache.org/solr/ 下載 solr-4.3.1
解壓縮下載回來的壓縮檔
並複製 ./dist 下的 solr-4.3.1.war 至 jetty webapps 目錄(solr 目錄請自行建立):
$ sudo cp solr-4.3.1.war /usr/share/jetty8/webapps/solr/solr.war
複製以下目錄至指定位置:
複製 ./example/solr 至 /usr/share(此即為 solr_home)
複製 ./contrib 至 /usr/share/solr/bin
複製 ./dist 至 /usr/share/solr
修改 solr 目錄權限,使 jetty 可以存取:
$ sudo chown -R jetty:adm /usr/share/solr
新增 schema symlink:
$ sudo mv /usr/share/solr/collection1/conf/schema.xml /usr/share/solr/collection1/conf/schema.xml.bak $ sudo ln -s /usr/lib/ckan/default/src/ckan/ckan/config/solr/schema-2.0.xml /usr/share/solr/collection1/conf/schema.xml
為放置 IKA,需解開 solr-4.3.1.war:
$ jar -xvf solr.war
設定 solr:
打開 /usr/share/solr/collection1/conf/solrconfig.xml,尋找 <lib dir> 區段並修改為:
<lib dir="/usr/share/solr/bin/contrib/extraction/lib" regex=".*\.jar" /> <lib dir="/usr/share/solr/dist/" regex="solr-cell-\d.*\.jar" /> <lib dir="/usr/share/solr/bin/contrib/clustering/lib/" regex=".*\.jar" /> <lib dir="/usr/share/solr/dist/" regex="solr-clustering-\d.*\.jar" /> <lib dir="/usr/share/solr/bin/contrib/langid/lib/" regex=".*\.jar" /> <lib dir="/usr/share/solr/dist/" regex="solr-langid-\d.*\.jar" /> <lib dir="/usr/share/solr/bin/contrib/velocity/lib" regex=".*\.jar" /> <lib dir="/usr/share/solr/dist/" regex="solr-velocity-\d.*\.jar" />
並刪除或註解掉此行:
<lib dir="/non/existent/dir/yields/warning" />
安裝 IKAnalyzer:
下載 IKAnalyzer https://ik-analyzer.googlecode.com/files/IK%20Analyzer%202012FF_hf1.zip 並解壓縮
複製 IKAnalyzer2012FF_fh1.jar 至 /var/lib/jetty8/webapps/solr/WEB-INF/lib
複製 IKAnalyzer.cfg.xml 和 stopword.dic 至 /var/lib/jetty8/webapps/solr/WEB-INF/class
設定 IKAnalyzer:
修改 schema.xml,fieldType name="text" 區段修改為:
<fieldType name="text" class="solr.TextField"> <analyzer type="index" class="org.wltea.analyzer.lucene.IKAnalyzer" isMaxWordLength="false"/> <analyzer type="query" class="org.wltea.analyzer.lucene.IKAnalyzer" isMaxWordLength="false"/> <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/> <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="1"/> <filter class="solr.SnowballPorterFilterFactory" language="English" protected="protwords.txt"/> <filter class="solr.LowerCaseFilterFactory"/> <filter class="solr.ASCIIFoldingFilterFactory"/> </fieldType>
Note
schema.xml 位於 /usr/share/solr/collection1/conf/schema.xml
啟動 jetty:
$ sudo service jetty8 start
打開瀏覽器,前往 http://127.0.0.1:8983/solr ,若能看到畫面則代表安裝完成
7. 初始化資料庫
透過 paster 初始化 ckan db:
(pyenv) $ paster db init -c /etc/ckan/default/development.ini
如果一切正常,則會看到此訊息:Initialising DB: SUCCESS
8. 建立 who.ini link
$ ln -s /usr/lib/ckan/default/src/ckan/who.ini /etc/ckan/default/who.ini
9. 新增 ckan 系統管理者
透過 paster 新增 ckan 系統管理者:
(pyenv) $ paster sysadmin add admin -c /etc/ckan/default/development.iniNote
admin 請代換為您需要的使用者名稱,並依照程式提示設定密碼
10. 在 development 環境下執行
透過 paster serve 新安裝的 ckan instance:
(pyenv) $ paster serve /etc/ckan/default/development.ini
打開瀏覽器,前往 http://127.0.0.1:5000/ ,至此 ckan 安裝完成