오픈그록 OpenGrok 고급진 사용법에 대해서 간단하게 글을 써보려고 합니다. 특별히 어려운 것은 없지만, 막상 찾아보면 잘 안나와있는 내용을 정리해 봅니다!
간단한 소개
쉽게 설명하자면, 웹 브라우저에서 코드 검색을 쉽고 빠르게 할 수 있는 프로그램입니다. Java와 Servlet Container 그리고 Exuberant Ctags를 이용하여 구성되며, 다양한 언어와 형상관리툴들의 정보를 색인할 수 있습니다.
OpenGrok is a fast and usable source code search and cross reference engine. It helps you search, cross-reference and navigate your source tree. OpenGrok github
설치하는 방법만 빠르게 보고 싶으신 분은 아래 다른 블로거님의 글을 참고하세요.
OpenGrok 설치
구조
공식사이트의 설치 안내페이지를 보면 설명이 되어 있는데, 사실 저는 처음엔 구조가 잘 이해가 안되더라구요. 그래서 저 같은 누군가를 위해서 글을 남깁니다.ㅎ
이 그림이 핵심입니다. 근데, 이건 프로그램의 구조이지 실제 구동되는 구조는 아닙니다!!
SRC_ROOT
색인indexing 할 소스코드가 있는 곳입니다. 어디에 있던지 상관없습니다. 색인할 때 위치를 지정할 수 있습니다.
$ ./OpenGrok index <absolute_path_to_your_SRC_ROOT>
opengrok.jar
그림에서 보듯이 SRC_ROOT
를 DATA_ROOT
로 만들어 주는 jar
파일입니다. OpenGrok 코드를 받아서 ./OpenGrok index
이 명령어를 실행하면 결국 java -jar opengrok.jar
가 실행 되는 것이죠. 배치파일에 설정된 값으로...
DATA_ROOT
이게 제일 헷갈렸던 부분입니다. DATA_ROOT
는 색인된 정보들의 들어있는 폴더의 위치입니다. 즉, 색인을해야 생성됩니다. 그래서 Database 아이콘이 그려져 있네요. SRC_ROOT
처럼 위치를 지정할 수 있습니다!
$ OPENGROK_VERBOSE=true OPENGROK_INSTANCE_BASE=/tank/opengrok ./OpenGrok index /tank/source
OPENGROK_INSTANCE_BASE=/tank/opengrok
이부분이 DATA_ROOT
의 위치가 됩니다.
configuration.xml
색인 데이터에 관련된 기본 정보를 가지고 있습니다. DATA_ROOT/etc/configuration.xml
에 위치합니다. 여러개의 프로젝트를 관리하고 싶을때는 해당 파일에 대한 정보만 수정해 주면 됩니다. (아래 다시 설명...)
source.war
Web Application 입니다. .jsp
와 서블릿으로 구성되어있으며 아래 deploy
명령을 통해서 Tomcat webapp 폴더 아래로 복사됩니다. 실제 사용자가 브라우저를 통해서 접근하면 Tomcat에서 구동되어 동작하는 Web Application입니다. 당연히 이름도 내용물도 변경 할 수 있습니다~
$ ./OpenGrok deploy
실행되는 구조
실제 실행되는 구조는 아래와 같습니다.
- 브라우저에서
/source
경로로 접근하면 Tomcat에서 Web Application 이 실행됩니다. - Web Application
/WEB-INF/web.xml
에서DATA_ROOT
의 경로를 확인합니다. - 2번에서 찾은 경로의
DATA_ROOT
를 사용하여 OpenGrok이 구동됩니다!
고급진 사용법
위 내용을 바탕으로 응용 사용법에 대해서 소개합니다.
여러 프로젝트를 여러 Web Application으로 구성하기
단순하게 따라 설치하면 /source
경로에 1개의 DATA_ROOT
정보를 갖는 구성이 됩니다. androidxref.com 를 보면, 버전별로 구성이 되어 있는데 구성 방법을 소개합니다.
우선 아래 명령어를 통해 다른 경로에 DATA_ROOT
를 생성합니다.
$ OPENGROK_VERBOSE=true OPENGROK_INSTANCE_BASE=/tank/opengrok ./OpenGrok index /tank/source
OPENGROK_INSTANCE_BASE=/tank/opengrok
이부분이 DATA_ROOT
의 위치!
source.war
를 복사해서 다른 이름으로 하나 더 만듭니다. source2.war
이렇게 하면 war
파일 압축이 풀리면서 /source2
폴더가 생기고, 그 쪽으로 접근하면 다른 Web Application이 실행됩니다. 사실 war
는 그냥 압축파일이고, 복사해서 /webapp
폴더에 놓으면 Tomcat이 자동으로 압축을 풀어서 deploy 합니다. (자동 deploy 안되면 강제 deploy 하던지 reboot 하면 됨)
그리고 새로 만든 Web App 폴더에 들어가서, /WEB-INF/web.xml
파일을 열어서 아래에서 configuration.xml
경로를 아까 만든 DATA_ROOT
위치로 변경해주면 됩니다!
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<display-name>OpenGrok</display-name>
<description>A wicked fast source browser</description>
<context-param>
<param-name>CONFIGURATION</param-name>
<param-value>/tank/opengrok/etc/configuration.xml</param-value> // 여기를 수정!
<description>Full path to the configuration file where OpenGrok can read it's configuration</description>
</context-param>
...
화면 내용 변경하기
tizen.msalt.net 요건 제가 만든 사이트인데요. 타이젠 온라인 샘플 코드를 검색해보기 위해 만들어 보았습니다. 화면을 조금 바꿨는데요. /source
에서 .jsp
파일들을 수정하면 됩니다. 아...이건 더 설명을 못 하겠네요. 아마 열어보면 아실거에요.
마치며...
막상 정리를 다하고 나니까 쓸떼없는 일을 한것 같다는 생각이 듭니다...;; 왜냐하면 이정도 정보를 확인해서 처리 할만한 분이라면 굳이 제가 이렇게 주절주절 설명을 안해도 코드랑 구조보고 이해할 수 있을텐데 싶네요. 반대로 웹이나 서블릿을 잘모르는 분이라면 제 설명이 부족할 수도 있을것 같구요... 누군가에게 도움이 되었으면 좋겠네요.ㅠ
'기술 이야기' 카테고리의 다른 글
BLE Advertise Packet 내용 자세히 알아보기 (2) | 2017.08.18 |
---|---|
깃 git 활용/사용/응용 팁 (1) | 2017.07.24 |
BLE, Bluetooth Low Energy 비콘 간단 정리 (16) | 2017.07.19 |
onbeforeunload 사용팁, 카카오톡 인앱 브라우저에서 문제 임시해결 방법 (0) | 2016.02.01 |
IoT 아직은 아니다! 결코 가깝지 않은 미래 (0) | 2016.01.06 |
WinSCP 권한 오류 Permission denied code 3 무시 설정 (0) | 2015.12.28 |
하이차트(highcharts) 부트스트랩(bootstrap) 넓이 오류 문제 (0) | 2015.11.28 |
댓글