Linux上OpenGrok的搭建过程

OpenGrok(官网)是一个开源的源代码搜索引擎,免费、高效、功能强大,与sourceinsight相比毫不逊色。具体优点网上介绍的很多了,请自行搜索。
下面是我在自己CentOS7.3服务器上搭建OpenGrok服务的过程,欢迎访问我的网站进行使用,当前上面只部署了linux内核源码。

JDK
CentOS7.x环境上执行如下命令安装jdk:

yum install java-1.8.0-openjdk
其它linux发行版参考链接进行安装。
注意:请确保安装的jdk版本为1.8.0及以上版本。

Tomcat
软件包准备
从Tomcat官网下载8.0及以上版本的tomcat二进制包。
比如,在我的环境下,使用wget命令下载tomcat8.5版本的包:

wget http://mirrors.shu.edu.cn/apache/tomcat/tomcat-8/v8.5.31/bin/apache-tomcat-8.5.31.tar.gz
将上述下载的tomcat压缩包解压至/home目录(该目录可按自己喜好定义)下,命令如下:

解压tar包至/home目录

tar -xvzf apache-tomcat-8.5.31.tar -C /home

更名

mv apache-tomcat-8.5.31 tomcat8.5
配置Tomcat服务
新建systemd服务文件/usr/lib/systemd/system/tomcat.service,文件内容如下:

[Unit]
Description=Tomcat
After=syslog.target network.target remote-fs.target nss-lookup.target

[Service]
Type=forking
ExecStart=/home/tomcat8.5/bin/startup.sh
ExecStop=/home/tomcat8.5/bin/shutdown.sh
PrivateTmp=true

[Install]
WantedBy=multi-user.target
启用tomcat服务:

systemctl enable tomcat –now
至此,tomcat服务已经启动,并且可以随机启动,如不需要随机启动,请执行命令systemctl diable tomcat。

注意:

该服务不支持restart操作,如有需求请自行实现restart脚本,然后在服务文件中添加ExecReload项。
上述配置服务的方式适用于redhat系列发行版7.x及以上版本的系统,其它发行版请自行参考各发行版手册进行配置。
Universal Ctags
从Universal Ctags官方仓库下载软件包,然后在该软件目录里执行如下命令即可:

./autogen.sh
make
make install
OpenGrok
软件包配置
从OpenGrok官网下载OpenGrok的tar包。
在我的环境下,使用wget命令下载软件包命令如下:

wget https://github.com/oracle/opengrok/releases/download/1.1-rc28/opengrok-1.1-rc28.tar.gz
将上述下载的opengrok压缩包解压至/home目录(该目录可按自己喜好定义)下,命令如下:

解压tar包至/home目录

tar -xvzf opengrok-1.1-rc28.tar.gz -C /home

更名

mv opengrok-1.1-rc28.tar.gz opengrok

新建源码存放目录(路径按个人喜好定义)

mkdir /home/opengrok/source

新建索引数据文件存放目录(路径按个人喜好定义)

mkdir /home/opengrok/data
配置环境变量
使用OpenGrok需要配置至少以下三个环境变量:

OPENGROK_SRC_ROOT
OPENGROK_DATA_ROOT
OPENGROK_TOMCAT_BASE
OPENGROK_SRC_ROOT
该环境变量用于指定使用OpenGrok查看的源代码存放的目录,在软件包配置一节里我们已经指定了源码存放目录文件为/home/opengrok/source,那么该项环境变量配置如下:

echo “export OPENGROK_SRC_ROOT=/home/opengrok/source” >> /etc/profile
source /etc/profile
OPENGROK_DATA_ROOT
该环境变量用于指定OpenGrok生成的的代码索引文件存放目录,在软件包配置一节里我们已经指定了源码存放目录文件为/home/opengrok/source,那么该项环境变量配置如下:

echo “export OPENGROK_SRC_ROOT=/home/opengrok/data” >> /etc/profile
source /etc/profile
OPENGROK_TOMCAT_BASE
该环境变量用于指定Tomcat安装路径,在上述Tomcat一节中我们已经指定了Tomcat安装目录为/home/tomcat8.5,那么该项环境变量配置如下:

echo “export OPENGROK_TOMCAT_BASE=/home/tomcat8.5” >> /etc/profile
source /etc/profile
部署OpenGrok
执行如下命令将OpenGrok部署到Tomcat中:

切换目录到OpenGrok中

cd /home/opengrok

执行部署命令

./bin/OpenGrok deploy
此时即可通过http://localhost:8080/source查看到OpenGrok的欢迎界面了。

建立索引
建立索引前先将源代码库软链接到我们的source目录下,比如我的linux内核源码放在/home/github/linux下,那么我们现将该代码库目录软链接到OpenGrok的source目录下:

ln -s /home/githun/linux /home/opengrok/source
如果还有其它源码库,那么就按如上方式将源代码库软链接到OpenGrok的source目录下。当然,你把源代码直接放在OpenGrok的source目录下也行,这样就不需要建软链接了。
接下来执行命令/home/opengrok/bin/OpenGrok index建立索引就行了,该命令执行时间还蛮久的,慢慢等它完成吧,或者去喝杯咖啡(要优雅→_→)

其它配置(可选)
通过以上配置,我们已经可以通过http://localhost:8080/source进行代码检索了,但是我们可以注意到链接http://localhost:8080仍然显示的是Tomat欢迎界面。现在我们想可以直接通过http://localhost:8080访问到OpenGrok,那么我们可以配置如下:

切换目录至tomcat所在目录

cd /home/tomcat8.5

备份webapps的ROOT目录

mv webapps/ROOT webapps/ROOT.backup

将webapps/SOURCE目录软链接到ROOT

ln -s webapps/SOURCE webapps/ROOT

重启tomcat

systemctl stop tomcat
systemctl start tomcat
绑定域名(可选)
我专门申请了一个二级域名code.cordius.cn,而我的代理服务器使用的nginx,为了将OpenGrok服务绑定到该域名中, 大致思路就是将来自code.cordius.cn的请求转发到本地的8080端口,即转发到tomcat中。
为完成如上思路,打开nginx配置文件/etc/nginx/nginx.conf,在http段中增加如下内容:

http请求重定向到https

server {
listen 80;
server_name code.cordius.cn;
rewrite ^(.*) https:// s e r v e r n a m e 1 permanent;
}

来自code.cordius.cn的https请求转发到localhost的8080端口

server {
listen 443;
server_name code.cordius.cn;

# 启用ssl
ssl     on;
ssl_certificate /home/site_cordius/ssl/cordius.cn/Nginx/1_cordius.cn_bundle.crt;
ssl_certificate_key /home/site_cordius/ssl/cordius.cn/Nginx/2_cordius.cn.key;
ssl_session_timeout 5m;

location / {
    index index.html index.jsp;
    proxy_pass http://localhost:8080;
    proxy_set_header Host $host;
}

}
FAQ
fatal: unknown data format iso8601-strict 错误
该问题是因为使用的git命令版本太低,请安装最新的git。安装方式请参见链接。

OpenGrok网页显示不正常,网页报告错误”The source root specified in your configuration does not point to a valid directory”类似的错误。
这种问题一般是由于未正确配置JAVA_HOME环境变量的原因。一般情况下,使用我上述的步骤搭建OpenGrok环境的时候tomcat和OpenGrok软件都可以自己搜索到正确的路径。但如果按我上述步骤仍然出现错误,那么请配置JAVA_HOME环境变量。

以上就是所有内容,欢迎访问链接(https://code.cordius.cn)。如有错误或者任何配置方面的疑问欢迎留言,或者使用邮件咨询我。

本文作者: Cordius Wu
本文链接: https://cordius.cn/posts/f91cef14/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 3.0 许可协议。转载请注明出处!

2

猜你喜欢

转载自blog.csdn.net/luohuiwu/article/details/82382701