Atlassian の Confluence を自宅のサーバで動かすまで その 2

前回までのあらすじ:
Tomcat の設定まで終わりましたが、なんのために複数インスタンスを立ち上げるのか、前提条件についての話がなかったですね。家族旅行管理サイトとマンション管理組合サイトと、 1 つのサーバで 2 つのサイトを立ち上げたいからでした。

というわけで、次は MySQL のインストールと設定を行います。Atlassian はかなりドキュメントが充実していて、だいたいは Database Setup For MySQL を見れば事足ります。
補足としては character set の設定を utf8 ではなく、 utf8mb4 にした方が良さそう、ってところかな〜。要は、 4 byte 文字を扱えるようにしたい!ってことです。🍺とか🍛とか💩とかですね。
そのためには、上記のドキュメントの以下で記載されている設定を、下記のように書き換えます。

Step 3. Configure MySQL Server > To configure MySQL Server: > 2. > Specify the default character set to be UTF-8:

[mysqld]
...
character-set-server=utf8mb4
collation-server=utf8mb4_bin
...

以下の部分も同様です。

Step 4. Set up your MySQL database and user > To create the database and user privileges: > 2.

こんな感じ。

CREATE DATABASE foo CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
CREATE DATABASE bar CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;

ついでに、ここも、こう!

Step 4. Set up your MySQL database and user > To create the database and user privileges: > 3.

GRANT ALL PRIVILEGES ON foo.* TO 'foo'@'localhost' IDENTIFIED BY 'お好みで';
GRANT ALL PRIVILEGES ON bar.* TO 'bar'@'localhost' IDENTIFIED BY 'お好みで';

このまま無事に Confluence で利用できればいいのですが、そうは簡単にいきません。
character set に utf8mb4 を指定しているため、 MySQL の仕様にぶつかることになります。詳細は 14.8.1.7 Limits on InnoDB Tables > Maximums and Minimums にありますが、要は、

By default, the index key prefix length limit is 767 bytes. See Section 13.1.13, “CREATE INDEX Syntax”. For example, you might hit this limit with a column prefix index of more than 255 characters on a TEXT or VARCHAR column, assuming a utf8mb3 character set and the maximum of 3 bytes for each character. When the innodb_large_prefix configuration option is enabled, the index key prefix length limit is raised to 3072 bytes for InnoDB tables that use DYNAMIC or COMPRESSED row format.

Attempting to use an index key prefix length that exceeds the limit returns an error. To avoid such errors in replication configurations, avoid enabling innodb_large_prefix on the master if it cannot also be enabled on slaves.

The limits that apply to index key prefixes also apply to full-column index keys.

と、いうことだそうです。
テーブルやカラムの作成には Confluence が用意した DDL を流すだけなので、ここに手を入れることは考えない方が良いでしょう。
幸いにも MySQL 5.7 系であれば、この制限は緩和されているようなので、 MySQL のバージョンをあげることになります。
ところが、いまのところ Portage で扱っている MySQL の最新バージョンは 5.6.37 なんですよねぇ。
そこで、 Gentoo Linux にはローカルなオレオレ ebuild を利用するための overlay という仕組みがあります。 /etc/portage/make.conf の PORTDIR_OVERLAY にパスを指定することで、自分で ebuild を作成してなんとかする方法もあります、というか、若かりし頃はやってました(遠い目)。
現在は Gentoo Linux もかなりメジャーな存在になり、非公式なリポジトリやそれを扱うツールもあるため、ちょっと探すとでてきます、やったね!。
具体的には layman というツールを入れます。

# emerge layman

あとは、親切な人が https://gpo.zugaina.org/dev-db/mysql に 5.7 系の ebuild を置いてくれているので、

# layman -a mysql

とすると、ローカルのリポジトリに追加されます。マスクがかかっているので、外してあげれば、これで 5.7 系の MySQL をインストールすることができます。正直なところ、野良パッケージはできるだけ使いたくないのだけど、中身みても大丈夫っぽいので今回は OK ってことにします。

これで MySQL のお話はだいたいおしまい。
だんだん説明が荒くなっていくけど、次できっと最後だよ!