OpenGrok搭建
0x00: 起因
工作环境换到了mac之后很多东西都不一样了。最近在看Linux kernel几个漏洞,需要阅读Linux源码,然而在windows上使用习惯了source insight后,macOS上一脸懵逼,不知道啥工具好使。了解到OpenGrok之后,决定搭建一个,主要是添加源码方便,也方便实用,感觉还不错。
其实vim或者subl这类编辑器看源码也可以,只是我还没习惯。所以就先OpenGrok啦~
0x01: 准备工作
根据github上项目的wiki可知,需要的准备工作如下:
- JDK 1.8 or higher
- {OpenGrok binaries from https://github.com/OpenGrok/OpenGrok/releases (either the package for Solaris, or .tar.gz with binaries, NOT the src !)
- Exuberant Ctags for analysis (https://github.com/universal-ctags is recommended)
- A servlet container like GlassFish or Tomcat (8.x or later) also running with java at least 1.8
- If history is needed, appropriate binary (in some cases also cvs/svn repository) must be present on the system (e.g. Subversion or Mercurial or SCCS or … )
- 2GB of memory for indexing process using OpenGrok script (can use less, this is scaled for bigger deployments)
- a recent browser for clients - IE, Firefox, recent Chrome or Safari
sufficient ULIMIT settings (refer to README)
我在自己服务器上搭建的,系统是ubuntu,在安装了jdk8之后,去下载了tomcat和opengrok的包。
这里说个题外话,使用apt-get方式安装的tomcat8很奇怪,服务起来了,但是curl访问本地8080的时候,没回应,所以我最后去官网下载了一个tomcat的包。
0x02:过程
如果是很多人用,推荐专门创建一个用户,做好权限的隔离,个人使用的话无所谓了。
准备工作
- 找一个目录,把下载来的tomcat和opengrok解压了。
- 启动tomcat,然后访问
http://127.0.0.1:8080
,确定tomcat正常工作。
1 | ubuntu@VM-64-163-ubuntu:~$ ./apache-tomcat-8.5.16/bin/startup.sh |
- 为项目创建目录,拿我自己的举例子:
1 | path/to/your/opengrok_projects/prj1 |
目录结构如下:
1 | path/to/your/opengrok_projects/prj1 |
部署opengrok
- 部署
1 | OPENGROK_TOMCAT_BASE=path/to/apache-tomcat path/to/opengrok/bin/OpenGrok deploy |
- 创建索引
1 | OPENGROK_VERBOSE=true OPENGROK_INSTANCE_BASE=./opengrok_data ./opengrok-1.1-rc5/bin/OpenGrok index ./opengrok_projects |
创建索引时,会创建三个目录,一个data目录来存放索引信息,一个etc目录创建配置信息和一个log目录。
- 修改配置文件
在path/to/apache-tomcat/webapps/source/WEB-INF
目录下的web.xml
文件
把
1 | <context-param> |
中的/var/opengrok/etc/configuration.xml
修改成对应的opengrok的path/to/opengrok/data/etc/configuration.xml
1 | <context-param> |
我这里是这个样子的。
- 把源码放进project目录
我这里放的是linux-3.18.1的源码。以后如果想更新的话,直接放进去,然后重新生成索引就好了。