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


きっかけ

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

環境

Amazon LightsailのBitnami版Redmine

/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のインストール

$ sudo apt-get install default-jdk

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

$ 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のインストール

$ sudo apt-get install graphviz

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

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

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

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

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

$ dpkg -L graphviz
(抜粋)
/usr/bin/dot
(抜粋)

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

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

成功!

$ echo $PATH
(抜粋):/opt/bitnami/common/bin(抜粋):/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games

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

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

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

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

PlantUMLの入手

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

PlantUMLの動作確認

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

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

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

$ java -jar plantuml.jar test.uml

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

コマンド化

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

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

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

/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 ${@}

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

$ sudo chmod 755 /usr/bin/plantuml

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

$ sudo chmod 755 /usr/bin/plantuml

PlantUML Redmine pluginのインストール

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

cd ~/apps/redmine/htdocs/plugins

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

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

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

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

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

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

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

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

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

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

RedmineのWikiで動作確認

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

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

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

以上で作業は完了です。

参考サイト

PlantUML

RedmineのPlantUMLプラグイン

PlantUMLをUbuntuにインストールする

PlantUMLをRedmineから使う

RedmineでPlantUML(+Graphviz)を使おうとしてはまった話