CKAN 2.7.2 설치 및 배포 안내 문서

CKAN 설치는 설치 대상 운영체제의 종류와 버젼에 따라서 CKAN Package설치와 CKAN Source 설치 2가지로 구분된다.
CKAN Package  설치는 CKAN 공식 문서를 기반으로 쉽게 설치할 수 있지만, 우분투 14.04 (LTS)  운영체제 이외의 다른 운영체제 버전을 사용할 경우 CKAN 소스파일 설치해야 한다.
이때 CKAN 이외에 추가로 설치 해야 것들(필수 패키지, 라이브러리, 웹 서버 등)의 의존성 및 기타 환경 설정을 함에 있어, 공식 문서에서 설명되지 않은 에러를 만날 수 있다.
낭비되는 시간 소모를 줄이고자 CKAN 소스파일을 설치하면서 발생할 수 있는 에러와 그에 대한 해결 방법들을 공유하고자 한다.
설치 환경은 다음과 같으며 공식 문서에서 제공하는 문서를 함께 참고하길 바란다.
운영체제 : 우분투 (16.04 LTS version.), 2017.10월. (현재)
CKAN : CKAN 2.7.0 소스파일
가. CKAN 설치

1. Install the required packages
> 우분투 16.04에서 CKAN을 운영하기위해 필요한 필수 패키지는 다음과 같이 설치할 수 있다.
$ sudo apt-get install python-dev postgresql libpq-dev python-pip python-virtualenv git-core solr-jetty openjdk-8-jdk redis-server

2. Install CKAN into a Python virtual environment
a. Create a Python virtual environment (virtualenv) to install CKAN into, and activate it:
$ sudo mkdir -p /usr/lib/ckan/default
$ sudo chown `whoami` /usr/lib/ckan/default
$ virtualenv –no-site-packages /usr/lib/ckan/default
$ . /usr/lib/ckan/default/bin/activate
> 주의사항) 이후의 내용은 모두 가상환경에서 실행한다.
> 각 설치 단계에서 오류가 발생하면 다음 단계에서 또한 오류가 발생할 수 있으므로, 매 단계마다 설치가 성공적으로 끝나야 한다. (중간에 오류가 나지 않더라도 CKAN 최종 배포 시에 운영이 되지 않을 수 있다.)
b. Install the CKAN source code into your virtualenv. To install the latest stable release of CKAN (CKAN 2.7.0), run:
> 현재(2017.09.) git에 저장된 최신 버젼이 2.7.0 임. 버젼명을 바꿔서 설치도 가능.
[Error Tip] > git과 관련하여 ‘head’ 불일치 오류가 발생할 경우 다음과 같이 특정 버전이 없이 설치 할 수도 있다.
c. Install the recommended version of ‘setuptools’:
$ pip install -r /usr/lib/ckan/default/src/ckan/requirement-setuptools.txt
> 지금 현재 사용된 setuptools의 버젼은 36.6 임
d. Install the Python modules that CKAN requires into your virtualenv:
$ pip install -r /usr/lib/ckan/default/src/ckan/requirements.txt
[참고] Deactivate and reactivate your virtualenv, to make sure you’re using the virtualenv’s copies of commands like paster rather than any system-wide installed copies:
deactivate
$ . /usr/lib/ckan/default/bin/deactivate

3. Setup a PostgreSQL database
a. Check that PostgreSQL was installed correctly by listing the existing databases
$ sudo -u postgres psql -l
b. Next you’ll need to create a database user if one doesn’t already exist. Create a new PostgreSQL database user called ckan_default, and enter a password for the user when prompted. You’ll need this password later:
 $ sudo -u postgres createuser -S -D -R -P ckan_default
c. Create a new PostgreSQL database, called ckan_default, owned by the database user you just created:
$ sudo -u postgres createdb -O ckan_default ckan_default -E utf-8

4. Create a CKAN config file
a. Create a directory to contain the site’s config files:
$ sudo mkdir -p /etc/ckan/default
$ sudo chown -R `whoami` /etc/ckan/
$ sudo chown -R `whoami` ~/ckan/etc (/home 디렉토리에 CKAN 경로로 설정했을 경우에 권한 설정을 해주면 된다.)
b. Create the CKAN config file:
$ . /usr/lib/ckan/default/bin/activate
> 이후 설정은 모두 가상 환경으로 다시 들어가서 다음 설치 작업을 시작한다.
$ paster make-config ckan /etc/ckan/default/development.ini
Edit the development.ini file in a text editor, changing the following options:
1) sqlalchemy.url
$ sqlalchemy.url = postgresql://ckan_default:pass@localhost/ckan_default
> 위의 3-b에서 계정 설정시 정해놓은 암호를 pass로 대체한다.
2) site_id
Each CKAN site should have a unique site_id, for example:
$ ckan.site_id = default
3) site_url
Provide the site’s URL (used when putting links to the site into the FileStore, notification emails etc). For example:
$ ckan.site_url = http://demo.ckan.org
> 도메인을 가지고 있을 경우 기입하고 그렇지 않으면 http://localhost 또는 고정 IP가 있을 경우 IP를 입력 함. url은 사이트에서 회원 가입 등 링크를 따라 이동할때 base 경로가 되므로 잘 설정해야 함.

5. Setup Solr
Edit the Jetty configuration file (/etc/default/jetty8) and change the following variables:
a. Setting Solr
$sudo vi /etc/default/jetty8 (아래의 3문장 주석 해제)
NO_START=0            # (line 4)
JETTY_HOST=127.0.0.1  # (line 16)
JETTY_PORT=8983       # (line 19)
b. Start or restart the Jetty server. For Ubuntu 16.04:
$ sudo service jetty8 restart
c. Check welcome page of Solr, http://localhost:8983/solr/
d. Replace the default schema.xml file with a symlink to the CKAN schema file included in the sources.
$ sudo mv /etc/solr/conf/schema.xml /etc/solr/conf/schema.xml.bak
$ sudo ln -s /usr/lib/ckan/default/src/ckan/ckan/config/solr/schema.xml
$ sudo service jetty8 restart

6. Create database tables
1.create the database tables:
$ . /usr/lib/ckan/default/bin/activate
$ cd /usr/lib/ckan/default/src/ckan
$ paster db init -c /etc/ckan/default/development.ini

7. Link to who.ini
$ ln -s /usr/lib/ckan/default/src/ckan/who.ini /etc/ckan/default/who.ini
$ cd /usr/lib/ckan/default/src/ckan
$ paster serve /etc/ckan/default/development.ini
웹 브라우져로 접속하면 아래와 같이 초기화면을 확인 할 수 있음.

나. CKAN 설치가 끝나면 배포 준비 (Deploying a source install)
1. Create a production.ini File
$ cp /etc/ckan/default/development.ini /etc/ckan/default/production.ini

2. Install Apache, modwsgi, modrpaf
$ sudo apt-get install apache2 libapache2-mod-wsgi libapache2-mod-rpaf

3. Install Nginx
$ sudo apt-get install nginx
[참고] nginx 설치 시 의존성 에러 발생 하면 다음과 같이 재설치
$ sudo apt-get purge nginx-full nginx-common
$ sudo  apt-get install nginx-full

4. Create the WSGI script file
Create your site’s WSGI script file /etc/ckan/default/apache.wsgi with the following contents:
$ sudo vi /etc/ckan/default/apache.wsgi
import os
activate_this = os.path.join(‘/usr/lib/ckan/default/bin/activate_this.py’)
execfile(activate_this, dict(__file__=activate_this))
from paste.deploy import loadapp
config_filepath = os.path.join(os.path.dirname(os.path.abspath(__file__)), ‘production.ini’)
from paste.script.util.logging_config import fileConfig
fileConfig(config_filepath)
application = loadapp(‘config:%s’ % config_filepath)

5. Create the Apache config file
$ sudo vi /etc/apache2/sites-available/ckan_default.conf
<VirtualHost 127.0.0.1:8080>
    ServerName  DNS 이름
    ServerAlias    DNS의 다른 이름
    WSGIScriptAlias / /etc/ckan/default/apache.wsgi
    # Pass authorization info on (needed for rest api).
    WSGIPassAuthorization On
    # Deploy as a daemon (avoids conflicts between CKAN instances).
    WSGIDaemonProcess ckan_default display-name=ckan_default processes=2 threads=15
    WSGIProcessGroup ckan_default
    ErrorLog /var/log/apache2/ckan_default.error.log
    CustomLog /var/log/apache2/ckan_default.custom.log combined
    <IfModule mod_rpaf.c>
        RPAFenable On
        RPAFsethostname On
        RPAFproxy_ips 127.0.0.1
    </IfModule>
    <Directory />
        Require all granted
    </Directory>
</VirtualHost>

6. Modify the Apache ports.conf file
$ sudo vi /etc/apache2/ports.conf
 Listen 8080 (Listen 80에서 8080으로 변경)

7. Create the Nginx config file
Create your site’s Nginx config file at /etc/nginx/sites-available/ckan, with the following contents:
$ sudo vi /etc/nginx/sites-available/ckan
proxy_cache_path /tmp/nginx_cache levels=1:2 keys_zone=cache:30m max_size=250m;
proxy_temp_path /tmp/nginx_proxy 1 2;
server {
    client_max_body_size 100M;
    location / {
        proxy_pass http://127.0.0.1:8080/;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_set_header Host $host;
        proxy_cache cache;
        proxy_cache_bypass $cookie_auth_tkt;
        proxy_no_cache $cookie_auth_tkt;
        proxy_cache_valid 30m;
        proxy_cache_key $host$scheme$proxy_host$request_uri;
        # In emergency comment out line to force caching
        # proxy_ignore_headers X-Accel-Expires Expires Cache-Control;
    }
}

8. Enable your CKAN site
To prevent conflicts, disable your default nginx and apache sites. Finally, enable your CKAN site in Apache.
$ sudo a2ensite ckan_default
$ sudo a2dissite 000-default
$ sudo rm -vi /etc/nginx/sites-enabled/default
$ sudo ln -s /etc/nginx/sites-available/ckan /etc/nginx/sites-enabled/ckan_default
$ sudo service apache2 reload
$ sudo service nginx reload
배포 완료

[추가 사항]
Dataset 추가를 위한 Admin 권한 부여 명령어 to [User1]
$ paster –plugin=ckan sysadmin add [User1] -c /etc/ckan/default/production.ini

Leave a Reply

Your email address will not be published. Required fields are marked *