由於 CKAN 使用 pylons 開發,只要使用任何支援 WSGI 標準的網頁伺服器 (及相關套件) 即可佈署 CKAN。 官方文件 提供多種佈署方式,此教學使用 nginx + uwsgi 方式,較官方示範之 Apache + modwsgi + nginx 單純。
$ cp /etc/ckan/default/development.ini /etc/ckan/default/production.ini
開啟 production.ini,並修改 [app:main] 的相關設定如下:
[app:main] ckan.site_url = http://site.domain並在檔案的最下方加入:
[uwsgi] socket = /tmp/ckan_socket.sock master = true processes = 1 chmod-socket = 664 vacuum = true die-on-term = true logto = (欲存放程式除錯紀錄檔之目錄)
在虛擬環境下安裝 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
$ sudo apt-get install nginx
新增 /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 / { 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/ ,若能看到頁面,恭喜您已經完成所有部署設定!