Lightsailのbitnami RedmineにPlantUMLプラグインを導入する

# きっかけ

Redmineでチケット管理しているシステムの設計書を同じRedmineで管理したくなった。
どうせなら脱Excel化して、Wikiで設計書を作りたい。

# 環境

Amazon LightsailのBitnami版Redmine

``` bash:/etc/os-release
PRETTY_NAME="Debian GNU/Linux 10 (buster)"
NAME="Debian GNU/Linux"
VERSION_ID="10"
VERSION="10 (buster)"
VERSION_CODENAME=buster
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"
```

Redmineの情報

```
Environment:
  Redmine version                4.1.1.stable
  Ruby version                   2.5.8-p224 (2020-03-31) [x86_64-linux]
  Rails version                  5.2.4.2
  Environment                    production
  Database adapter               Mysql2
  Mailer queue                   ActiveJob::QueueAdapters::AsyncAdapter
  Mailer delivery                smtp
```

# 導入手順

### Javaのインストール

``` bash
$ sudo apt-get install default-jdk
```

Javaのインストールバージョンとパスが通っているかを確認

``` bash
$ java --version
openjdk 11.0.11 2021-04-20
OpenJDK Runtime Environment (build 11.0.11+9-post-Debian-1deb10u1)
OpenJDK 64-Bit Server VM (build 11.0.11+9-post-Debian-1deb10u1, mixed mode, sharing)
```

### Graphvizのインストール

``` bash
$ sudo apt-get install graphviz
```

Graphvizのインストールバージョンとパスが通っているかをdotコマンドで確認

``` bash
$ dot -V
dot: error while loading shared libraries: libgvc.so.5: cannot open shared object file: No such file or directory
```

おやおや、エラーが発生しました。共有ライブラリがない？？
dotコマンドのパスを確認します。

``` bash
$ which dot
/opt/bitnami/common/bin/dot
```

ん、apt-getでインストールしたのに、bitnamiの配下を参照している？？
dpkgコマンドでgraphvizのインストール先を確認します。

``` bash
$ dpkg -L graphviz
（抜粋）
/usr/bin/dot
（抜粋）
```

/usr/bin/dotにあるのね。
では、改めてdotコマンドで確認します。

``` bash
$ /usr/bin/dot -V
dot - graphviz version 2.40.1 (20161225.0304)
```

成功！

``` bash
$ echo $PATH
（抜粋）:/opt/bitnami/common/bin（抜粋）:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
```

PATHの優先順位がbitnamiの方が高かったということですね。

## 日本語フォントのインストール

何も考えず、IPAフォントをインストールします。

``` bash
$ sudo apt-get install fonts-ipafont fonts-ipaexfont
```

## PlantUMLの入手

参考サイトでは、wgetで取得していますが、自分のPCにダウンロード後、SCPでホームディレクトリ（/home/bitnami）にアップしました。

## PlantUMLの動作確認

下記の内容を test.umlとして保存します。

``` text:test.uml
@startuml
Alice -> Bob: test
@enduml
```

画像ファイルに変換します。

``` bash
$ java -jar plantuml.jar test.uml
```

下記のようなファイルが生成されると成功です。

![test.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/273607/50fbe0c7-8b40-9de7-2c85-7aa017e4b95d.png)

## コマンド化

PlantUMLのjarファイルをホームディレクトリ以外に移動します。

``` bash
$ sudo cp plantuml.jar /usr/local/bin
```

/usr/bin/plantumlにシェルスクリプトを作ります。

``` text:/usr/bin/plantuml
#!/bin/bash
export LANG=ja_JP.UTF-8;
/usr/bin/java -Djava.io.tmpdir=/var/tmp -Djava.awt.headless=true -jar /usr/local/bin/plantuml.jar  -charset UTF-8 ${@}
```

ファイル作成後、ファイルのパーミッションを変更します。

``` bash
$ sudo chmod 755 /usr/bin/plantuml
```

先ほどと同様画像ファイルが作成できるかを確認します。

``` bash
$ sudo chmod 755 /usr/bin/plantuml
```

## PlantUML Redmine pluginのインストール

RedmineのPluginsディレクトリに移動する。

``` bash
cd ~/apps/redmine/htdocs/plugins
```

git cloneし、所有者をRedmineの他のディレクトリと合わせる。

``` bash
$ git clone https://github.com/dkd/plantuml.git
$ sudo chown -R bitnami:daemon plantuml
```

プラグインをインストールする。
sudo無しでは、「production.logに書き込めないよ」というエラーが出たので、sudoを付けました。

``` bash
$ sudo bundle exec rake redmine:plugins:migrate RAILS_ENV=production
```

Redmineの添付ファイル保存ディレクトリのパーミッションを変更する。

``` bash
$ chmod 775 /home/bitnami/apps/redmine/htdocs/files
```

パーミッションを変更しないと下記のようなエラーが表示される場合があります。

![スクリーンショット 2021-05-26 21.59.58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/273607/4ac65d3f-ee48-8f27-10f9-43e93a29b7b1.png)


念のため、諸々再起動します。

``` bash
$ sudo /opt/bitnami/ctlscript.sh stop
$ sudo /opt/bitnami/ctlscript.sh start
```

再起動後、Redmineに管理者ユーザでログインします。
ログイン後、「設定」→「プラグイン」画面を表示します。
PlantUMLのパスに「/usr/bin/plantuml」を入力し、［適用］ボタンをクリックします。

![スクリーンショット 2021-05-26 21.54.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/273607/ec70117c-9e20-2d0a-6a72-5128c1377d9c.png)

## RedmineのWikiで動作確認

Wikiに下記のように入力します。日本語で表示できるかもテストします。

![スクリーンショット 2021-05-26 22.10.50.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/273607/f69c2997-982d-ce49-65c8-d782beb8d029.png)

Wikiページを保存後、以下のように表示されると成功です。

![スクリーンショット 2021-05-26 22.10.38.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/273607/4f983cc7-0a5b-a976-e83c-cc721da224d8.png)

ちなみに、クラス図も動作確認します。

![スクリーンショット 2021-05-26 22.04.55.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/273607/0aa1ae12-8bda-b971-50c3-32fbb0122e66.png)

以上で作業は完了です。

# 参考サイト

[PlantUML](https://plantuml.com/ja/)

[RedmineのPlantUMLプラグイン](https://www.redmine.org/plugins/plantuml)

[PlantUMLをUbuntuにインストールする](https://blog.katsubemakito.net/articles/install_plantuml_for_ubuntu)

[PlantUMLをRedmineから使う](https://blog.katsubemakito.net/articles/plantuml_on_redmine)

[RedmineでPlantUML(+Graphviz)を使おうとしてはまった話](https://bawbr.hatenablog.com/entry/2019/01/06/184416)