天天看點

OpenGrok源代碼索引系統搭建

OpenGrok源代碼索引系統搭建

系統環境

  • Ubuntu20.04.1 LTS
  • jdk1.8
  • Tomcat9.0.37
  • OpenGrok-0.12.1.5 (stable)

環境安裝與配置

  • 1)java version 1.8
//下載下傳jdk1.8的包
wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8u131-b11/d54c1d3a095b4ff2b6607d096fa80163/jdk-8u131-linux-x64.rpm

//安裝工具
sudo apt install alien

//用alien将rpm轉換成deb包,dpkg安裝
sudo apt install alien
fakeroot alien jdk-8u131-linux-x64.rpm
sudo dpkg -i jdk1.8.0-131_1.8.0131-1_amd64.deb

//在/etc/profile下添加環境變量
vi /etc/profile
export JAVA_HOME=/usr/java/jdk1.8.0_131
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:$CLASSPATH
export JAVA_PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin
export PATH=$PATH:${JAVA_PATH}

//令環境變量生效
source /etc/profile

//此時輸入java -version就可以檢視到jdk資訊了
java version "1.8.0_131"
Java(TM) SE Runtime Environment (build 1.8.0_131-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)
           
  • 2)Tomcat 9
//首先下載下傳壓縮包
wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie" http://ftp.mirror.tw/pub/apache/tomcat/tomcat-9/v9.0.37/bin/apache-tomcat-9.0.37.tar.gz

//解壓到/usr/tomcat路徑下
sudo mkdir /usr/tomcat
sudo tar -zxvf apache-tomcat-9.0.37.tar.gz -C /usr/tomcat/
cd /usr/tomcat/apache-tomcat-9.0.37/
chmod 777 * -R

//将weapps目錄下的檔案全部清空
cd /usr/tomcat/apache-tomcat-9.0.37/webapps/
sudo rm -rf *
           
  • 3)Exuberant Ctags工具
//安裝ctags工具
sudo apt-get install exuberant-ctags
           

搭建Opengrok

  • 1)下載下傳Opengrok包
//下載下傳壓縮包
wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie" https://github.com/OpenGrok/OpenGrok/files/213268/opengrok-0.12.1.5.tar.gz
           
  • 2)解壓并建立索引目錄和源代碼存放目錄
//-C 後面跟着的是解壓到的目标路徑,這裡一個“/”代表根目錄
sudo tar -zxvf opengrok-0.12.1.5.tar.gz -C /
//src用于存放源代碼 
sudo mkdir /opengrok-0.12.1.5/src
//data用于存放索引檔案
sudo mkdir /opengrok-0.12.1.5/data
           
  • 3)修改OpenGrok的配置檔案
vi /opengrok-0.12.1.5/bin/OpenGrok
// 找到以下3個地方分别作修改
//修改opengrok的安裝路徑
OPENGROK_INSTANCE_BASE="${OPENGROK_INSTANCE_BASE:-/opengrok-0.12.1.5}"

//增加tomcat/webapps的路徑
    if [    -d "/var/tomcat6/webapps"        \
         -o -d "/var/lib/tomcat6/webapps"    \
         -o -d "/var/lib/tomcat7/webapps"    \
         -o -d "/var/lib/tomcat8/webapps"    \
         -o -d "/usr/tomcat/apache-tomcat-9.0.37/webapps"    \
       ]
    then
        echo "Tomcat"
        return
//增加tomcat的路徑
    for prefix in               \
        ${OPENGROK_TOMCAT_BASE} \
        /var/tomcat6            \
        /var/lib/tomcat6        \
        /var/lib/tomcat7	 \
        /usr/tomcat/apache-tomcat-9.0.37
           
  • 4)使用指令生成索引
//使用下面的指令會識别opengrok/src下的目錄倉庫,并在/opengrok-0.12.1.5/etc/下生成一個configuration.xml檔案
/opengrok-0.12.1.5/bin/OpenGrok index
           
  • 5)将opengrok資源檔案部署到tomcat上
//使用下面的指令會将/opengrok-0.12.1.5/lib/source.war檔案拷貝到/usr/tomcat/webapps目錄下。
//tomcat會自動解壓war檔案并自動修改web.xml檔案,但是實測好像并沒有修改,手動修改方法見下
/opengrok-0.12.1.5/bin/OpenGrok deploy

//手動修改tomcat中webapps/source/WEN-INF下的web.xml檔案
//這裡僅修改param-value屬性值,使之指向上一步生成的configuration.xml檔案路徑
vi /usr/tomcat/apache-tomcat-9.0.37/webapps/source/WEN-INF/web.xml

  <display-name>OpenGrok</display-name>
  <description>A wicked fast source browser</description>
  <context-param>
    <param-name>CONFIGURATION</param-name>
    <param-value>/opengrok-0.12.1.5/etc/configuration.xml</param-value>
    <description>Full path to the configuration file where OpenGrok can read it's configuration</description>
  </context-param>
           
  • 6)開啟Tomcat服務,在浏覽器中輸入http://localhost:8080/source/ 就可以愉快的使用系統啦。
//開啟服務
cd usr/tomcat/apache-tomcat-9.0.37/bin
./startup.sh
//如果要關閉服務
./shutdown.sh
           

Some Tips

  • 1)端口号可以在/usr/tomcat/apache-tomcat-9.0.37/conf/server.xml中修改,因為Linux的保護機制,如果是1024以下的端口需要root權限才能開啟
<Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
           
  • 2)可以将source檔案名修改成你想要的名字,但是要注意在deploy後要删除webapps下的war檔案,因為如果修改檔案名後,tomcat會重新解壓一份名為source的網站資源檔案。
  • 3)中間如果有走不通的地方多半是因為權限問題,要麼在指令前加sudo,要麼進入要對其操作的檔案的檔案目錄,修改權限
chmod 777  * -R  
           
  • 4)源代碼管理

    Android源碼巨大,要将其拷貝到src目錄下極為不友善,也不利于後續的管理維護。可以利用軟連結的方式解決這個問題。

cd /opengrok-12.0.1.5/
ln -s [項目源碼絕對路徑] src/
           

-5)在每次需要添加或删除或修改項目時,需要重新生成一次索引檔案。但是如果是在項目内部進行開發修改代碼則不需要。

/opengrok-0.12.1.5/bin/OpenGrok update

//也可以為每個項目單獨更新索引
/opengrok-0.12.1.5/bin/OpenGrok indexpart /opengrok-0.12.1.5/src/projectname 
           

以下為效果圖:

OpenGrok源代碼索引系統搭建
OpenGrok源代碼索引系統搭建