Android下的配置管理之道之OpenGrok代码索引环境搭建

1 OpenGrok介绍

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

2 安装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}

部署opengrok index的docker环境

先 虚拟机上安装系统, 按照上面的把 工具解压好


备份整个系统, 然后使用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

配置Opengrok 使用ldap登录

以下是需要修改源码,然后编译的。加上我们自己的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 中。

你可能感兴趣的:(android下的配置管理之道)