[Linux] opengrok部署
1. 前言
本文详细介绍如何在ubuntu 20.04.6上部署opengrok,系统环境如下:
操作系统: ubuntu 20.04.6
opengrok版本: 1.13.1
tomcat版本: 10.1.18
uctags版本: 6.1.0
2. 准备
2.1. 配置java环境
opengrok和tomcat是一个基于java的应用,需要安装jre和jdk。opengrok 1.13.1要求java版本大于11。
apt install openjdk-11-jdk openjdk-11-jre
2.2. 下载opengrok
https://github.com/OpenGrok/OpenGrok/releases
如果访问github官网慢或者加载不出来,参考https://greasyfork.org自行解决。
2.3. 下载tomcat
https://tomcat.apache.org/
tomcat官网提供了已经编译好的可执行程序和源码,建议直接下载编译好的。编译好的分类中又包含core Full documentation Deployer Embedded,直接从core分类中下载对应系统坂本即可。
2.4. 下载uctags
https://github.com/universal-ctags
ctgas github官网提供了2种仓库:universal-ctags和ctags-nightly-build,其中universal-ctags是ctags源码,ctags-nightly-build是ctags以编译好的。为了部署方便,建议下载ctags-nightly-build。
3. 部署
3.1. 构建opengrok目录
mkdir /opengrok/{src,data,dist,etc,log}
3.2. 解压opengrok到dist目录
tar -C /opengrok/dist --strip-components=1 -xzf opengrok-1.13.1.tar.gz
3.3. 配置opengrok log
3.3.1. 拷贝log配置文件
cp /opengrok/dist/doc/logging.properties /opengrok/etc
3.3.2. 修改log配置
java.util.logging.FileHandler.pattern = /opengrok/log/opengrok%g.%u.log
3.4. 配置web application
3.4.1. 拷贝opengrok war文件到tomcat目录下
cp /opengrok/dist/lib/source.war /apache-tomcat-10.1.18/webapps/opengrok.war
3.4.2. 启动tomcat
cd /apache-tomcat-10.1.18/bin
./startup.sh
当启动tomcat时,tomcat会自动检测war文件,然后解压war文件,并运行解压后war文件中的web文件。客户端可以通过http://localhost:8080/opengrok访问。
3.4.3. 修改web文件
tomcat会从apache-tomcat/webapps/opengrok/WEB-INF/web.xml文件中解析CONFIGURATION参数的值,该参数的值是opengrok的configuration.xml文件路径。configuration.xml文件是下面创建索引过程创建的。默认情况下是/opengrok/etc/configuration.xml,需要根据实际情况修改。
<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>/opengrok/etc/configuration.xml</param-value>
</context-param>
<listener>
<listener-class>org.opengrok.web.WebappListener</listener-class>
</listener>
3.5. 配置indexer
3.5.1. 添加代码到src目录中
添加代码有很多方式,可以直接解压源码压缩包,也可以使用git拉取,本案例中使用git方式。
git clone https://github.com/OpenGrok/OpenGrok
3.5.2. 创建索引
java \
-Djava.util.logging.config.file=/opengrok/etc/logging.properties \
-jar /opengrok/dist/lib/opengrok.jar \
-c /uctags-2024.01.24-linux-x86_64/bin/ctags \
-s /opengrok/src \
-d /opengrok/data -H -P -S -G \
-W /opengrok/etc/configuration.xml \
-U http://localhost:8080/opengrok
/uctags-2024.01.24-linux-x86_64/bin/ctags是ctags路径,http://localhost:8080/opengrok是tomcat应用服务地址。创建索引的过程时间可能比较久,和添加代码的量有关。
如果只想对指定的子目录创建索引,可以在命令最后直接添加子目录的相对路径。
java \
-Djava.util.logging.config.file=/opengrok/etc/logging.properties \
-jar /opengrok/dist/lib/opengrok.jar \
-c /uctags-2024.01.24-linux-x86_64/bin/ctags \
-s /opengrok/src \
-d /opengrok/data -P -S \
-W /opengrok/etc/configuration.xml \
-U http://localhost:8080/opengrok
OpenGrok
测试发现,虽然可以针对子目录创建index,但是最后在修改configuration.xml文件时,会将已经存在的project的属性indexed删除掉,需要自己手动为每一个project添加indexed。
<void property="indexed">
<boolean>true</boolean>
</void>
为了加快创建索引,可以做进一步修改,关闭识别git等选项。
java \
-Djava.util.logging.config.file=/opengrok/etc/logging.properties \
-jar /opengrok/dist/lib/opengrok.jar \
-c /opengrok/uctags-2024.01.24-linux-x86_64/bin/ctags \
-s /opengrok/src \
-d /opengrok/data -P -S \
-W /opengrok/etc/configuration.xml \
-U http://localhost:8080/opengrok \
--disableRepository git \
--connectTimeout 3 \
--progress
OpenGrok
如果想要再添加源码或者删除源码时,只需要再次执行上面创建索引的命令即可,它会自动从/opengrok/etc/configuration.xml中添加或者删除相关源码信息。
成功部署后,再次访问http://localhost:8080/opengrok便可以显示出opengrok界面。
4. 参考资料
更多推荐


所有评论(0)