プロジェクトで、リポジトリ内のソースコードを全文検索する仕組みが欲しくていろいろ探しまわった結果、OpenGrokなるものを発見。
セットアップ自体はそんなに難しくないです。JavaとGlassfishやTomcat、それと全文検索したいリポジトリがあればOK。
紹介するだけに留めておこうと思ったけど、さくらのVPSを使った構築方法を書いてみることにしました。
環境としては、
- Java 1.6.0_30 64bit(たぶん、最初から入っていたやつ)
- Glassfish 3.1.2.2 Web Profile Multilingual(Linux/Unix/Mac/AIX)
https://glassfish.java.net/downloads/3.1.2.2-final.html - nginx 1.3.8
- Git 1.7.4.1
Install Glassfish
cd ~ wget http://download.java.net/glassfish/3.1.2.2/release/glassfish-3.1.2.2-web-ml.zip unzip glassfish-3.1.2.2-web-ml.zip sudo mv glassfish3 /usr/local vi ~/.bash_profile # Append '/usr/local/glassfish3/bin' to PATH source ~/.bash_profile cd /usr/local/glassfish3 ## Change port number sed -e "s/8080/50080/g" glassfish/domains/domain1/config/domain.xml | grep "port=\"50080\"" # <network-listener port="50080" protocol="http-listener-1" transport="tcp" name="http-listener-1" thread-pool="http-thread-pool"></network-listener> sed -i -e "s/8080/50080/g" glassfish/domains/domain1/config/domain.xml sed -e "s/8181/50081/g" glassfish/domains/domain1/config/domain.xml | grep "port=\"50081\"" # <network-listener port="50081" protocol="http-listener-2" transport="tcp" name="http-listener-2" thread-pool="http-thread-pool"></network-listener> sed -i -e "s/8181/50081/g" glassfish/domains/domain1/config/domain.xml sed -e "s/4848/50048/g" glassfish/domains/domain1/config/domain.xml | grep "port=\"50048\"" # <network-listener port="50048" protocol="admin-listener" transport="tcp" name="admin-listener" thread-pool="admin-thread-pool"></network-listener> sed -i -e "s/4848/50048/g" glassfish/domains/domain1/config/domain.xml ## Set admin password asadmin change-admin-password ## Start glassfish server asadmin start-domain domain1 # domain1の起動を待機しています ..... # domain が正常に起動されました: domain1 # domain 場所: /usr/local/glassfish3/glassfish/domains/domain1 # ログ・ファイル: /usr/local/glassfish3/glassfish/domains/domain1/logs/server.log # 管理ポート: 50048 # コマンドstart-domainは正常に実行されました。 ## Chagne security setting asadmin enable-secure-admin --port 50048 # 管理ユーザー名を入力してください> admin # ユーザー"admin"の管理パスワードを入力してください> # セキュリティ保護された管理に対する変更を有効にするには、稼働中のすべてのサーバーを再起動する必要があります。 # コマンドenable-secure-adminは正常に実行されました。 ## Restart glassfish server asadmin restart-domain domain1 # ドメインは正常に再起動されました # コマンドrestart-domainは正常に実行されました。
Add proxying for glassfish
単に、iptablesでPort開けて、http://IP_ADDR:50048/やhttp://IP_ADDR:50080/でアクセスできるようにしたかったけどうまくいかなかったので、nginxのreverse proxyを使うことにした。
ちなみに、下の設定だと管理画面のログイン画面が表示できない・・・うーむ。
sudo vi /usr/local/nginx/conf/nginx.conf # server { # listen 80; # server_name xxxxxxx; # # location / { # proxy_set_header X-Forwarded-Host $host; # proxy_set_header X-Forwarded-Server $host; # proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # proxy_pass http://localhost:50080; # } # location /admin { # proxy_set_header X-Forwarded-Host $host; # proxy_set_header X-Forwarded-Server $host; # proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # proxy_pass https://localhost:50048; # } # }
Install OpenGrok
cd ~ wget http://java.net/projects/opengrok/downloads/download/opengrok-0.11.1.tar.gz tar xvfz opengrok-0.11.1.tar.gz sudo mv opengrok-0.11.1 /usr/local/ cd /usr/local sudo ln -s opengrok-0.11.1 opengrok sudo chown -h user:group opengrok vi ~/.bash_profile # Append '/usr/local/opengrok/bin' to PATH source ~/.bash_profile cd opengrok vi bin/OpenGrok # ファイルの初めの方に追記 # OPENGROK_INSTANCE_BASE=/usr/local/opengrok/data # JAVA_HOME=/usr/java/default # OPENGROK_APP_SERVER=Glassfish # OPENGROK_GLASSFISH_BASE=/usr/local/glassfish3/glassfish mkdir data
Deploy OpenGrok to Glassfish
OpenGrok deploy # Loading the default instance configuration ... # ERROR: Unable to determine Java 6 Home for Linux 2.6.18-308.16.1.el5 # Installing /usr/local/opengrok/bin/../lib/source.war to /usr/local/glassfish3/glassfish/domains/domain1/autodeploy ... # # Start your application server (Glassfish), 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 Glassfish.
Create index
下の手順を実行した後、http://
## Make repository sudo mkdir repos sudo chown user:group repos cd repos mkdir sandbox cd sandbox git init echo 'hogehoge' >> hogehoge echo 'fugafuga' >> hogehoge git add hogehoge git commit -m 'hogehoge' OpenGrok index /usr/local/reposrok # Loading the default instance configuration ...
ということで、構築の参考程度にしてもらえれば。職場では正常に動いたんだけどなあ。
なお、日本語が文字化けするんだけど、対処方法がよくわからず。