参考官网:http://opengrok.github.io/OpenGrok/
https://github.com/oracle/opengrok/releases
https://github.com/oracle/opengrok/wiki/How-to-install-OpenGrok
https://github.com/oracle/opengrok/blob/master/doc/EXAMPLE.txt
1. 下载stable 版本
https://github.com/oracle/opengrok/releases/download/1.1-rc21/opengrok-1.1-rc21.tar.gz
2. 环境
container:tomcat8,安装在/opt/apache-tomcat-8.5.28 //如果没有安装,可以参考另一篇《ubuntu14.04安装tomcat8》
java:java-8-openjdk-amd64
exuberant-ctags安装:sudo apt-get install exuberant-ctags //安装 ctags用于对 C\C++代码的支持
3.安装
step1 解压opengrok-1.1-rc21.tar.gz到指定目录 //这里放在/work/opengrok下,后面使用OPENGROK_PATH代替,便于理解
cd /work
tar -zxvf opengrok-1.1-rc21.tar.gz
mv opengrok-1.1-rc21 opengrok // OPENGROK_PATH=/work/opengrok
step2 配置tomcat路径
vi OPENGROK_PATH/bin/OpenGrok
在Usage()上面一行添加:
export OPENGROK_TOMCAT_BASE="/opt/apache-tomcat-8.5.28" #tomcat8安装路径,后续用TOMCAT_PATH代替,便于理解
4. 配置opengrok
cp OPENGROK_PATH/lib/source.war TOMCAT_PATH/webapps/source.war
cp OPENGROK_PATH/lib/source.war TOMCAT_PATH/webapps/project1.war
cp OPENGROK_PATH/lib/source.war TOMCAT_PATH/webapps/project2.war
cp OPENGROK_PATH/lib/source.war TOMCAT_PATH/webapps/project3.war
.........
以此类推,如果只有一个项目,则拷贝一个即可,建议<project1>名字同source名字一样,便于后续更新查找
(备注:war包会自动解压)【注意,看一下解压后的source目录的属主和权限,要用chown转成自己拥有】
cd /opt
chown -R xxx:xxx apache-tomcat-8.5.28/
cd /work/
chown -R xxx:xxx opengrok/
在浏览器中输入
http://localhost:8081/source/
http://localhost:8081/project1/
http://localhost:8081/project2/
......
就能看到网页已经正常显示了,但不能搜索出内容,因为还没有为项目建立索引。
5 建立索引
单个项目索引建立方法,不再说明,直接说明多个项目索引方法,如果只有一个项目按照下面的方法建一个就好了。
为了方便管理, 建立了一个 database (存放各项目src代码)和 opengrok_index(用于生成扫描后的index文件,初始为空即可) 二级目录。
root@ubuntu:/work/opengrok/database# ls
project1 project2 project3 project4 project5
#step1 删除源代码下面可能存在的".git",".svn"隐藏目录
$ cd OPENGROK_PATH/database/project1
$ find . -name .svn -print0 | xargs -0 rm -r -f
$ find . -name .git -print0 | xargs -0 rm -r -f
#step2 编译工具是没有必要的目录
$ rm -rf prebuilts developers development
注意,请务必删除源代码中的"prebuilts"目录,这个目录下面存储的是一系列的编译工具,在浏览代码的时候,完全用不上,但是占据的磁盘空间确是巨大的。
#step3 建立project1源码索引
cd OPENGROK_PATH/bin
sudo -s #输入root密码
export OPENGROK_INSTANCE_BASE="OPENGROK_PATH/opengrok_index/project1" #这是生成源码数据库文件的路径,非源码路径
export OPENGROK_WEBAPP_NAME="project1" #自定义webapp name
export OPENGROK_TOMCAT_BASE="/opt/apache-tomcat-8.5.28/" #改成自己的tomcat路径,TOMCAT_PATH,执行一次即可,不需要每次都执行
./OpenGrok deploy
./OpenGrok index OPENGROK_PATH/database/project1 #开始扫描源码所在路径
执行时间在40分钟左右,执行完成。开始扫描后,会在OPENGROK_INSTANCE_BASE路径下生成data和etc文件夹
生成的索引文件在"OPENGROK_PATH/opengrok_index/project1/data"目录下面,重建索引的时候需要执行如下操作,才能再次建立索引
Shell
$ rm -rf data etc
$ rm -rf log
$ rm -rf logging.properties
注意,如果服务器上面的内存比较有限,请使用如下命令进行内存限制,否则建立索引的时候,会触发内存不足的情况:
Shell
$export JAVA_OPTS="-Xmx1024m"
#step4 修改 OpenGrok配置文件
Shell
$cd TOMCAT_PATH/webapps/source/WEB-INF
$sudo vim web.xml
修改其中的
XHTML
<context-param>
<param-name>CONFIGURATION</param-name>
<param-value>/var/opengrok/etc/configuration.xml</param-value>
<description>Full path to the configuration file where OpenGrok can read it's configuration</description>
</context-param>
为
<context-param>
<param-name>CONFIGURATION</param-name>
<param-value>OPENGROK_PATH/opengrok_index/project1/etc/configuration.xml</param-value>
<description>Full path to the configuration file where OpenGrok can read it's configuration</description>
</context-param>
修改完成后,重启tomcat,
cd TOMCAT_PATH/bin
sudo ./shutdown.sh
sudo ./startup.sh
刷新浏览器,可以看到 project1的源码可以搜索出来了。
http://localhost:8081/project1/
eg.
1.部署多个源码并扫描
cd OPENGROK_PATH/bin
sudo -s #输入root密码export OPENGROK_INSTANCE_BASE="OPENGROK_PATH/opengrok_index/project1" #这是生成源码数据库文件的路径,非源码路径
export OPENGROK_WEBAPP_NAME="project1" #自定义webapp name
export OPENGROK_TOMCAT_BASE="/opt/apache-tomcat-8.5.28/"
./OpenGrok deploy
./OpenGrok index OPENGROK_PATH/database/project1
export OPENGROK_INSTANCE_BASE="OPENGROK_PATH/opengrok_index/project2"
export OPENGROK_WEBAPP_NAME="project2"
./OpenGrok deploy
./OpenGrok index OPENGROK_PATH/database/project2
export OPENGROK_INSTANCE_BASE="OPENGROK_PATH/opengrok_index/project3"
export OPENGROK_WEBAPP_NAME="project3" #自定义webapp name
./OpenGrok deploy
./OpenGrok index OPENGROK_PATH/database/project3
2.source.war分别重命名为project1.war, project2.war,拷贝至tomcat webapps目录
cp OPENGROK_PATH/lib/source.war TOMCAT_PATH/webapps/project1.war
cp OPENGROK_PATH/lib/source.war TOMCAT_PATH/webapps/project2.war
cp OPENGROK_PATH/lib/source.war TOMCAT_PATH/webapps/project3.war
于是,会自动生成project1,project2 , project3目录
3.修改每个project目录WEB-INF/web.xml
原始的web.xml里面,param-name为”CONFIGURATION”的配置项里,param-value的值为
“/var/opengrok/etc/configuration.xm”, 如下所示:
<param-name>CONFIGURATION</param-name>
<param-value>OPENGROK_PATH/opengrok_index/project1/etc/configuration.xml</param-value>
可以看到,OpenGrok默认寻找的index配置路径为/var/opengrok,因此,需要修改为我们的指定index路径
4.重启Tomcat
TOMCAT_PATH/bin
sudo ./shutdown.sh
sudo ./startup.sh
多项目索引的好处在于,可以分别搜索并且互不影响!
http://localhost:8081/source/
http://localhost:8081/project1/
http://localhost:8081/project2/
大功告成,OpenGrok安装搭建结束!
以上是我自己学习实践后总结记录的,方便下次使用。
感谢其他朋友的博客参考,
http://blog.youkuaiyun.com/luzhenrong45/article/details/52734781