OpenGrok代码检索服务器搭建

有时候代码开源网站无法访问或者访问很慢,这个时候如果本地能搭建这么一个代码服务就能解决这个问题了,本文就主要介绍一个搭建本地OpenGrok代码检索服务器方法。

1.软件准备

Java:jdk1.8.0_181

Tomcat:apache-tomcat-8.5.32

OpenGrok:opengrok-1.1-rc3

ctags:ctags-5.8

相关软件:https://pan.baidu.com/s/17keDbXOSlGzbWaXPn9nf8w  或者百度搜索相关软件即可


2.软件安装

将所需软件解压解压后路径如下:

username@ubuntu:~/bin$ pwd

/home/username/bin

username@ubuntu:~/bin$ ll

total 40

drwxr-xr-x 6 username ubuntu 4096 8月 16 10:40 ./

drwxr-xr-x 13 username ubuntu 4096 8月 16 14:38 ../

drwxr-xr-x 9 username ubuntu 4096 8月 14 20:43 apache-tomcat-8.5.32/

drwxr-xr-x 7 username ubuntu 4096 8月 14 20:44 jdk1.8.0_181/

drwxr-xr-x 8 username ubuntu 4096 8月 16 10:48 opengrok-1.1-rc3/


3.配置环境变量

#JAVA

export JAVA_HOME=/home/username/bin/jdk1.8.0_181

export JRE_HOME=$JAVA_HOME/jre

export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH

export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH


# OPENGROK

export OPENGROK_INSTANCE_BASE=/home/username/bin/opengrok-1.1-rc3

export SCRIPT_DIRECTORY=$OPENGROK_INSTANCE_BASE/bin

export OPENGROK_DISTRIBUTION_BASE=$OPENGROK_INSTANCE_BASE/lib



# source code root

export SRC_ROOT=$OPENGROK_INSTANCE_BASE/database/src

# generated data root

export DATA_ROOT=$OPENGROK_INSTANCE_BASE/database/data


#CTAG

EXUB_CTAGS=/usr/local/bin/ctags

#TOMCAT

export OPENGROK_APP_SERVER=Tomcat

export OPENGROK_TOMCAT_BASE=/home/username/bin/apache-tomcat-8.5.32/

export OPENGROK_WAR_TARGET_TOMCAT=$OPENGROK_TOMCAT_BASE/webapps

export OPENGROK_WAR_TARGET=$OPENGROK_TOMCAT_BASE/webapps

export CATALINA_HOME=$OPENGROK_TOMCAT_BASE

可将上述环境写到一个脚本中如:setEnv.sh

在shell窗口执行以下命令即可:

source setEnv.sh


4.启动Tomcat

username@ubuntu:~/bin/apache-tomcat-8.5.32/bin$ cd /home/username/bin/apache-tomcat-8.5.32/bin

username@ubuntu:~/bin/apache-tomcat-8.5.32/bin$ ./startup.sh

Using CATALINA_BASE: /home/username/bin/apache-tomcat-8.5.32

Using CATALINA_HOME: /home/username/bin/apache-tomcat-8.5.32

Using CATALINA_TMPDIR: /home/username/bin/apache-tomcat-8.5.32/temp

Using JRE_HOME: /home/username/bin/jdk1.8.0_181/jre

Using CLASSPATH: /home/username/bin/apache-tomcat-8.5.32/bin/bootstrap.jar:/home/username/bin/apache-tomcat-8.5.32/bin/tomcat-juli.jar

Tomcat started.

启动后:

http://localhost:8080  

能访问到如下界面表示tomcat启动正常.

tomcat启动正常

5.发布opengork

实际上将对于的war包拷贝到tomcat发布目录。

war包目录:/home/username/bin/opengrok-1.1-rc3/lib/source.war

username@ubuntu:~/bin/opengrok-1.1-rc3/lib$ pwd

/home/username/bin/opengrok-1.1-rc3/lib

username@ubuntu:~/bin/opengrok-1.1-rc3/lib$ ll

total 10556

drwxr-xr-x 3 username ubuntu 4096 8月 16 10:40 ./

drwxr-xr-x 8 username ubuntu 4096 8月 16 10:48 ../

drwxr-xr-x 2 username ubuntu 4096 8月 16 10:40 lib/

-rw-r--r-- 1 username ubuntu 2128721 8月 16 10:40 opengrok.jar

-rw-r--r-- 1 username ubuntu 8663178 8月 16 10:40 source.war

执行拷贝命令:

cp -rf /home/username/bin/opengrok-1.1-rc3/lib/source.war /home/username/bin/apache-tomcat-8.5.32/webapps/


6.建立代码索引

username@ubuntu:~/bin/opengrok-1.1-rc3/bin$ pwd

/home/username/bin/opengrok-1.1-rc3/bin

username@ubuntu:~/bin/opengrok-1.1-rc3/bin$ ./OpenGrok index /home/username/code_path

建立索引时间可能比较长,这个与代码量有关,总之耐心等待。

代码索引建立后会

在$OPENGROK_INSTANCE_BASE目录下data下生产索引文件:(也可能在/var/opengrok/data下)

username@ubuntu:~/bin/opengrok-1.1-rc3/data$ ll

total 24

drwxr-xr-x 5 username ubuntu 4096 8月 16 14:39 ./

drwxr-xr-x 8 username ubuntu 4096 8月 16 10:48 ../

drwxr-xr-x 34 username ubuntu 4096 8月 16 10:50 historycache/

drwxr-xr-x 34 username ubuntu 4096 8月 16 11:00 index/

-rw-r----- 1 username ubuntu 2 8月 16 15:12 statistics.json

-rw-r--r-- 1 username ubuntu 0 8月 16 12:35 timestamp

drwxr-xr-x 34 username ubuntu 4096 8月 16 11:00 xref/

在$OPENGROK_INSTANCE_BASE目录的etc下生产配置文件:configuration.xml (也可能在/var/opengrok/etc下)

username @sykean:~/bin/opengrok-1.1-rc3/etc$ ll

total 120

drwxr-xr-x 2 username ubuntu 4096 8月 16 10:48 ./

drwxr-xr-x 8 username ubuntu 4096 8月 16 10:48 ../

-rw-r--r-- 1 username ubuntu 111620 8月 16 10:48 configuration.xml


7.配置CONFIGURATION

在Tomcat服务中配置CONFIGURATION。

/home/username/bin/apache-tomcat-8.5.32/webapps/source/WEB-INF/web.xml 中配置CONFIGURATION:

OpenGrok

A wicked fast source browser

Full path to the configuration file where OpenGrok can read its configuration

CONFIGURATION

/home/username/bin/opengrok/etc/configuration.xml

...

备注:配置成第6步中生成文件的对应路径


8.遇到的问题

jdk版本问题,一般把环境变量配好可以避免

权限问题:所有软件解压配置在普通用户下配置执行即可,如本文自始至终使用username这个一般用户,遇到权限问题,适当sudo解决。

软件安装运行依赖的部分软件,安装依赖提示安装即可。


9.升级版功能

代码检索服务器的自动更新功能

思路:编写代码同步脚本及更新索引策略,更新策略可以使用crontab定时执行对应脚本

命令:crontab -e 

在crontab添加如下一行:

59 23 * * 1,2,3,4,5,6 /home/username/bin/syncAndReindex.sh

即每周1,2,3,4,5,6晚23:59执行同步脚本/home/username/bin/syncAndReindex.sh。

crontab定时执行对应脚本:

username@Ubuntu:/var/opengrok/log$ crontab -e

# Edit this file to introduce tasks to be run by cron.

#

# Each task to run has to be defined through a single line

# indicating with different fields when the task will be run

# and what command to run for the task

#

# To define the time you can provide concrete values for

# minute (m), hour (h), day of month (dom), month (mon),

# and day of week (dow) or use '*' in these fields (for 'any').#

# Notice that tasks will be started based on the cron's system

# daemon's notion of time and timezones.

#

# Output of the crontab jobs (including errors) is sent through

# email to the user the crontab file belongs to (unless redirected).

#

# For example, you can run a backup of all your user accounts

# at 5 a.m every week with:

# 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/

#

# For more information see the manual pages of crontab(5) and cron(8)

#

# m h dom mon dow command

59 23 * * 1,2,3,4,5,6 /home/username/bin/syncAndReindex.sh


/home/username/bin/syncAndReindex.sh的事情主要是两件:

#sync code

echo "sync code ..."

echo "cd /home/username/code"

cd /home/username/code

repo sync -c ;


#Reindex

#echo "remove index ... rm -rf /home/username/bin/opengrok-1.1-rc3/data"

#echo pwd| sudo -S rm -rf /home/username/bin/opengrok-1.1-rc3/data;

#echo "remove index ... rm -rf /var/opengrok/data"

#echo pwd| sudo -S rm -rf /var/opengrok/data 不建议删除该路径下的,网上说会导致编译 错误:... Unsupported major.minor version 52.0,这个目录存在与否与这个错误没有半毛钱关系!!!! 这个编译错误与jdk版本错乱有关,正确配置jdk及载入环境编译可避免此问题,另外删除此目录影响reindex时间。

#如下chown 的作用是将/var/opengrok/改到用户username 防止执行建立索引是对该目录没有权限,正常情况是应该保证该目录存在,可先mkdir,可以采取sudo利用管道填充pwd方式,实际中pwd需要替换成用户username的登录密码。

echo pwd| sudo -S mkdir -R /var/opengrok/;

echo pwd| sudo -S chown -R username /var/opengrok/;

#create index

echo "create index ..."

echo "cd /home/username/bin/opengrok-1.1-rc3/bin "

cd /home/username/bin/opengrok-1.1-rc3/bin;

./OpenGrok index /home/username/code/;

echo "Done!"

你可能感兴趣的:(OpenGrok代码检索服务器搭建)