イケてるゲノムブラウザWebApollo2.0.6をmacに導入する その１　システムを作るまで

ユーザーがアノテーション情報を自由に編集、抽出できるゲノムブラウザWebApolloの導入方法です。新規ゲノムから新たに遺伝子モデルの構築を行っていく場合や、既知の遺伝子モデルが不適当なときに、インタラクティブにモデルの変更を行えます。発現量をグラフ形式で見たり、interPro Scanの結果からドメイン領域の確認をする場合も有用です。

ここでデモを見られます
http://genomearchitect.github.io/demo/


#参考サイト
本家
https://genomearchitect.readthedocs.io/en/1.0.4/Quick_start_guide/
バージョンが多くて依存関係も複雑！


ポスグレの入れ方
http://qiita.com/tstomoki/items/0f1a930bd42a8e1fdaac

#事前準備
- macはEl Capitan 10.11.6です
- Apolloを動かすために新規ユーザーを作成しておいた方が良いです。
自分はMac miniを準備して、Apollo専用にしています。
- 必要なツールを管理するためにhomebrewを使っています。以下のサイトを参考にいれて下さい。
https://brew.sh/index_ja.html

#仮Runまで

###JAVA/JDKをいれる
以下のとかを参考にオラクルのサイトから落としてインストール
http://devnote.jp/jdk/8/osx/

JAVA_HOMEを設定する。今回はv1.8のJDKをいれたので
.bash_profileに以下の様に記述する

```bash:.bash_profile
export JAVA_HOME=`/usr/libexec/java_home -v 1.8`
``` 


###Tomcatをいれる

brewでいれます

```bash:tomcat.sh
brew install tomcat
```

試しに起動する

```bash:tomcat_start.sh
$(brew --prefix)/bin/catalina start
```

safari等で
http://localhost:8080
にアクセスして、不細工ネコがでたらOK

終了しておく

```bash:tomcat_stop.sh
$(brew --prefix)/bin/catalina stop
```



###Apolloダウンロード

以下のサイトからダウンロードして解凍する
https://github.com/GMOD/Apollo

出来たapollo-2.0.6ディレクトをhome直下とかに置く

###必要なツールをインストール

homebrewが入っていれば、まず以下のワンライナーでガッツリいれる

```bash:Prereq_apollo.sh
brew install wget git node.js npm
```


#####bowerを別個にいれる

```bash:bower_install.sh
npm install -g bower
```

#####grailsをいれる
grailsをいれたいが
grailsの最新版(v3)だとエラーがでるので
grails 2.5.5をsdkmanを使ってインストールする

以下の様に打つ
`curl -s get.sdkman.io | bash`
別ウインドウを開いて 
`source "$HOME/.sdkman/bin/sdkman-init.sh"`
`sdk install grails 2.5.5`

#####grailsに関連するツールをいれる

sdkmanでインストールを続ける

```bash:grails_tools_install.sh
sdk install gradle 2.11
sdk install groovy
sdk install maven
sdk install ant
```

###環境がそろっているか、仮runして確認する

```bash:test_run.sh
cd ~/Apollo-2.0.6
./apollo run-local
```

| Server running. Browse to http://localhost:8080/apollo
とでればOK

仮起動中はコンソールが占拠されるので、
終了する時はCtrl + Cをおして中断させる。



#ユーザー管理を出来るようにする

仮ランだと設定がmacの起動毎にかわってしまってしまうのでポスグレと連携させて
おかしくならないようにする。

###環境変数を設定
めんどくさくないように、環境変数を設定します。
~/.bash_profile に以下の様に書き込みます。

```bash:.bash_profile
export PGUSER=web_apollo_users_admin
export PGPASSWORD=password
export WEBAPOLLO_USER=web_apollo_admin
export WEBAPOLLO_PASSWORD=web_apollo_admin
export WEBAPOLLO_DATABASE=web_apollo_users
export JBROWSE_DATA_DIR=$HOME/Desktop/data
export WEBAPOLLO_DATA_DIR=$HOME/Desktop/annotations
```

##ポスグレデータベースを作成

ポスグレはwebapolloにログインするユーザーを管理するのに使っています。

最新のポスグレ(9.6)だと動かないので
9.5.5 をいれる

```bash:init_postgres.sh
brew tap homebrew/versions
brew install homebrew/versions/postgresql95
rm -rf /usr/local/var/postgres && initdb /usr/local/var/postgres -E utf8
pg_ctl -D /usr/local/var/postgres start
```

###ポスグレユーザーを設定する

```bash:user_postgres.sh
createuser -RDIElPS $PGUSER 
```

webapolloのユーザー管理のためのDBを作成する

```bash:db_postgres.sh
createdb -E UTF-8 -O $PGUSER $WEBAPOLLO_DATABASE -U `whoami`
```

##デプロイする

ポスグレをユーザー管理に使うので、それ用の設定ファイルを
apollo-config.groovy としてコピーする

```bash:db_postgres.sh
cd Apollo-2.0.6/
cp sample-postgres-apollo-config.groovy apollo-config.groovy 
```

コピーしたconfigファイルにポスグレ接続用のユーザーとパスワード、データベース名を書き込む

`url = "jdbc:postgresql://localhost/$データベース名`
を見逃しがちなので注意。



```cpp:config.properties
........
            username = "<CHANGEME>"
            password = "<CHANGEME>"
            driverClassName = "org.postgresql.Driver"
            dialect = org.hibernate.dialect.PostgresPlusDialect
            url = "jdbc:postgresql://localhost/apollo"
        }
...........
```

上記の部分を
以下の様に変える

```cpp:config.properties
........
            username = "web_apollo_users_admin"
            password = "password"
            driverClassName = "org.postgresql.Driver"
            dialect = org.hibernate.dialect.PostgresPlusDialect
            url = "jdbc:postgresql://localhost/web_apollo_users"
        }
...........
```



デプロイする

```bash:deploy.sh
./apollo deploy
```

| Done creating WAR target/apollo-2.0.6.war
とでたらOK

`~/Apollo-2.0.6/target`にapollo-2.0.6.warができているのでこれを、名前をapollo.warにかえて
`/usr/local/Cellar/tomcat/8.5.11/libexec/webapps/`に移動させる

`cp ./target/apollo-2.0.6.war /usr/local/Cellar/tomcat/8.5.11/libexec/webapps/apollo.war`

###起動確認

tomcat を起動させて

```bash:tomcat_start.sh
$(brew --prefix)/bin/catalina start
```

http://localhost:8080/apollo
にアクセスしてwebapolloが起動したらOK
(tomcatの起動やapolloの展開に時間がかかるので気長にまってからアクセスする）

表示に従ってadminアカウントを作っておく

###tomcatのメモリーを増やす
tomcatのデフォルトのメモリー量では足りないので、メモリを増やす

mac mini は16Gメモリーがあるので以下の様にしました。

```bash:setenv.sh
export CATALINA_OPTS="-Xmx12288m -Xms8192m \
        -XX:PermSize=256m \
        -XX:MaxPermSize=1024m \
        -XX:ReservedCodeCacheSize=64m \
        -XX:+UseG1GC \
        -XX:+CMSClassUnloadingEnabled \
        -Xloggc:$CATALINA_HOME/logs/gc.log \
        -XX:+PrintHeapAtGC \
        -XX:+PrintGCDetails \
        -XX:+PrintGCTimeStamps"
```

このsetenv.shファイルを/usr/local/binにいれてtomcatを再起動すればよい