CKAN

Amazon Linux2にCKAN2.9をインストール

ckanロゴ

データカタログの定番としてCKANが浸透しつつあります。
わたしのプロジェクトでもCKANを使ってみる機会があったので、まずは試しにAmazon Linux2にCKANをインストールすることにしました。

CKAN構築

Linux パッケージのインストール

$ sudo yum install -y wget policycoreutils-python python3-devel libpq-dev python3-pip python3-venv git-core java-1.8.0-openjdk maven lsof redis gcc gcc gcc-c++ cmake automake  gmp-devel boost

Python パッケージのインストール

$ sudo pip3 install psycopg2-binary
$ sudo pip3 install pylons
$ sudo pip3 install uwsgi
$ sudo pip3 install supervisor
$ sudo pip3 install PasteScript
$ sudo pip3 install PasteDeploy

PostgreSQLのインストール

$ sudo amazon-linux-extras install postgresql9.6
$ sudo yum install postgresql-server postgresql-devel postgresql-contrib

初期設定

$ sudo postgresql-setup initdb

起動

$ sudo systemctl enable postgresql.service
$ sudo systemctl start postgresql.service
$ sudo systemctl status postgresql.service

セットアップ

$ sudo -i -u postgres
$ psql -l
$ createuser -S -D -R -P ckan_default
$ createdb -O ckan_default ckan_default -E utf-8

設定変更

$ sudo vi /var/lib/pgsql/data/pg_hba.conf
local all all md5
host all all 127.0.0.1/32 md5

$ sudo systemctl restart postgresql

CKANのインストール

ユーザー追加と設定

$ sudo useradd -m -d /usr/lib/ckan -c "CKAN User" ckan
$ sudo chmod 755 /usr/lib/ckan
$ sudo passwd ckan
$ su -s /bin/bash - ckan
$ mkdir -p /usr/lib/ckan/default
$ chown `whoami` /usr/lib/ckan/default
$ python3 -m venv /usr/lib/ckan/default
$ . /usr/lib/ckan/default/bin/activate
$ pip3 install setuptools==44.1.0
$ pip3 install --upgrade pip
$ pip install -e 'git+https://github.com/ckan/ckan.git@ckan-2.9.3#egg=ckan[requirements]'


別ターミナルで作業
$ sudo mkdir -p /etc/ckan/default
$ sudo chown -R `whoami` /etc/ckan/
$ sudo chown ckan.ckan /etc/ckan/default


元ターミナルで作業
$ ckan generate config /etc/ckan/default/ckan.ini

$ vi /etc/ckan/default/ckan.ini
sqlalchemy.url = postgresql://ckan_default:パスワード@localhost/ckan_default
ckan.site_id = default
ckan.site_url = http://IPアドレス
solr_url = http://127.0.0.1:8983/solr/ckan

$ deactivate
$ . /usr/lib/ckan/default/bin/activate

Apache SOLRのセットアップ

$ cd /opt
$ sudo wget https://archive.apache.org/dist/lucene/solr/6.5.1/solr-6.5.1.tgz
$ sudo tar xzf solr-6.5.1.tgz solr-6.5.1/bin/install_solr_service.sh --strip-components=2
$ sudo bash ./install_solr_service.sh solr-6.5.1.tgz
$ sudo systemctl enable solr
$ sudo systemctl status solr -l

ckanの設定

$ sudo su solr
$ cd /opt/solr/bin
$ ./solr create -c ckan
$ sed -i '/<config>/a <schemaFactory class="ClassicIndexSchemaFactory"/>' /var/solr/data/ckan/conf/solrconfig.xml
$ sed -i '/<initParams path="\/update\/\*\*">/,/<\/initParams>/ s/.*/<!--&-->/' /var/solr/data/ckan/conf/solrconfig.xml
$ sed -i '/<processor class="solr.AddSchemaFieldsUpdateProcessorFactory">/,/<\/processor>/ s/.*/<!--&-->/' /var/solr/data/ckan/conf/solrconfig.xml
$ rm /var/solr/data/ckan/conf/managed-schema
$ ln -s /usr/lib/ckan/default/src/ckan/ckan/config/solr/schema.xml /var/solr/data/ckan/conf/
$ exit
$ sudo systemctl  restart solr

solrからのレスポンスを確認する

curl -s http://localhost:8983/solr/admin/cores?action=STATUS |     python -c 'import sys;import xml.dom.minidom;s=sys.stdin.read();print(xml.dom.minidom.parseString(s).toprettyxml())'

リンクの作成

$ sudo ln -s /usr/lib/ckan/default/src/ckan/who.ini /etc/ckan/default/who.ini

データベースにテーブルの作成

$ su - ckan
$ cd default/src/ckan/
$ . /usr/lib/ckan/default/bin/activate
$ ckan -c /etc/ckan/default/ckan.ini db init
redisに接続できないとのエラーが表示されているが、導入してないので無視した
「Initialising DB: SUCCESS」が表示されるのを確認する
$ ckan -c /etc/ckan/default/ckan.ini run --host 0.0.0.0

確認

「http://ipアドレス:5000」でアクセスしてみてCKANの画面が表示されたら成功です。