美文网首页
OpenGrok代码检索服务器搭建

OpenGrok代码检索服务器搭建

作者: 此处有熊 | 来源:发表于2019-10-18 00:01 被阅读0次

有时候代码开源网站无法访问或者访问很慢,这个时候如果本地能搭建这么一个代码服务就能解决这个问题了,本文就主要介绍一个搭建本地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:

<?xml version="1.0" encoding="UTF-8"?>

<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

<display-name>OpenGrok</display-name>

<description>A wicked fast source browser</description>

<context-param>

<description>Full path to the configuration file where OpenGrok can read its configuration</description>

<param-name>CONFIGURATION</param-name>

<param-value>/home/username/bin/opengrok/etc/configuration.xml</param-value>

</context-param>

...

备注:配置成第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代码检索服务器搭建

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

  • 代码阅读工具opengrok

    代码阅读工具opengrok

  • 2021-09-08 opengrok比lxr先进

    在同样的Ubuntu服务器上,OpenGrok的效率比LXR要高很多。扫描整个Android AOSP代码,LXR...

  • opengrok搭建

    opengrok是看代码的利器,主页为 https://github.com/oracle/opengrok 下载...

  • opengrok的鉴权插件开发指南

    opengrok的鉴权插件开发指南 opengrok是被广泛应用的源代码浏览系统。对于开源代码,不需要考虑鉴权的问...

  • OpenGrok环境搭建

    OpenGrok介绍 OpenGrok为一个方便快速的源码搜索及交叉引用查询引擎。它以Java编写,可用于源码搜索...

  • OpenGrok搭建笔记

    环境要求 JAVA1.8+TOMCAT 8+Python3 安装python3 指导教程 下载OpenGrok O...

  • Vue3+TS Day09 - webpack-dev-serv

    一、webpack 搭建本地服务器 1、为什么 webpack 要搭建本地服务器? 目前我们开发代码,为了运行需要...

  • webpack 搭建开发环境

    搭建开发环境 为什么搭建开发环境呢?html,css,js等代码,运行在web服务器上。搭建一个本地服务器上,让其...

  • elasticsearch报错解决办法:NoNodeAvaila

    ES搭建完成后,使用localhost 和127.0.0.1都能正常访问和检索数据,但是使用服务器本机IP确报错。...

网友评论

      本文标题:OpenGrok代码检索服务器搭建

      本文链接:https://www.haomeiwen.com/subject/squbmctx.html