OpenDataPlatform/DKAN 설치 및 구축 가이드

Drupal을 이용한 DKAN 구축

안녕하세요 씨앤텍 시스템즈 김준형 입니다.

이번 포스트는 DKAN 설치 과정에 대해서 정리해 보았습니다. 

 

우분투는 18.04 버전을 기준으로 설치했습니다.

설치 매뉴얼은 https://docs.getdkan.com/en/latest/installation/basic.html를 참고했습니다.

 

먼저 DKAN 설치 과정은 4가지로 나눌 수 있습니다.


1. Apache2 설치 및 구성

2. PHP 설치

3. MySQL 설치 및 구성

4. DKAN 패키지 설치


1.  Apache2 설치 및 구성입니다.

   
    - 다음과 같은 명령어를 실행하여 Apache2 설치합니다.
       > apt-get install apache2
    - Apache2 설치 후 관련 환경설정입니다.
       > cd /etc/apache2/

설치 된 apache2의 폴더

    - Apache2 시작페이지 및 포트 설정 ( * 포트는 임의로 설정합니다. )
       > vi /etc/apache2/ports.conf
 

/etc/apache2/ports.conf 파일 설정

       > vi /etc/apache2/sites-available/000-default.conf

/etc/apache2/sites-abailable/000-default.conf 파일 설정

       > vi /etc/apache2/apache2.conf

/etc/apache2/apache2.conf 파일 설정

 

2. PHP 설치입니다.

    - 다음과 같은 명령어를 실행하여 PHP관련 패키지를 설치합니다.
        > apt-get install php7.2                                          --- DKAN은 php기반( jsp, java 기반 가능)

        > apt-get install php7.2-gd                                   --- php를 확장하기 위한 패키지

        > apt-get install libapache2-mod-php7.2      --- php와 apache2를 연동하기 위한 패키지

        > apt-get install php-xml                                       --- php에서 xml을 사용하기 위한 패키지

        > apt-get install php-curl                                      --- php에서 curl을 사용하기 위한 패키지

   
   - PHP 관련 패키지들은 따로 환경설정을 하지 않고 단순 연동하기 위한 패키지입니다.

 

 3. MySQL 설치 및 구성입니다.

    - 다음과 같은 명령어를 실행하여 Mysql을 설치합니다.
        > apt-get install mysql-server                    --- database를 mysql로 사용하기 위한 db설치
           * 설치 도중 root 계정과 passwd 입력 필요
     
        > apt-get install php-mysql                      --- php환경에서 mysql을 연동하여 쓰기 위한 패키지 
   
     - MySQL 접속 및 Database를 생성합니다. 

Linux를 통한 mysql 접속 명령어
DKAN에 사용할 데이터베이스 생성

        - User 생성 및 권한을 부여합니다.

grant를 통한 유저 권한 부여

   
   4. DKAN 패키지 설치

         

       - 다음과 같은 명령어를 실행하여 git을 이용한 오픈 소스를 설치합니다.
           > apt-get install git                                      -- git을 사용하기 위한 패키지

           > git clone --branch master https://github.com/GetDKAN/dkan-drops-7.git drupal

                                                                                            -- git에 올려진 파일을 현재 내 폴더에 다운

       
       - Apache2에 설정한 경로로 다운받은 git파일을 이동합니다.
            > mv drupal /var/www/  

    

       - Apache2에 설정한 경로로 이동 후 Apache2 서버를 재시작합니다.
            > /etc/init.d/apache2 restart

Drupal 경로 설정 후 Apache2 서버 재시작

       - Web을 통한 DKAN 설치

          ① 초기화면

설치를 위한 Web 접속 초기 상태

 

            ② 설치 전 권한 부족으로 인해 생기는 오류

권한 부족으로 인한 오류

 


오류 : FS-001

웹에서 DKAN 설치 폴더를 생성할 권한이 없어서 발생

/var/www/drupal/sites/default 폴더 생성 권한이 없이 때문에 발생
아래 해당 명령어를 통해 파일을 생성하고 권한을 부여

> mkdir /var/www/drupal/sites/default/files  -- files 폴더를 생성

> chmod 777 /var/www/drupal/sites/default/files  -- files 폴더를 접근권한 설정

chmod를 통한 접근권한 부여



오류 : SF-001

DKAN 설치 시 초기 설정 파일이 설치 위치에 존재 하지 않기 때문에 오류 발생

아래 해당 명령어를 통해 설정 파일을 복사 및 접근권한 설정으로 해결 가능

> cp /var/www/drupal/sites/default/default.settings.php /var/www/drupal/sites/default/settings.php

-- default.settings.php 파일을 복사하여 settings.php로 생성


> chmod a+w /var/www/drupal/sites/default/settings.php

-- settings.php 파일의 접근권한을 누구든 접속 가능하게 부여


            ③ 정상적인 설치 화면

정상적으로 설치 진행 시 화면

              ④ DKAN에 사용할 데이터베이스 정보 입력

기존에 mysql 생성한 데이터베이스 및 유저 정보 입력

              ⑤ DKAN install

DKAN Install

              ⑥ DKAN에서 사용할 관리자 정보 입력 및 사이트 정의

DKAN에서 사용 될 관리자 계정 작성

                ⑦ 웹 페이지 구성 및 접속

DKAN 접속 화면


설치중에 AJAX관련 오류가 발생할 수 있습니다. 

An AJAX HTTP request terminated abnormally. Debugging information follows. 
Path: http://192.168.1.51/install.php?profile=dkan&locale=en&continue=1&id=1&op=do StatusText: 
ResponseText: ReadyState: 4

 

> cd /var/www/drupal
> wget http://drupal.org/files/issues/autocomplete-1232416-17-7x.patch

> patch -p1 < autocomplete-1232416-17-7x.patch

명령어로 해결이 가능 합니다.


 


설치가 완료되고 메인화면에서 create_function 관련 에러가 발생할 수 있습니다.

PHP7.2에선 더 이상 create_function을 사용하지 않기 때문인데요.

DKAN에서 딱 한문장만 사용하기때문에 수정가능합니다.
해당 오류가 나는 파일을 들어가서 수정합니다.

- 기존 오류 문장
$this->utf8_strlen = create_function('$text','return preg_match_all(
                        "/[\\\\x00-\\\\xBF]|[\\\\xC0-\\\\xFF][\\\\x80-\\\\xBF]*/",
                        $text, $m);');

- 수정 후 문장
$this->utf8_strlen = function($text){return preg_match_all(
                        "/[\\\\x00-\\\\xBF]|[\\\\xC0-\\\\xFF][\\\\x80-\\\\xBF]*/",
                        $text, $m);};


감사합니다.

728x90