CKAN 2.7.2 安裝與佈署

這邊有分Development跟Production,前兩步的教學算是Development
如果沒有特別改ini等相關設定,有些設定跟資料是會共用的,就必須要改權限
Development因為是跑一個微型Server,非Apache Nginx等
前者權限通常為linux的使用者名稱
後者則看Apache Server會動到哪,Apache在linux的名稱則是 www-data
如果遇到檔案或目錄權限問題,變更擁有者為上述兩者通常就能解決
以Ubuntu 14.04 LTS, Source code install CKAN 2.7.2為例 (如果從 2.6 以前版本升級上來,要安裝 redis)
步驟如下
  1. 記得要修改production.ini的port, 把原本development的5000改成8080
    完成第九步後應該就沒問題了
    根據文件,瀏覽 http://127.0.0.1:8080/ 就會有CKAN首頁
    此時上傳檔案後要 Upload to datastore
    會發現有 Cannot connect to datapush server的訊息
    請繼續往下設定
  2. Deploy Datapusher
    佈署步驟請參考這裡
    (1). 跑到這行指令時會有錯誤
    sudo /usr/lib/ckan/datapusher/bin/pip install -r requirements.txt
    
    Downloading cryptography-2.1.4.tar.gz (441kB): 441kB downloaded
    Running setup.py(path:/home/yanting/ckan/lib/datapusher/build/cryptography/setup.py) egg_info for package cryptography
    error in cryptography setup command: Invalid environment marker: python_version < '3’
    Complete output from command python setup.py egg_info:
    error in cryptography setup command: Invalid environment marker: python_version < ‘3’
    原因: Pip 或 Setuptool 版本過舊
    解法: 改用系統的pip下
    pip install -U pip setuptools
    sudo pip install -r requirements.txt
    
    (2). 執行這行前
    sudo cp deployment/datapusher.conf /etc/apache2/sites-available/datapusher.conf
    
    設定Apache config讓CKAN可以存取 Data Pusher Server
    否則會遇到403 Forbiddon
    開啟local存取權限:
    vim deployment/datapusher.conf
    
    新增下列資訊
    <VirtualHost 0.0.0.0:8800>
    ... 省略
     <Directory />
         Require local granted
     </Directory>
    </VirtualHost>
    
    
    再執行原本要執行的
    sudo cp deployment/datapusher.conf /etc/apache2/sites-available/datapusher.conf
    
    (3). 繼續完成後面的步驟,這行不用
    sudo sh -c 'echo "NameVirtualHost *:8800" >> /etc/apache2/ports.conf'
    
    (4). 全部完成後
    sudo service apache2 restart
    sudo service nginx restart
    
    Note: 任何apache, nginx或CKAN xxx.ini上的更動,要記得重啟或重新載入(Reload)
    測試連線127.0.0.1:8800 (Datapusher)
    (5). 到 127.0.0.1:8800,顯示500 internal server error
    看log發現是Permission Deny的問題
    [Wed Dec 06 17:30:40.050157 2017] [:error] [pid 32138:tid 139969180825344] [remote 127.0.0.1:50709] IOError: [Errno 13] Permission denied: ‘/tmp/ckan_service.log’
    當初用Dev跑是用User的權限
    導致Apache2用 www-data的user存取就會有問題,所以變更權限
    解法:
    sudo chown www-data /tmp/ckan_service.log
    
    一樣重啟就可以連線 127.0.0.1:8800
    (6). filestore 權限要變更,否則無法上傳檔案
    sudo chown -R www-data /var/lib/ckan/default
    
    (7). 變更儲存job db的權限,否則無法啟動 upload to datastore的功能
    sudo chown www-data /tmp/job_store.db
    
完成上述步驟1~5,我們可透過 http://127.0.0.1:5000/api/util/status 查詢網站狀態如下:
{
  "ckan_version": "2.7.2",
  "site_url": "http://127.0.0.1:5000",
  "site_description": "",
  "site_title": "CKAN",
  "error_emails_to": null,
  "locale_default": "en",
  "extensions": [
    "stats",
    "text_view",
    "image_view",
    "recline_view",
    "datastore",
    "datapusher"
  ]
}

留言