OpenGrok 是一个快速, 便于使用的源码搜索引擎与对照引擎, 它能够帮助我们快速的搜索、定位、对照代码树. 接下来就具体讲解一下 OpenGrok 的安装及使用.
所需依赖Requirements
You need the following:
JDK 1.8 or higher java 版本需要1.8或者更高的
OpenGrok '''binaries''' from https://github.com/OpenGrok/OpenGrok/releases (.tar.gz file with binaries, not the source code tarball !)下载的包要是二进制的包,不是源码包,源码包你还要编译的。
https://github.com/universal-ctags for analysis (avoid Exuberant ctags, they are not maintained anymore)
需要 universal-ctags 命令的 (ctags貌似有2个流派吧. Exuberant Ctags 和 ctags-universal )
A servlet container like GlassFish or Tomcat 8.0 or later also running with Java at least 1.8
需要servlet容器,推荐,也是我们常用的是tomcat,目前可以使用tomcat8了。或者tomcat 使用docker来 docker pull tomcat:9.0
If history is needed, appropriate binaries (in some cases also cvs/svn repository) must be present on the system (e.g. Subversion or Mercurial or SCCS or ... )
如果浏览代码索引的时候,想看代码的 历史记录。例如代码是git管理的,你的环境也要安装git的。
2GB of memory for the indexing process (bigger deployments will need more)
内存比较消耗的,代码很多的情况内存要大。要设置-Xmx参数的.
a recent browser for clients - IE, Firefox, recent Chrome or Safari
Optional tuning (see https://github.com/oracle/opengrok/wiki/Tuning-for-large-code-bases)
一个客户端浏览器。IE浏览器,火狐浏览器,谷歌浏览器,Safari浏览器。这不是废话嘛.......
安装JAVA运行环境
OpenGrok 是基于 JAVA 的, 因此我们首先需要 JDK 和 JRE 来支持其运行
新版本的opengrok需要jdk8了
Latest Java 1.8
安装Web服务器-Tomcat
#Ubuntu14.04 的源中已经提供了Tomcat 7 的包
sudo apt-get install tomcat7
# 如果是16.04 可以安装tomcat8了。
安装OopenGrok
从https://github.com/OpenGrok/OpenGrok/releases 下载最新的安装包,注意下载的是二进制包
而不是源码包。解压放到固定位置上。
例如 安装到 /opengrok 目录下面. 类似于opengrok的home目录了.
首选新建几个目录
mkdir /opengrok/{src,data,dist,etc,log} # The indexer will need to write to /opengrok/{data,log} and the web application will need to be able to read from /opengrok/{src,etc,data}
解压安装包
tar -C /opengrok/dist --strip-components=1 -xzf opengrok-X.Y.Z.tar.gz
配置logger文件
cp /opengrok/dist/doc/logging.properties /opengrok/etc
下载android代码
cd /opengrok/src
git clone https://github.com/githubtraining/hellogitworld.git
git clone https://github.com/OpenGrok/OpenGrok
安装indexer相关工具. 采用第二种方式比较好.
第1种方式,
python3 -m pip install opengrok_tools.tar.gz
第2种方式,
cd /opt/opengrok
python3 -m venv opengrok-tools
opengrok-tools/bin/python -m pip install opengrok_tools.tar.gz
部署 source.war 到 tomcat 下面
opengrok-deploy -c /opengrok/etc/configuration.xml \
/opengrok/dist/lib/source.war /var/lib/tomcat8/webapps
例如:
opengrok-deploy -c dat_root/ctags/etc/configuration.xml source.war tomcat/webapps/ctags.war
创建索引
opengrok-indexer \
-J=-Djava.util.logging.config.file=/opengrok/etc/logging.properties \
-a /opengrok/dist/lib/opengrok.jar -- \
-c /usr/local/bin/ctags \
-s /opengrok/src -d /opengrok/data -H -P -S -G \
-W /opengrok/etc/configuration.xml -U http://localhost:8080/source
or
java \
-Djava.util.logging.config.file=/opengrok/etc/logging.properties \
-jar /opengrok/dist/lib/opengrok.jar \
-c /usr/local/bin/ctags \
-s /opengrok/src -d /opengrok/data -H -P -S -G \
-W /opengrok/etc/configuration.xml -U http://localhost:8080/source
例如:
opengrok-indexer \
-J=-Djava.util.logging.config.file=opengrok/doc/logging.properties \
-a opengrok/lib/opengrok.jar -- \
-s src_root/ctags -d dat_root/ctags -H -P -S -G \
-W dat_root/ctags/configuration.xml -U http://localhost:8080/ctags
最后设置 定时 更新代码, 更新索引
# 部署的
cat bin/deploy.sh
#!/bin/bash -x
export OPENGROK_HOME=/home/buildfarm/opengrok
export PATH=$PATH:$OPENGROK_HOME/opengrok-tools/bin
export WORK=/work/buildfarm
export SITE=${1:-"sm8250"}
opengrok-deploy -c $WORK/data_root/$SITE/configuration.xml $WORK/bin/source.war $WORK/web_root/${SITE}.war
sleep 30
n=0
until [ $n -ge 5 ]
do
curl -sSf http://www.opengrok.com/$SITE && break # substitute your command here
n=$[$n+1]
sleep 15
done
# 新建索引
buildfarm@xref:/work/buildfarm$ cat bin/indexer.sh
#!/bin/bash -x
export OPENGROK_HOME=/home/buildfarm/opengrok
export PATH=$PATH:$OPENGROK_HOME/opengrok-tools/bin
export WORK=/work/buildfarm
export SITE=${1:-"sm8250"}
opengrok-indexer \
-J=-Xmx16g -J=-server -J=-Djava.util.logging.config.file=$OPENGROK_HOME/etc/logging.properties \
-a $OPENGROK_HOME/dist/opengrok-1.3.11/lib/opengrok.jar -- \
-s $WORK/src_root/${SITE} -d $WORK/data_root/${SITE} -H -P -S -G \
-W $WORK/data_root/${SITE}/configuration.xml -U http://www.opengrok.com/${SITE}
先 虚拟机上安装系统, 按照上面的把 工具解压好
备份整个系统, 然后使用docker import 导入.
tar -cvpzf backup.tar.gz --exclude=/backup.tar.gz --exclude=/proc --exclude=/tmp --exclude=/mnt --exclude=/dev --exclude=/sys --exclude=/run --exclude=/media --exclude=/var/log --exclude=/var/cache/apt/archives --exclude=/usr/src/linux-headers* --exclude=/home/*/.gvfs --exclude=/home/*/.cache --exclude=/home/*/.local/share/Trash
导入到docker
以下是需要修改源码,然后编译的。加上我们自己的ldap登录的功能的。
主要就是加上一个login的过滤器,通过过滤器来实现权限的认证。
这个LoginFilter过滤器要放到其他过滤器前面。他本来默认有个AuthorizationFilterd 过滤器,
感觉也是做权限的。但是看过代码并不是我们想要的ldap登录的一个功能。
以上是loginServelt的代码,里面有配置公司的ldap ip,然后通过输入过来的账号密码来判断是否登录成功了。
登录成功就把用户名放到sesson中。
优化的地方 可以把 String ldapURL = “LDAP://ip:port”;//ip:port 配置到 web.xml 中。
优化的地方 可以把 String searchBase = “OU=公司群组名,OU=公司群组名,DC=公司域名,DC=com”; 配置到 web.xml 中。