opengrok搭建[通俗易懂]

opengrok搭建[通俗易懂]前序OpenGrok是一个快速,便于使用的源码搜索引擎与对照引擎,它能够帮助我们快速的搜索、定位、对照代码树。一般常用于大型的项目中,比如Android系统源码。我也是刚来公司后才发现有这个东西的,在此自己也搭建一套,方便在家里也可以查看源码。因为是查看自己定制的系统源码所以要搭这个,如果只是查看AOSP的官方源码推荐一个网站:http://androidxref.com/环境OS:Debian

大家好,又见面了,我是你们的朋友全栈君。

前序

OpenGrok是一个快速,便于使用的源码搜索引擎与对照引擎,它能够帮助我们快速的搜索、定位、对照代码树。一般常用于大型的项目中,比如Android系统源码。
我也是刚来公司后才发现有这个东西的,在此自己也搭建一套,方便在家里也可以查看源码。因为是查看自己定制的系统源码所以要搭这个,如果只是查看AOSP的官方源码推荐一个网站:http://androidxref.com/

环境

OS:Debian 8/Ubuntu 14.04及以上
Web Server:tomcat8
JDK:openjdk-8
opengrok:0.12.1.6 (stable)

安装tomcat8

在这里为了简单化,直接使用系统内仓库进行安装了。
$ sudo apt-get install tomcat8

安装 openjdk-8

$ sudo apt-get install openjdk-8-jdk

安装opengrok

这个需要从github下载了。
在这里可以找到所有releases的版本
https://github.com/OpenGrok/OpenGrok/releases
我们使用最新的稳定版:0.12.1.6 (stable)
最好找一个分区空间较大的地方安装

$ wget https://github.com/OpenGrok/OpenGrok/files/467358/opengrok-0.12.1.6.tar.gz.zip

可能是为了减小体积吧,压缩了2次,所以我们也需要解压2次
$ unzip opengrok-0.12.1.6.tar.gz.zip
$ tar zxvf opengrok-0.12.1.6.tar.gz

配置opengrok

在oepngrok的安装目录中,也就是我们刚刚解压后的目录,新建src和data目录。
src目录用于存放源码的链接
data目录用于存放生成的索引文件。

创建源码链接

因为可能在下载opengrok之前就已经下好了android源码, 由于源码太大,复制和移动都不现实,所以我们可以使用软链接的方式。当然也可以在索引的时候指定源码路径,不过那样不便于管理,我不喜欢那样。以下是我的源码路径,可以根据自己的来进行修改。

$ ln -s /home/lu/Android-src/AOSP-6.0 ~/data/opengrok-0.12.1.6/src/AOSP-6.0
$ ln -s /home/lu/Android-src/cm13 ~/data/opengrok-0.12.1.6/src/cm13

配置tomcat8

opengrok 0.12.1.6版本默认是只识别tomcat6和7的,所以我们需要修改一下配置文件使其搜索tomcat8,当然了也可以直接安装tomcat7,不过在这里我使用的是tomcat8,所以必须要修改配置了。
编辑opengrok安装目录中的bin/OpenGrok文件:

$ vim ~/data/opengrok-0.12.1.6/bin/OpenGrok
找到/var/lib/tomcat7/webapps和/var/lib/tomcat7
将tomcat7改为tomcat8即可。

更简单的方式是直接使用sed命令批量改就行了
$ sed -i 's/tomcat7/tomcat8/g' ~/data/opengrok-0.12.1.6/bin/OpenGrok

配置opengrok实例路径

默认opengrok实例路径是/var/opengrok当第一次进行索引的时候会在改目录中生成配置文件和log文件。默认源码目录src和data索引文件也是要放置在这里的。为了方便起见我们也可以将其改为opengrok的安装目录下面。
编辑opengrok安装目录中的bin/OpenGrok文件:

$ vim ~/data/opengrok-0.12.1.6/bin/OpenGrok

找到如下内容
OPENGROK_INSTANCE_BASE="${OPENGROK_INSTANCE_BASE:-/var/opengrok}"
将其改为
OPENGROK_INSTANCE_BASE="${OPENGROK_INSTANCE_BASE:-/home/lu/data/opengrok-0.12.1.6}"
即可

索引项目

opengrok已经配置完了。要对项目进行索引,我们还需要一个工具Exuberant Ctags

安装Exuberant Ctags

$ sudo apt-get install exuberant-ctags

开始索引

进入opengrok的安装目录,执行以下命令即可开始索引:

$ bin/OpenGrok index

它会自动去找安装目录下面src目录中的项目源码,并且将其索引记录到data目录中。
索引过程中我们可以通过安装目录中的log/opengrok0.0.log查看当前进度。

部署

索引完成后,我们就可以部署到tomcat8中,然后在web页面进行查看了。
执行以下命令开始部署,注意由于我们是通过apt-get安装的tomcat8,所以系统会自动创建tomcat8用户和组的。而我们如果是其他用户的话需要加sudo 权限。

$ sudo bin/OpenGrok deploy

还有记得启动tomcat哦,我的是debian 8所以可以用systemd来启动。
$ sudo systemctl start tomcat8
如果是ubuntu 14.04的话,可能还没有systemd,可以使用以下命令启动。
$ sudo service tomcat8 start

搜索项目

部署成功后,我们就可以通过浏览器访问了。
http://server-ip:8080/source/
出现以下界面就表示已经成功。
opengrok

最后如果在公司源码经常改动的话,可以通过crontab定时
repo sync然后也定时~/data/opengrok-0.12.1.6/bin/OpenGrok update更新一下索引即可。

总结

刚开始的时候从网上也找了一些资料,有很多太笼统了,有的又残缺不全。最后只能去看官方文档了,发现还是文档比较靠谱点。要养成看文档的习惯啊。在安装包中的doc目录下面讲的很清楚了。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/130095.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • VS2019配置SFML

    VS2019配置SFMLVS2019 配置 SFML1 下载安装 SFMLSDK 网址 https www sfml dev org download php 解压并放在文件夹里 记住这个路径 在我的电脑中这个路径是 F C Projects library SFML 2 5 12 VS 新建一个 C 控制台项目我命名为 SfmlTest 并放在常用的项目文件夹中 3 在解决方案中右键项目名称 点击属性 4 4 1 在 C C 中点击常规 在第一行附加包含目录中复制粘贴 SFML 2 5 1 include

    2025年10月8日
    1
  • 51单片机汇编教程[通俗易懂]

    51单片机汇编教程[通俗易懂]  很多电子爱好者,都想学习单片机这门技术。下面的这一系列教程是www.51hei.com专门为初学者入门而准备的,从底层硬件入手基于汇编和c两种语言,详细的介绍了单片机的原理,指令,寄存器,以及接口等,后面还为你准备了一些小的设计。都是从单片机最基本的东西讲起,相信你一定能看懂,并且学会单片机这门有意思的技术,有什么问题可在文章后面的评论留言。  第1课:单片机简叙第2课:单片…

    2022年6月29日
    27
  • webpackdevtool配置简单对比简书_钢铁雄心4toolpack

    webpackdevtool配置简单对比简书_钢铁雄心4toolpack官方手册传送门官方对devtool配置的定义很简单:选择一种sourcemap格式来增强调试过程,不同的值会明显影响到构建build和重新构建rebuild的速度。不过,什么是sourcemap,官方用提供了许多种的sourcemap,其中的区别是什么,我们在开发中应该怎么选择,都是我们要学习的。1.什么是sourcemap现在的前端代码会通过babel编译或者各类的…

    2022年9月29日
    4
  • 利用ESP定律的upx脱壳实践

    利用ESP定律的upx脱壳实践利用ESP定律的upx脱壳实践背景:除了命令行upx-d脱壳,还有手动脱壳。ESP定律的本质是堆栈平衡,又称堆栈平衡定律,是应用频率最高的脱壳方法之一,脱壳的目的就是找到真正的OEP(源文件的EP代码)方法:从pushad到popad是一段解压缩代码(解压UPX壳),这段代码执行后,紧跟在popad后的第一个JMP指令可跳转到OEP实践:1:查壳2:OD打开3:F8//对于寄存器,指令执行后发生改变的寄存器会用红色显示.此处ESP和EIP的值发生改变,因为执行pushad指令,将8个

    2022年7月19日
    11
  • 深入浅出JVM调优,看完你就懂

    深入浅出JVM调优,看完你就懂深入浅出JVM调优基本概念:JVM把内存区分为堆区(heap)、栈区(stack)和方法区(method)。由于本文主要讲解JVM调优,因此我们可以简单的理解为,JVM中的堆区中存放的是实际的对象,是需要被GC的。其他的都无需GC。下图文JVM的内存模型从图中我们可以看到,1、JVM实质上分为三大块,年轻代(YoungGen),年老代(OldMemory…

    2022年6月1日
    34
  • 简历项目

    简历项目

    2021年5月20日
    126

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号