tomcat力低いけどOpenGrok使ってみたいんや!
お試しにvagrantで立ててみる。

参考:

環境

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ではプロジェクトという単語を使っている。

このときに最低限知っておいたほうがいい環境変数。

適当に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して魔改造するのかな…それはつらそうだな…