佈署

由於 CKAN 使用 pylons 開發,只要使用任何支援 WSGI 標準的網頁伺服器 (及相關套件) 即可佈署 CKAN。 官方文件 提供多種佈署方式,此教學使用 nginx + uwsgi 方式,較官方示範之 Apache + modwsgi + nginx 單純。

註解
本教學部份內容係參考 How To Set Up uWSGI and Nginx to Serve Python Apps on Ubuntu 14.04 (DigitalOcean)

新增 production.ini 設定檔


$ cp /etc/ckan/default/development.ini /etc/ckan/default/production.ini

修改 production.ini


  • 開啟 production.ini,並修改 [app:main] 的相關設定如下:

    [app:main]
    # 主要是使用 domain.name,但測試時可以使用 IP address
    # ckan.site_url = http://site.domain
    ckan.site_url = http://127.0.0.1:5000/
    
  • 並在檔案的最下方加入:

    [uwsgi]
    socket = /tmp/ckan_socket.sock
    master = true
    processes = 1
    chmod-socket = 664
    vacuum = true
    die-on-term = true
    logto = (欲存放程式除錯紀錄檔之目錄)
    

安裝 uwsgi


  • 在虛擬環境下安裝 uwsgi:
    $ . /usr/lib/ckan/default/bin/activate
    (pyenv) $ pip install uwsgi
    

設定開機自動執行


  • 建立 Upstart 檔案:

    $ sudo vi /etc/init/ckan.conf
    
  • 在開啟的 vi 編輯器中,輸入以下內容:

description "uWSGI instance to serve CKAN"

start on runlevel [2345]
stop on runlevel [!2345]

setuid (填入 /usr/lib/ckan/default 目錄的擁有者)
setgid www-data

script
    cd /etc/ckan/default
    . /usr/lib/ckan/default/bin/activate
    uwsgi --ini-paste /etc/ckan/default/production.ini
end script
  • 之後便可使用以下指令啟動網站:

    $ sudo start ckan
    
  • 你可以使用以下指令確認網站是否正常運作:

    $ ps aux | grep ckan
    

    你應該可以看到類似下面的輸出:

    demo 12575  0.0  0.5 249060 85144 ?        S    Sep15   0:41 uwsgi --ini-paste /etc/ckan/default/production.ini
    
  • 你可以使用以下指令停止網站:

    $ sudo stop ckan
    

安裝 nginx 伺服器


sudo apt-get install nginx

nginx 伺服器設定


  • 新增 /etc/nginx/sites-available/ckan 檔案,並編輯加入以下設定:
    sudo vi /etc/nginx/sites-available/ckan
    
    設定內容如下
proxy_cache_path /tmp/nginx_cache levels=1:2 keys_zone=cache:30m max_size=250m;

server {
    listen 80;
    server_name server_domain_or_IP;
    client_max_body_size 1000M;
    access_log /var/log/nginx/ckan_access.log;
    error_log /var/log/nginx/ckan_error.log error;

    location / {
        add_header Access-Control-Allow-Origin *;
        include uwsgi_params;
        uwsgi_pass unix:///tmp/ckan_socket.sock;
        uwsgi_param SCRIPT_NAME '';
    }
}
  • 建立 alies 至 sites-enabled:

    $ sudo ln -s /etc/nginx/sites-available/ckan /etc/nginx/sites-enabled/ckan
    
  • 重新啟動 nginx:

    $ sudo service nginx restart
    

執行與測試


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

修改預設載入語系


假設 CKAN 使用的組態檔為 production.ini ( /etc/ckan/default/production.ini ),則需要修正 ckan.locale_default 的設定,以修改成繁體中文為例;

ckan.locale_default = zh_TW

results matching ""

    No results matching ""