opengrok搭建与配置

news2025/4/13 1:59:27

前提条件

需要配置好docker与docker-compose环境

1.代码准备

mkdir -p /data/opengrok/{etc,src,data}

cd /data/opengrok/src/

# 克隆一个测试项目

git clone https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git

2.创建docker-compose.yml文件(其中最后的cpus与mem_limit请根据实际情况进行高整)

version: "3"

services:

  opengrok:

    container_name: opengrok

    image: opengrok/docker:latest

  

  ports:

      - "8090:8080/tcp"

    environment:

      #SYNC_PERIOD_MINUTES: '1440'

      JAVA_OPTS: "-Xms4g -Xmx64g -Duser.timezone=Asia/Shanghai"

      TZ: "Asia/Shanghai"

    volumes:

       - '/data/opengrok/src/:/opengrok/src'      # source code

       - '/data/opengrok/etc/:/opengrok/etc/'     # folder contains configuration.xml

       - '/data/opengrok/data/:/opengrok/data/'   # index and other things for source code

    cpus: '64.0'

    mem_limit: 96G

2. 下载并运行docker image

sudo docker compose up -d

3. 检查端口在防火墙中是否被禁用

root@PVT-SR588:~# sudo lsof -i:8090

COMMAND      PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME

docker-pr 346229 root    7u  IPv4 889519      0t0  TCP *:8090 (LISTEN)

docker-pr 346236 root    7u  IPv6 889520      0t0  TCP *:8090 (LISTEN)

root@PVT-SR588:~#

# 上面是正常的情况,如果被禁用了,可以改为允许访问

sudo ufw allow 8090/tcp

4. 至此,已经可以在其他主机上通过浏览器访问 http://host-ip-addr:8090/ 了,如果出现访问异常,可以查看docker启动log

sudo docker-compose logs

5. 进入容器中配置更新代码的权限,并尝试进行git pull,看能否成功

docker exec -it opengrok bash

cd /opengrok/src/MT8678_yocto/custom

git pull

6. 在容器中安装相关工具包

6.1. repo安装参考:repo安装配置
6.2. 生成公钥并添加到对应的gerrit帐号中
6.3. 设置全局配置 git config --global --add safe.directory * 确保可以正确同步代码
6.4. 修改时区(使用tzselect,并在docker-compose.yml中定义)

7. 更新索引

# 指定MT8676项目更新

JAVA_OPTS="-Xms4g -Xmx64g" /venv/bin/python3 /venv/bin/opengrok-reindex-project --printoutput --api_timeout 8 --jar /opengrok/lib/opengrok.jar -U http://localhost:8080/ -P MT8676 -- --connectTimeout 8 -r dirbased -G -m 256 --leadingWildCards on -T 4 -c /usr/local/bin/ctags -U http://localhost:8080/ -H MT8676

# 定时更新全部索引

# 检查容器中cron是否启动

service cron status

# 重新启动cron服务(时区修改后要重启cron)

service cron start

# 增加定时任务(在终端输入crontab -e进行)

0 1 * * *  /opengrok/update_index.sh

/opengrok/update_index.sh内容如下:

#!/bin/bash

# 设置环境变量

export PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/opt/java/openjdk/bin

export JAVA_OPTS="-Xms4g -Xmx64g"

# 脚本内容

code_dir="/opengrok/src"

for in $(ls $code_dir ); do

    /venv/bin/python3 /venv/bin/opengrok-reindex-project \

        --printoutput \

        --api_timeout 8 \

        --jar /opengrok/lib/opengrok.jar \

        -U http://localhost:8080/ \

        -P $i \

        -- --connectTimeout 8 \

        -r dirbased \

        -G \

        -m 256 \

        --leadingWildCards on \

        -T 16 \

        -c /usr/local/bin/ctags \

        -U http://localhost:8080/ \

        -H $i

done

报错:

  1. repo sync后的项目在切换并跟踪一个远程分支(要多执行几次,有些会没切换成功)
  2. 如在MT8678_yocto/custom目录下执行git pull时报 git config --global --add safe.directory /opengrok/src/MT8678_yocto/custom,则说明权限设置不符合 Git 的默认安全规则,可执行  git config --global --add safe.directory "*"  来进行全局配置
  3. MT8678_yocto/meta/meta_kde和MT8678_yocto/meta/meta_kde也要切换并跟踪一个远程分支
  4. 如新增项目后要先重启容器注册项目再更新索引

参考文档:

opengrok/docker - Docker 镜像 | Docker Hub --- opengrok/docker - Docker Image | Docker Hub

在ubuntu 22.04 上通过 Docker部署OpenGrok-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2333494.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

老硬件也能运行的Win11 IoT LTSC (OEM)物联网版

#记录工作 Windows 11 IoT Enterprise LTSC 2024 属于物联网相关的版本。 Windows 11 IoT Enterprise 是为物联网设备和场景设计的操作系统版本。它通常针对特定的工业控制、智能设备等物联网应用进行了优化和定制,以满足这些领域对稳定性、安全性和长期支持的需求…

Git开发

目录 Linux下Git安装Git基本指令分支管理远程仓库与本地仓库标签管理多人协作同一分支下不同分支下 企业级开发模型 -- git flow 模型 在现实中,当我们完成一个文档的初稿后,后面可能还需要对初稿进行反复修改,从而形成不同版本的文档。显然&…

verilog有符号数的乘法

无符号整数的乘法 1、单周期乘法器( 无符号整数 ) 对于低速要求的乘法器,可以简单的使用 * 实现。 module Mult(input wire [7:0] multiplicand ,input wire [7:0] multipliter ,output wire [7:0] product);as…

DevDocs:抓取并整理技术文档的MCP服务

GitHub:https://github.com/cyberagiinc/DevDocs 更多AI开源软件:发现分享好用的AI工具、AI开源软件、AI模型、AI变现 - 小众AI DevDocs 是一个完全免费的开源工具,由 CyberAGI 团队开发,托管在 GitHub 上。它专为程序员和软件开发…

第十四届蓝桥杯大赛软件赛国赛Python大学B组题解

文章目录 弹珠堆放划分偶串交易账本背包问题翻转最大阶梯最长回文前后缀贸易航线困局 弹珠堆放 递推式 a i a i − 1 i a_ia_{i-1}i ai​ai−1​i, n 20230610 n20230610 n20230610非常小,直接模拟 答案等于 494 494 494 划分 因为总和为 1 e 6 1e6…

折叠屏手机:技术进步了,柔性OLED面板测试技术需求跟上了吗?

全球智能手机市场陷入创新焦虑,折叠屏手机被寄予厚望,2023 年出货量同比增长 62%。但在供应链技术狂欢背后,存在诸多问题。消费端数据显示,用户使用频率低,定价策略反常。产业链重构虽让部分企业获利,却推高…

30天学Java第九天——线程

并行与并发的区别 并行是多核 CPU 上的多任务处理,多个任务在同一时间真正的同时执行并发是单核 CPU 上的多任务处理,多个任务在同一时间段内交替执行,通过时间片轮转实现交替执行,用于解决 IO 密集型任务的瓶颈 线程的创建方式…

自行搭建一个Git仓库托管平台

1.安装Git sudo apt install git 2.Git本地仓库创建(自己选择一个文件夹) git init 这里我在 /home/test 下面初始化了代码仓库 1. 首先在仓库中新建一个txt文件,并输入一些内容 2. 将文件添加到仓库 git add test.txt 执行之后没有任何输…

LeeCode 409.最长回文串

给定一个包含大写字母和小写字母的字符串 s ,返回 通过这些字母构造成的 最长的 回文串 的长度。 在构造过程中,请注意 区分大小写 。比如 "Aa" 不能当做一个回文字符串。 示例 1: 输入:s "abccccdd" 输出:7 解释: 我们可以构造的…

【前端分享】JavaScript异步编程详解!

JavaScript 的异步编程是其核心特性之一,主要用于处理非阻塞操作(如网络请求、文件读写、定时任务等)。由于 JavaScript 是单线程的,异步机制可以避免代码阻塞,提高性能和用户体验。以下是 JavaScript 异步编程的核心概…

工厂模式(简单工厂,工厂方法,抽象工厂)

工厂模式 工厂模式是java中最常用的设计模式,主要是用来完成对象的创建,使得对象创建过程和对象使用过程分离。 简单来说是取消对象创建者和使用者的耦合,简化new 对象的创建。 优势 :对象的属性创建完整。 缺点: 创建…

Axure RP9教程 【数据传输】(页面值传递)| 作用域 :全局变量、局部变量

文章目录 引言作用域:全局变量作用域>局部变量作用域I 基于全局变量实现一个简单的登陆操作设置变量值的交互动作打开链接的交互动作接收并显示变量值注意点see also共享原型引言 全局变量在交互效果作用是页面值传递 作用域:全局变量作用域>局部变量作用域 全局变量…

IBM Rational Software Architect安装感受及使用初体验

1 安装感受 最近准备用UML 2.0绘制模型图。在读UML创始人之一Grady Booch写的书《Object-Oriented Analysis and Design with Applications》(第3版)1时,发现书中用的UML工具之一为IBM Rational Software Architect(RSA&#xff…

VRRP学习

虚拟路由器冗余技术【三层技术】:网关冗余VRRP设计了VRRP组的概念,在一个 VRRP 组中,多台路由器共同构成一个虚拟路由器。这个虚拟路由器拥有一个虚拟 IP 地址【VRRP-ID默认是8位二进制,范围是0~255,用以标识和区别不同…

GPT-5、o3和o4-mini即将到来

原计划有所变更: 关于我们应有何期待的一些零散想法。 深度研究(Deep Research)确实强大但成本高昂且速度较慢(当前使用o3模型)。即将推出的o4-mini在性能上可能与o3相近,但将突破这些限制,让全球用户——甚至免费用户(尽管会有速率限制)——都能用上世界顶级AI研究助…

C#MVC项目引用Swagger的详细步骤

目录 一、安装Swagger依赖包二、配置Swagger服务三、启用XML注释四、调整启动配置五、验证与访问常见问题解决 以下是基于ASP.NET Core项目集成Swagger的详细步骤(已适配当前项目结构): 一、安装Swagger依赖包 通过NuGet安装 右键点击项目…

golang 对象池sync.Pool

Golang中的sync.Pool是什么? sync.Pool 是 Go 标准库中提供的一个对象池(Object Pool)实现,用于缓存和复用临时对象,以减少内存分配和垃圾回收(GC)的压力。它的主要特点是: 临时对…

聚焦AI与大模型创新,紫光云如何引领云计算行业快速演进?

【全球云观察 | 科技热点关注】 随着近年来AI与大模型的兴起,云计算行业正在发生着一场大变局。 “在2025年春节期间,DeepSeek两周火爆全球,如何进行私域部署成了企业关心的问题。”紫光云公司总裁王燕平强调指出,AI与…

解决前后端时区不一致问题

前后端时区不一致导致: 》数据不显示在前端 》页面显示时间有误 》一些对时间有要求的方法,无法正确执行,出现null值,加上我们对null值有判断/注解,程序就会报错中断,以为是业务逻辑问题,其实…

STL之序列式容器(Vector/Deque/List)

序列式容器 序列式容器包括:静态数组 array 、动态数组 vector 、双端队列 deque 、单链表 forward_ list 、双链表 list 。这五个容器中,我们需要讲解三个 vector 、 deque 、 list 的使 用,包括:初始化、遍历、尾部插入与删除、…