본문 바로가기
IT/IT 잡지식

Opengrok 설치 하기

by 큰공 2021. 3. 18.
728x90
반응형

 

Opengrok 이란?

 아마도 이글을 검색해서 들어오신 분이라면, OpenGrok 이 대충은 뭐하는것인지 알고 들어왔을 것이다.

 그럼에도, OpenGrok 이 뭔지 간략하게 설명하고자 한다.

 공식적인 정의를 살펴보자

OpenGrok is a fast and usable source code search and cross reference engine, written in Java
OpenGrok은 빠르고 사용 가능한 소스 코드 검색 및 상호 참조 엔진으로, Java로 작성되었습니다.

 아주 방대한 프로젝트에서 소스코드를 쉽게 검색하게 해주는 툴이다. Web 으로 동작하며, 빠르다는 장점이 있다. 미리 만들어둔 색인(Index)를 통해서, 내가 검색을 원하는 부분이 어디 파일에 있고, 어떻게 사용되는지 파악이 가능하다.

 사족으로, "사실 코딩은 컨트롤 씨 컨트롤 브이가 다다" 라고 말하고 싶다. 어떤 부분을 구현하려고 할 때, 가장 쉬운 접근 방법이 다른 사람이 어떻게 했는지 보고 인용하는것이다. (물론 OSS는 지켜야 겠지?)

 큰공이 재정의한 OpenGrok 을 설명하면, "소스코드를 쉽게 검색하는 툴" 으로 하고자 한다.

 

개요 및 환경

 이 포스팅에서 Open Grok 설치를 하는 방법에 대해서 기술하고자 한다.

 OpenGrok 설치 공식 메뉴얼은 아래 링크를 참고 하자.

 

https://github.com/oracle/opengrok/wiki/How-to-setup-OpenGrok

 

oracle/opengrok

OpenGrok is a fast and usable source code search and cross reference engine, written in Java - oracle/opengrok

github.com

필자의 환경은 아래와 같다.

 - Ubuntu 18.04

 - OpenJDK 11

 - Tomcat

 - ctags

 

OpenJDK 11 설치 확인

 공식사이트에서는 JDK 11 이상 부터 지원한다고 적혀있다. 서버에 설치된 JDK 버젼을 확인하고, 11보다 낮다면 업그레이드 해주자.

$ java -version
openjdk version "11.0.10" 2021-01-19
OpenJDK Runtime Environment (build 11.0.10+9-Ubuntu-0ubuntu1.18.04)
OpenJDK 64-Bit Server VM (build 11.0.10+9-Ubuntu-0ubuntu1.18.04, mixed mode, sharing)

 서버에 JDK 11 이 이미 설치 되어 있다. 설치가 안되어 있는 서버라면 설치를 하자.

 

TOMCAT 설치 확인

 서버에 TOMCAT 이 없어서 설치하였다. 현재 최신 버젼인 TOMCAT 10 을 설치하였다. TOMCAT 설치 방법은 따로 이 페이지에 적진 않으니, 검색을 통해서 설치를 하기 바란다.

 아래와 같이 tomcat 이 설치가 되어 있는지, 정상적으로 동작하는지 확인한다.

/DATA/tomcat10/apache-tomcat-10.0.4/bin$ ./version.sh 
Using CATALINA_BASE:   /DATA/tomcat10/apache-tomcat-10.0.4
Using CATALINA_HOME:   /DATA/tomcat10/apache-tomcat-10.0.4
Using CATALINA_TMPDIR: /DATA/tomcat10/apache-tomcat-10.0.4/temp
Using JRE_HOME:        /usr
Using CLASSPATH:       /DATA/tomcat10/apache-tomcat-10.0.4/bin/bootstrap.jar:/DATA/tomcat10/apache-tomcat-10.0.4/bin/tomcat-juli.jar
Using CATALINA_OPTS:   
NOTE: Picked up JDK_JAVA_OPTIONS:  --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.concurrent=ALL-UNNAMED --add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED
Server version: Apache Tomcat/10.0.4
Server built:   Mar 5 2021 11:07:15 UTC
Server number:  10.0.4.0
OS Name:        Linux
OS Version:     4.15.0-122-generic
Architecture:   amd64
JVM Version:    11.0.10+9-Ubuntu-0ubuntu1.18.04
JVM Vendor:     Ubuntu

 

 

TOMCAT Manager 접속 확인

우분투 서버에서 인터넷 브라우저를 이용해서 해당 사이트가 들어가 지는지 확인한다.

http://localhost:8080/manager/html

설치 후 최초로 들어가게 되면, 접속이 안될 확률이 크다. id / pw 를 물어보면서 접속이 안된다면, 아직 user 설정이 안되어 있을 수 있으니, 아래와 같이 id / pw 를 설정한다.

/DATA/tomcat10/apache-tomcat-10.0.4/conf$ vim tomcat-users.xml

   <role rolename="tomcat"/>
   <role rolename="role1"/>
   <role rolename="admin-gui"/>
   <role rolename="manager-gui"/>

   <user username="tomcat" password="tomcat" roles="tomcat, manager-gui, admin-gui"/>
   <user username="both" password="tomcat" roles="tomcat,role1"/>
   <user username="role1" password="tomcat" roles="role1"/>

conf/tomcat-users.xml 파일을 위와 같이 설정한다음 id / pw 를 tomcat / tomcat 으로 입력하고, manager 화면이 정상적으로 보이는지 확인한다.

 

Universal - CTAGS 설치

universal - ctags 라는 녀석을 설치를 해줘야 한다.

아래 명령을 통해서 설치 하자. ctags 설치 시 autoconf / automake 가 필요하므로 해당 패키지를 먼저 설치해준다.

 

 1) 관련 패키지 설치

$ sudo apt-get install autoconf
$ sudo apt-get install automake

 

 2) universal - ctags 설치

$ git clone https://github.com/universal-ctags/ctags.git
$ cd ctags
ctags$ ./autogen.sh 
ctags$ ./configure
ctags$ make
ctags$ sudo make install

 3) ctags 가 정상적으로 설치 되었는지 확인한다.

/usr/local/bin$ ctags --version
Universal Ctags 5.9.0(p5.9.20210314.0), Copyright (C) 2015 Universal Ctags Team
Universal Ctags is derived from Exuberant Ctags.
Exuberant Ctags 5.8, Copyright (C) 1996-2009 Darren Hiebert
  Compiled: Mar 18 2021, 13:41:22
  URL: https://ctags.io/
  Optional compiled features: +wildcards, +regex, +iconv, +option-directory, +packcc

 

바이너리 다운로드

https://github.com/oracle/opengrok/releases

github.com/oracle/opengrok/releases/download/1.6.4/opengrok-1.6.4.tar.gz

 

 공식 git hub 사이트에서 최신의 opengrok 바이너리를 다운로드 하자, 글을 쓰는 시점인 21년 3월 18일에서의 최신 버젼은 1.6.4 이다. 소스코드도 다운로드 받아서 빌드하여 사용할 수 있지만, 바이너리 자체를 받아서 쉽게 설치 하자.

 

 

폴더 생성

 우분투 서버에 적당한 공간에 아래와 같이 opengrok 과 관련된 폴더를 생성한다.

 필자는 /DATA 밑에 만들었다.

/DATA$ mkdir -p ./opengrok/{src,data,dist,etc,log}
/DATA$ ls
opengrok
/DATA$ cd opengrok/
/DATA/opengrok$ ls
data  dist  etc  log  src

 (폴더를 하위로 저렇게 한번에 만들수 있구나...)

 

 압축 풀기

 다운받은 opengrok-1.6.4.tar.gz 파일을, opengrok 폴더에 복사해 두고, 다음과 같이 압축을 풀어준다. dist 폴더에 압축이 풀어 졌음을 확인한다.

/DATA/opengrok$ ls
data  dist  etc  log  opengrok-1.6.4.tar.gz  src

/DATA/opengrok$ tar -C ./dist --strip-components=1 -xzf opengrok-1.6.4.tar.gz

/DATA/opengrok$ cd dist/
/DATA/opengrok/dist$ ls
doc  lib  share  tools

 

톰캣 DEPLOY WAR 설정

DEPLOY를 설정하는 방법에는 여러가지가 있는데, 홈페이지를 통한 UI 적으로 설정하는 방법으로 설명하고자 한다.  http://localhost:8080/manager/html 페이지에 접속을 해보자.

 

해당 페이지에서, WAR file to deploy 메뉴를 찾고, Select WAR File to upload 에서 opengrok의 source.war 파일을 찾아 deploy 해준다.  source.war 파일은 opengrok/dist/lib/source.war 에 있다.

 

 deploy 가 정상적으로 이뤄졌다면, 내용이 정상적으로 나오진 않지만, http://localhost:8080/source/ 가 접속이 될 것이다. 404 에러가 뜬다면 정상적으로 되지 않은것이다. 

 

 

소스 코드 다운로드

 indexing 해서 검색해야할 소스코드를 /DATA/opengrok/src 폴더 하위에 복사 및 다운로드 해준다.

 app 이라는 폴더를 만들어서 하위에 놔두었다.

/DATA/opengrok/src$ ls -al
drwxrwxr-x 3 1620326 1620326 4096 Mar 18 12:29 app

 

Indexing

 이제 소스코드를 인덱싱 해보자. 명령이 다소 길긴한데, opengrok 의 설치 경로만 잘 바꾸어 주면 정상적으로 indexing 이 될 것이다. 소스 양이 많을 경우, indexing 이 느릴 수 있다.

java \
    -Djava.util.logging.config.file=/DATA/opengrok/etc/logging.properties \
    -jar /DATA/opengrok/dist/lib/opengrok.jar \
    -c /usr/local/bin/ctags \
    -s /DATA/opengrok/src -d /opengrok/data -H -P -S -G \
    -W /DATA/opengrok/etc/configuration.xml -U http://localhost:8080/source

 

완성

 http://localhost:8080/source/ 으로 접속해서 이제 소스코드를 빠르게 검색하자!

 

728x90
반응형

댓글