Ubuntu trustyにOpenGrokをインストールする
#opengroktomcat力低いけどOpenGrok使ってみたいんや!
お試しにvagrantで立ててみる。
参考:
環境
- Ubuntu 14.04.4
- OpenJDK 1.7.0_95
- OpenGrok 0.12.1.5
Setup
必要なpackageをインストールする。
~$ sudo apt-get update && sudo apt-get upgrade -y
~$ sudo apt-get install openjdk-7-jdk tomcat7 exuberant-ctags git subversion mercurial
OpenGrokのarchiveを落としてくる。
~$ wget -O - https://java.net/projects/opengrok/downloads/download/opengrok-0.12.1.5.tar.gz | tar xvzf -
~$ ./opengrok-0.12.1.5/bin/OpenGrok --help
Loading the default instance configuration ...
Usage: OpenGrok <deploy|derby|update|updateQuietly|usage|help>
OpenGrok index [<directory>]
OpenGrok indexpart <src_root> <directory1> [..]
OpenGrok clearHistory [<repository_name>]
Optional environment variables:
OPENGROK_CONFIGURATION - location of your configuration
e.g. $ OPENGROK_CONFIGURATION=/var/opengrok/myog.conf ./opengrok-0.12.1.5/bin/OpenGrok ...
See the code for more information on configuration options / variables
See the code for more information on configuration options / variables
Oh…軟弱者にとても厳しい。
と思ったけど、bin/OpenGrok
自体はただのshell scriptなので頑張れば大丈夫そう。
tomcatにデプロイするぞ。
~$ sudo service tomcat7 status
* Tomcat servlet engine is running with pid 10477
~$ sudo ./opengrok-0.12.1.5/bin/OpenGrok deploy
Loading the default instance configuration ...
Installing /home/vagrant/opengrok-0.12.1.5/bin/../lib/source.war to /var/lib/tomcat7/webapps ...
Start your application server (Tomcat), if it is not already
running, or wait until it loads the just installed web application.
OpenGrok should be available on <HOST>:<PORT>/source
where HOST and PORT are configured in Tomcat.
http://<HOST>:8080/source/
にアクセスしてOpenGrokが表示されたら喜ぶ。
リファレンス用のコードを配置
リファレンス用のコードとは、リポジトリやプロジェクトと同義。
OpenGrokではプロジェクトという単語を使っている。
このときに最低限知っておいたほうがいい環境変数。
OPENGROK_INSTANCE_BASE
:- default
/var/opengrok
- OpenGrokのベースディレクトリ
- この配下にetc, log等色々掘られる
- default
SRC_ROOT
:- default
OPENGROK_INSTANCE_BASE/src
- リファレンス用コードを置くディレクトリ
- default
DATA_ROOT
:- default
OPENGROK_INSTANCE_BASE/data
- リファレンス用コードの解析結果が置かれるディレクトリ
- default
適当にkobtea/akka-goat-mailとかでいいや…
# SRC_ROOTは$HOME/srcにしてみよう
~$ mkdir src
~$ cd src/
~/src$ git clone https://github.com/kobtea/akka-goat-mail.git
~/src$ cd
# indexを張る
# デフォルト以外のSRC_ROOTの場合は絶対パスを与える
~$ sudo ./opengrok-0.12.1.5/bin/OpenGrok index $HOME/src
Loading the default instance configuration ...
WARNING: OpenGrok generated data path /var/opengrok/data doesn't exist
Attempting to create generated data directory ...
WARNING: OpenGrok generated etc path /var/opengrok/etc doesn't exist
Attempting to create generated etc directory ...
Creating default /var/opengrok/logging.properties ...
ブラウザでプロジェクトが追加されたことを確認する。
ここでちょっと寄り道。
indexを張ったあとのOPENGROK_INSTANCE_BASE
を眺めてみる。
~$ tree /var/opengrok/
/var/opengrok/
├── data
│ ├── historycache
│ │ └── akka-goat-mail
│ │ ├── build.sbt.gz
│ │ ├── LICENSE.gz
│ │ ├── OpenGroklatestRev
│ │ ├── project
│ │ │ ├── build.properties.gz
│ │ │ └── plugins.sbt.gz
│ │ ├── README.md.gz
│ │ └── src
│ │ └── main
│ │ └── scala
│ │ └── GoatMail.scala.gz
│ ├── index
│ │ └── akka-goat-mail
│ │ ├── _1.fdt
│ │ ├── _1.fdx
│ │ ├── _1.fnm
│ │ ├── _1_Lucene41_0.doc
│ │ ├── _1_Lucene41_0.pos
│ │ ├── _1_Lucene41_0.tim
│ │ ├── _1_Lucene41_0.tip
│ │ ├── _1.nvd
│ │ ├── _1.nvm
│ │ ├── _1.si
│ │ ├── segments_3
│ │ └── segments.gen
│ ├── timestamp
│ └── xref
│ └── akka-goat-mail
│ ├── build.sbt.gz
│ ├── LICENSE.gz
│ ├── project
│ │ ├── build.properties.gz
│ │ └── plugins.sbt.gz
│ ├── README.md.gz
│ └── src
│ └── main
│ └── scala
│ └── GoatMail.scala.gz
├── etc
│ └── configuration.xml
├── log
│ └── opengrok0.0.log
└── logging.properties
17 directories, 29 files
logもここにあるのね。
loggerを変更する場合は、opengrok-0.12.1.5/doc/logging.properties
を参考にしてOPENGROK_LOGGER_CONFIG_PATH
に渡せば良い。
etcにはコマンドパスなどのマッピング情報が記載されている。
<void method="put">
<string>org.opensolaris.opengrok.history.GitRepository</string>
<string>/usr/bin/git</string>
</void>
こんな感じ。
indexコマンドで生成しているわけだし、これは手でいじらないほうが良さそう。
運用
基本的な運用自体は、読みたいソースを見つけてSRC_ROOT
へ逐一追加、indexの貼り直しかな。
常にupstreamを追い続けたいのであれば、リポジトリ更新、index貼り直しをするcronでも作れば良い。
サイトのデザインを変えたい場合はどうすればいいんだろう…folkして魔改造するのかな…それはつらそうだな…