논문 때문에 이 녀석을 설치해야했는데, Java에 익숙하지 않아서 애 먹었다.

Docker를 쓰면 간단하게 해결이 되었는데, Docker를 쓸 생각을 못하고 계속 네이티브로 설치하려고 하다가 거의 2-3주를 삽질했던… (Tomcat은 뭔가 추가로 해줄게 많고 Wildfly는 또 뭔지 모르고 ~~~)

Google Cloud에 Drools Workbench를 설치하는 방법을 간략하게 정리해놓는다.


1. Docker 설치

먼저 Docker를 무조건 설치해야 한다. Linux Ubuntu 16.04 를 쓴다는 가정 하에, 다음의 쉘 스크립트를 수행하라.

$ sudo apt-get update
$ sudo apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
$ sudo apt-add-repository 'deb https://apt.dockerproject.org/repo ubuntu-xenial main'
$ sudo apt-get update
$ sudo apt-get install -y docker-engine

Copy and Paste 를 위한 한줄

sudo apt-get update; sudo apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D; sudo apt-add-repository 'deb https://apt.dockerproject.org/repo ubuntu-xenial main'; sudo apt-get update; sudo apt-get install -y docker-engine

제대로 동작하고 있는지는 다음을 통해 확인할 수 있다.

$ sudo systemctl status docker
// or
$ sudo service docker status

그리고 사용자를 docker 그룹에 추가해준다. 그럼으로써 docker 커맨드를 sudo 없이 사용할 수 있다.

$ sudo usermod -aG docker $(whoami)

여기까지 왔으면, 로그아웃 후 다시 로그인하여 세션을 초기화하면 sudo 없이 docker를 사용할 수 있다.

2. Workbench 다운로드 및 실행

$ docker pull jboss/drools-workbench-showcase
$ docker run -p 8080:8080 -p 8001:8001 -d --name drools jboss/drools-workbench-showcase:latest

이후 웹 브라우저에서 localhost:8080/drools-wb 으로 접속하면 되고, localhost:8001 로 SSH 에 접속할 수 있다.

ID / PW는 admin / admin 이다.

3. KIE Server 설치

Web Interface는 정상 동작하나, REST API 등을 사용해서 Rule을 관리하려면 KIE Execution Server가 동작하고 있어야 한다.

$ docker run -p 8180:8080 -d --name kie-server --link drools:kie_wb jboss/kie-server-showcase:latest

이후, http://localhost:8180/kie-server/services/rest/server/ 에서 REST API 를 이용할 수 있다.

Basic Authentication을 사용하며, ID / PW 는 kieserver / kieserver1! 이다.

4. Nginx Reverse Proxy 설정

Ubuntu 16.04는 클라우드에 설치되어있으니, localhost 에 접속을 못한다. lynx를 사용하지 않는 이상…

하지만 lynx를 사용하기에는 Workbench가 너무 복잡하므로 부적합하다. 따라서 Nginx의 reverse proxy를 설정하여준다.

nginx에서 다음의 설정을 해 주도록 한다.

// nginx 설치 안 되어 있으면
$ sudo apt-get install nginx -y
$ sudo vi /etc/nginx/sites-enabled/default
map $http_upgrade $connection_upgrade {
  default upgrade;
  ''      close;
}


server {
  listen 80;
  listen [::]:80;

  root /dev/null;

  server_name drools.mydomain.com;

  location / {
    proxy_pass http://localhost:8080;

    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;

    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
  }
}

server {
  listen 80;
  listen [::]:80;

  root /dev/null;

  server_name kie.mydomain.com;

  location / {
    proxy_pass http://localhost:8180;

    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;

    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
  }
}
$ sudo service nginx restart

이후, drools.mydomain.com/drools-wb 에 접속하면 정상 동작한다.

KIE Server의 경우, kie.mydomain.com/kie-server/services/rest/server/에서 REST API가 동작할 것이다.