在Ubuntu 12.04 LTS上安装OpenGrok浏览Android源码

OpenGrok是一个快速,便于使用的源码搜索引擎与对照引擎,它能够帮助我们快速的搜索、定位、对照代码树。接下来就具体讲解Ubuntu 12.04 LTS环境下OpenGrok的安装及使用。

1.参照 UBUNTU 13.10 APACHE 2.2 通过 AJP 整合 TOMCAT 7 中讲述的方法,进行Tomcat,Apache2的配置安装。

2.安装ctags用于对C\C++代码的支持

$ sudo apt-get install exuberant-ctags

3.下载并安装OpenGrok

可以到"http://opengrok.github.io/OpenGrok/"手工下载文件,然后上传到服务器,也可以直接用wget命令来下载,一般选择安装在"/opt"目录下面。

$ cd /opt

$ wget http://java.net/projects/opengrok/downloads/download/opengrok-0.12.1.5.tar.gz

解压缩文件到当前目录"/opt"

$ tar -zxvf opengrok-0.12.1.5.tar.gz

创建一个软链接,方便后续的修改

$ ln -s opengrok-0.12.1.5 opengrok

拷贝"/opt/opengrok/lib/source.war"到Tomcat7的工程目录"/var/lib/tomcat7/webapps/"

$ sudo cp /opt/opengrok/lib/source.war /var/lib/tomcat7/webapps/

访问"http://localhost:8080/source/"确认OpenGrok是否已经安装成功,如果安装成功,出现下面的界面:OpenGrok

4.出于安全原因,禁止外网访问Tomcat的8080端口

只允许Tomcat在本地的8080端口监听即可,修改

$ sudo vim /var/lib/tomcat7/conf/server.xml

添加 address="127.0.0.1"

<Connector port="8080" address="127.0.0.1" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />

重启Tomcat7

$ sudo service tomcat7 restart

5.配置Apache2对Tomcat通过AJP进行反向代理

Apache2的配置文件“ /etc/apache2/sites-available/default”中,增加如下配置:

#for Tomcat 7 openGrok
ProxyPass /AndroidXRef/ ajp://127.0.0.1:8009/AndroidXRef/
ProxyPassReverse /AndroidXRef/ ajp://127.0.0.1:8009/AndroidXRef/
ServerName localhost

Tomcat7的配置文件/var/lib/tomcat7/conf/server.xml中增加如下配置<Context path="/AndroidXRef" docBase="source/"/>,解决跳转404问题。ProxyPass后面必须携带“/”,否则就会出现404问题。

<Host name="localhost"  appBase="webapps"
	unpackWARs="true" autoDeploy="true">
 
	<Context path="/AndroidXRef" docBase="source/"/>
 
	<!-- SingleSignOn valve, share authentication between web applications
		 Documentation at: /docs/config/valve.html -->
	<!--
	<Valve className="org.apache.catalina.authenticator.SingleSignOn" />
	-->
 
	<!-- Access log processes all example.
		 Documentation at: /docs/config/valve.html
		 Note: The pattern used is equivalent to using pattern="common" -->
	<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
		   prefix="localhost_access_log." suffix=".txt"
		   pattern="%h %l %u %t &quot;%r&quot; %s %b" />
 
</Host>

6.配置OpenGrok对源代码进行解析

设置要建立索引的源代码目录的位置,以存储在"/data/OpenGrok/Android_4.2"上的Android代码为例子:

$ export OPENGROK_INSTANCE_BASE=/data/OpenGrok/Android_4.2

$ export OPENGROK_WEBAPP_CONTEXT=AndroidXRef

注意:

由于我们使用了Apache2的反向代理才需要设置 OPENGROK_WEBAPP_CONTEXT,如果没有设置反向代理,请不要设置OPENGROK_WEBAPP_CONTEXT

在使用反向代理的时候如果不设置OPENGROK_WEBAPP_CONTEXT会导致在点击具体的变量定义的时候,出现404.

不使用反向代理的时候请只设置OPENGROK_INSTANCE_BASE

创建源代码索引

#删除源代码下面可能存在的".git",".svn"隐藏目录
$ cd /data/OpenGrok/Android_4.2

$ find . -name .svn -print0 | xargs -0 rm -r -f

$ find . -name .git -print0 | xargs -0 rm -r -f

#编译工具是没有必要的目录
$ rm -rf prebuilts

$ bash /opt/opengrok/bin/OpenGrok index /data/OpenGrok/Android_4.2

执行时间在40分钟左右,执行完成。生成的索引文件在源代码的"data"目录下面,重建索引的时候需要执行如下操作,才能再次建立索引

$ rm -rf data

$ rm -rf log

$ rm -rf logging.properties

注意,请务必删除源代码中的"prebuilts"目录,这个目录下面存储的是一系列的编译工具,在浏览代码的时候,完全用不上,但是占据的磁盘空间确是巨大的。

注意,如果服务器上面的内存比较有限,请使用如下命令进行内存限制,否则建立索引的时候,会触发内存不足的情况:

$ export JAVA_OPTS="-Xmx1024m"

修改OpenGrok配置文件

$ cd /var/lib/tomcat7/webapps/source/WEB-INF

$ sudo vim web.xml

修改其中的

<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>

为具体的工程目录"/data/OpenGrok/Android_4.2",修改后的配置如下:

<context-param>
	<param-name>CONFIGURATION</param-name>
	<param-value>/data/OpenGrok/Android_4.2/etc/configuration.xml</param-value>
	<description>Full path to the configuration file where OpenGrok can read it's configuration</description>
</context-param>

刷新浏览器,可以看到Android_4.2的源码可以搜索出来了。

参考链接


发布者

发表回复

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