ubuntu16.04下opengrok安裝踩坑之旅
寫在前面
工作需要嘗試在本地搭建一個opengrok服務器,結果遇到了一大堆的問題。雖然網上資料有很多,但是很多細節均沒有講到。
系統環境
- 系統
ubuntu16.04 - 環境軟件
open jdk 1.8以上
安裝步驟
1. 安裝universal-ctags
因爲新版本的OpenGrok對exuberant-ctags的支持不太好,所以官方建議安裝universal-ctags。
universal-ctags的下載地址:
https://github.com/universal-ctags/ctags
具體的命令如下:
sudo apt-get update
# 卸載 exuberant-ctags
sudo apt-get remove --purge exuberant-ctags
# 安裝依賴軟件 autoconf
sudo apt-get install autoconf
mkdir ~/sorf/universal-ctags
cd ~/sorf/universal-ctags
# 下載universal-ctags
git clone https://github.com/universal-ctags/ctags
cd ctags
./autogen.sh
# 我的安裝路徑。就使用這個,後面索引就是這個路徑(~/sorf/universal-ctags/bin)
./configure --prefix=~/sorf/universal-ctags
make -j8
# 安裝(這裏會將軟件安裝到~/sorf/universal-ctags/bin目錄下,這個路徑需要在後面寫入配置文件中)
sudo make install
2. 安裝tomcat8
- 安裝
sudo apt-get install tomcat8
- 啓動服務
sudo /etc/init.d/tomcat8 start
- tomcat常用的三條命令
sudo /etc/init.d/tomcat8 restart
sudo /etc/init.d/tomcat8 start
sudo /etc/init.d/tomcat8 stop
- 測試是否安裝成功
在瀏覽器輸入http://localhost:8080/看到:
3. 下載opengrok
openGrok的下載地址
https://github.com/oracle/opengrok/releases/
下載後綴爲.tar.gz的文件即可,我這裏下載的是1.3.0版本。下載後,將它解壓到你想放置的位置。我將它放在了 ~/soft/OpenGrok/ 下。
官網說要安裝tools下面的opengrok-tools.tar.gz,這個可以不安裝,不是必須的。
解壓後在軟件根目錄新建三個文件夾。
- src 存放代碼(或者是代碼的映射)
- data 存放索引
- etc 存放配置文件
mv ~/soft/OpenGrok/opengrok-1.3.0 ~/soft/OpenGrok/opengrok
cd ~/soft/OpenGrok/opengrok
mkdir src data etc
因爲我的代碼是之前已經下載好的,所以這裏直接建一個軟鏈接將代碼和src目錄關聯起來
cd ~/soft/OpenGrok/opengrok/src
ln -s ~/code/src/ android #(~/code/src/ : 需要鏈接的源碼路徑 android : src下的鏈接 )
複製source.war到tomcat中
# 不需要解壓縮,因爲會自己解壓
sudo cp ~/soft/OpenGrok/opengrok/lib/source.war /var/lib/tomcat8/webapps/
修改 /var/lib/tomcat8/webapps/source/WEB-INF/web.xml 中 configuration.xml 的路徑
gedit /var/lib/tomcat8/webapps/source/WEB-INF/web.xml
<context-param>
<description>Full path to the configuration file where OpenGrok can read its configuration</description>
<param-name>CONFIGURATION</param-name>
<param-value>~/soft/OpenGrok/opengrok/etc/configuration.xml</param-value> //自己創建的etc路徑
</context-param>
4. 創建索引
新建一個openGrok.sh腳本,輸入下面的命令
java \
-Djava.util.logging.config.file=~/soft/OpenGrok/opengrok/doc/logging.properties \
-jar ~/soft/OpenGrok/opengrok/lib/opengrok.jar \
-c ~/sorf/universal-ctags/bin/ctags \
-s ~/soft/OpenGrok/opengrok/src -d ~/soft/OpenGrok/opengrok/data -H -P -S -G \
-W ~/soft/OpenGrok/opengrok/etc/configuration.xml -U http://localhost:8080/source
修改腳本的權限
sudo chmod a+x openGrok.sh
執行腳本
./openGrok.sh
注意事項
- 命令的用法可以通過執行下面的命令,獲取使用幫助
java -jar ~/soft/OpenGrok/opengrok/lib/opengrok.jar -h
- src中使用軟鏈接的,在-s後面的源碼路徑必須要將軟鏈接的路徑寫全。即如果你在src中創建了一個文件夾,並將代碼指向了它。那麼你的路徑也必須要包含該文件夾,而不能只是上一級目錄。
舉例:
創建了一個路徑~/soft/opengrok/opengrok/src/code1 並在code1上創建一個軟鏈接指向代碼。
這個時候必須寫 ~/soft/opengrok/opengrok/src/code1 而不能寫 ~/soft/opengrok/opengrok/src ,否則雖然執行不會報錯,但是索引不能生成。