由於 CKAN 使用 pylons 開發,只要使用任何支援 WSGI 標準的網頁伺服器(及相關套件)即可佈署 CKAN。以下示範以 nginx 與 Gunicorn 進行部署。
Important
(供本平台管理員資訊)請忽略此步驟,直接使用備份之 production.ini 設定檔。
cp /etc/ckan/default/development.ini /etc/ckan/default/production.ini
Important
(供本平台管理員資訊)請忽略此步驟。
開啟 production.ini,並修改 [server:main] 與 [app:main] 的相關設定如下
[server:main] #use = egg:Paste#http #host = 0.0.0.0 #port = 5000 use = egg:gunicorn#main bind = unix:/var/run/gunicorn/ckan_socket.sock preload = true ## CKAN 執行過程若有錯誤將輸出於此檔案 errorlog = /etc/ckan/default/ckan.log loglevel = warning ## USER 為目錄 /etc/ckan/default 擁有者 user = USER group = www-data umask = 0113 [app:main] ... ## Site Settings ckan.site_url = http://127.0.0.1
在虛擬環境下安裝 Gunicorn
. /usr/lib/ckan/default/bin/activate pip install gunicorn . /usr/lib/ckan/datapusher/bin/activate pip install gunicorn
建立 Systemd 服務
sudo vi /etc/systemd/system/ckan.service
在開啟的 vi 編輯器中,輸入以下內容
[Unit] Description=Gunicorn instance to serve CKAN After=network.target [Service] WorkingDirectory=/usr/lib/ckan/default/src/ckan RuntimeDirectory=gunicorn ExecStart=/usr/lib/ckan/default/bin/gunicorn --paste /etc/ckan/default/production.ini ExecReload=/bin/kill -s HUP $MAINPID ExecStop=/bin/kill -s TERM $MAINPID StandardError=syslog PrivateTmp=true [Install] WantedBy=multi-user.target
啟用此 Systemd 服務
sudo systemctl enable ckan
之後便可使用以下指令啟動網站
sudo service ckan start
你可以使用以下指令確認網站是否正常運作
sudo service ckan status
你應該可以看到類似下面的輸出
● ckan.service - Gunicorn instance to serve CKAN Loaded: loaded (/etc/systemd/system/ckan.service; enabled; vendor preset: enabled) Active: active (running) since 四 2017-12-14 14:36:37 CST; 2s ago Process: 20152 ExecStop=/bin/kill -s TERM $MAINPID (code=exited, status=0/SUCCESS) Main PID: 20191 (gunicorn) Tasks: 2 Memory: 88.0M CPU: 1.596s CGroup: /system.slice/ckan.service ├─20191 /usr/lib/ckan/default/bin/python2 /usr/lib/ckan/default/bin/gunicorn --paste /etc/ckan/default/production.ini └─20198 /usr/lib/ckan/default/bin/python2 /usr/lib/ckan/default/bin/gunicorn --paste /etc/ckan/default/production.ini
你可以使用以下指令停止網站
sudo service ckan stop
Note
DataPusher 是一個 CKAN 的擴充套件,當使用者新增結構資料(如 CSV 或 XLS 檔案,無論為上傳至本機的檔案或僅有連結)至 CKAN 時,DataPusher 會自動上傳資料內容至 CKAN 的 DataStore 資料庫,以提供 :ref:`data_api` 等功能。
建立 Systemd 服務
sudo vi /etc/init/datapusher.conf
在開啟的 vi 編輯器中,輸入以下內容
[Unit] Description=Gunicorn instance to serve DataPusher After=network.target [Service] RuntimeDirectory=gunicorn Environment=JOB_CONFIG=/usr/lib/ckan/datapusher/src/datapusher/deployment/datapusher_settings.py ExecStart=/usr/lib/ckan/datapusher/bin/gunicorn wsgi:app ExecReload=/bin/kill -s HUP $MAINPID ExecStop=/bin/kill -s TERM $MAINPID StandardOutput=null StandardError=null PrivateTmp=true [Install] WantedBy=multi-user.target
啟用此 Systemd 服務
sudo systemctl enable datapusher
之後便可使用以下指令啟動 DataPusher
sudo service datapusher start
你可以使用以下指令確認 DataPusher 是否正常運作:
sudo service datapusher status
你應該可以看到類似下面的輸出:
● datapusher.service - Gunicorn instance to serve DataPusher Loaded: loaded (/etc/systemd/system/datapusher.service; enabled; vendor preset: enabled) Active: active (running) since 四 2017-12-14 14:48:44 CST; 2min 44s ago Process: 20571 ExecStop=/bin/kill -s TERM $MAINPID (code=exited, status=0/SUCCESS) Main PID: 20626 (gunicorn) Tasks: 2 Memory: 46.0M CPU: 1.790s CGroup: /system.slice/datapusher.service ├─20626 /usr/lib/ckan/datapusher/bin/python2 /usr/lib/ckan/datapusher/bin/gunicorn wsgi:app └─20673 /usr/lib/ckan/datapusher/bin/python2 /usr/lib/ckan/datapusher/bin/gunicorn wsgi:app
你可以使用以下指令停止 DataPusher
sudo service datapusher stop
安裝 nginx
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 127.0.0.1; client_max_body_size 1000M; access_log /var/log/nginx/ckan_access.log; error_log /var/log/nginx/ckan_error.log error; location / { try_files $uri @proxy_to_app; } location @proxy_to_app { proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # enable this if and only if you use HTTPS # proxy_set_header X-Forwarded-Proto https; proxy_set_header Host $http_host; # we don't want nginx trying to do something clever with # redirects, we set the Host: header above already. proxy_redirect off; proxy_pass http://unix:/var/run/gunicorn/ckan_socket.sock; } }
建立 alies 至 sites-enabled 以啟用剛才新增之設定(並刪除預設設定檔)
sudo rm /etc/nginx/sites-enabled/default sudo ln -s /etc/nginx/sites-available/ckan /etc/nginx/sites-enabled/ckan
重新啟動 nginx
sudo service nginx restart
打開瀏覽器,前往 http://127.0.0.1/ ,若能看到頁面,代表您已經完成所有佈署設定。