JIRAインストールで嵌まった話(8の使い方が誤っています)

仕事でJIRAを使う機会ができたので試してみると結構便利だった。REST APIを使えば使い勝手を良くできるらしいので、練習してみたいと思う。ただ、職場では自由に試すことができないので、自宅のPC用に購入してみた。オンプレミス版であれば、10ユーザまでたったの10ドルなので、気になる人は試してみるのもありかと思う。

が、使ってみようとしたところで、早速インストールに嵌まってしまった。Javaをデフォルトのパスにインストールしていたり、これからMySQLをインストールする人は同じようなトラブルに嵌まると思うので、そうならないよう紆余曲折をまとめた。

#JIRAのインストール
特に難しいことはない。ポートはあまり使わないところに設定すれば良さそうだった。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/296170/bc07e162-11c6-0fc4-108c-ab809ff652a9.png)

#サービスの立ち上げ
実行したがサービスが立ち上がらなかった。環境変数`JAVA_HOME`と`JRE_HOME`の設定が無かったのが原因だった。[環境変数の設定](https://www.jamf.com/jamf-nation/articles/492/windows-java_home-jre_home)をして解消すると思いきや、トラップが仕込まれていた。

##8の使い方が誤っています
環境変数を設定してもサービスが立ち上がらなかったので、以下の説明を読んで手動でサービスを立ち上げようとしてみた。
https://confluence.atlassian.com/adminjiraserver/running-jira-applications-as-a-windows-service-938847902.html#RunningJIRAasaWindowsservice-ChangingtheWindowsuserthattheJIRAserviceuses

しかし、以下のように謎のエラーが出てしまい、サービスのインストールができなかった。

```
E:\JIRA\bin>service.bat install Jira
Installing the service 'JIRASoftware***********' ...
Using CATALINA_HOME:    "E:\JIRA"
Using CATALINA_BASE:    "E:\JIRA"
Ignoring JAVA_HOME:     "E:\JIRA Software\jre\"
Using JRE_HOME:         "C:\Program Files\Java\jre1.8.0_201"
Using JVM:              "C:\Program Files\Java\jre1.8.0_201\bin\server\jvm.dll"
8 の使い方が誤っています。
```

「8 の使い方が誤っています。」とは何だろうかと、調べたところ`check-java.bat`で`JAVA_VERSION`環境変数が空になってしまい、エラーが起きていることがわかった。これはJavaのバージョンが取得できないために起こるエラーなので、問題を起こしている場所が分かった。Javaへのパスが`C:\Program Files\Java\jre1.8.0_201\bin\java`となっており、半角スペースで切れて正しく実行できなかったのだ。

そこで、以下のように`_EXECJAVA`環境変数を""で囲むことで解決した。

```bash:check-java.bat
for /f "tokens=3" %%a in ('"%_EXECJAVA%" -version 2^>^&1') do (
  set JAVA_RAW_VERSION=%%a
  goto raw_version
)
```

##tomcat8.exe.x64が開けない
ようやくサービスのインストールができるかと思ったら、今度は`tomcat8.exe.x64`が開けないというダイアログが出てきて失敗。x64という拡張子は実行形式ではないので、起動できるよう`service.bat`でファイル名を変更し、tomcat8.exe.x64のファイル名も変更することで問題は解決した。

```
set "EXECUTABLE=%CATALINA_HOME%\bin\tomcat8.exe.x64"
↓
set "EXECUTABLE=%CATALINA_HOME%\bin\tomcat8.x64.exe"
```

##ようやく動いた
ここまででバッチファイルを2つ変更して実行したら、ようやくサービスのインストールに成功した。localhostの指定ポート(10080に設定)にアクセスしたら、以下の画面が表示された。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/296170/0151e159-6d47-e496-1850-6562f1635cbe.png)

#JIRAの初期設定
まだまだ色々設定しなくてはならない。以下の説明をみて、JIRA(主にデータベース)の設定をした。

* [設定方法](https://confluence.atlassian.com/adminjiraserver073/installing-jira-applications-on-windows-861253024.html)
* [JIRAがサポートする環境](https://confluence.atlassian.com/adminjiraserver073/supported-platforms-861253018.html)
![image.png](https://qiita-image-store.s3.amazonaws.com/0/296170/7ce89a5a-e415-6a48-019e-5f36ab5081dc.png)

##MySQL 5.7のインストール
JIRAはVer8.0の時点でMySQL 8.0に対応していないので、5.7をインストールする。古いバージョンのインストーラを探してインストールすればよいので、特に難しいことはなかった。
> https://dev.mysql.com/downloads/installer/

##MySQL Connector/J 5.1のインストール
JIRAはConnector/Jの8に対応していないので、5.1を使う。ダウンロードした`mysql-connector-java-5.1.47-bin.jar`を、JIRAをインストールしたフォルダのlibフォルダに入れ、JIRAを再起動することでインストールできた。
> https://dev.mysql.com/downloads/connector/j/

##MySQL Workbenchのインストール
必須ではないがDBの操作がしやすくなるよう、MySQL Workbenchをインストールした。これも特に難しくない…はずが、また嵌まることになった。インストーラが起動しようとすると、インストール要件である"Visual C++ Redistributable for Visual Studio 2015"がインストールされていないとエラーが出て、インストールが始まらない現象が起きてしまうのだ。

"Visual C++ Redistributable for Visual Studio 2015"はインストールされていたので、インストールを要求されるのは不可解だった。調べてみると、"Visual C++ Redistributable for Visual Studio **2017**"が悪さをしているらしいことが分かった。2017が2015のレジストリキーを消してしまうためらしいのだが、意味が良く分からなかった。
> https://stackoverflow.com/questions/43172345/mysql-workbench-installer-requires-visual-c-2015-redistributable-package-to-be/51444345#51444345

解決方法に書かれているように"Visual C++ Redistributable for Visual Studio **2017**"の修復インストールをしたところ、MySQL Workbenchのインストーラが起動した。なんでこんなトラップに嵌まるのか…

##MySQLの設定
JIRAで使えるよう以下の設定方法に従いMySQLの設定をしていった。
> https://confluence.atlassian.com/adminjiraserver0713/connecting-jira-applications-to-mysql-964983095.html

`my.ini`の設定をするにあたり、MySQL WorkbenchのINSTANCE設定で`my.ini`の場所を指定すると、GUIで設定できるようになるので便利だ。`my.ini`はWindows10だと、ProgramDataに置かれているので、以下のように指定した。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/296170/dd71882c-5f54-f990-6451-655ef465fbe3.png)

[設定方法に従い](https://confluence.atlassian.com/adminjiraserver0713/connecting-jira-applications-to-mysql-964983095.html)、以下の項目を設定した。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/296170/dd36559c-9d8e-dbea-f02c-4432a4ba7069.png)
![image.png](https://qiita-image-store.s3.amazonaws.com/0/296170/9d046b87-dd4e-4df3-a445-2e58e93a6341.png)
![image.png](https://qiita-image-store.s3.amazonaws.com/0/296170/70f26376-f38b-8131-62f1-6edd46927bfe.png)

ローカルで使うなら、バックアップしやすいよう、MySQLのデータを移動しておくと良いかもしれない。その時は、設定を変えるとともに、元々のファイル(デフォルトだと`C:\ProgramData\MySQL\MySQL Server 5.7\Data`)をコピーしておく。コピーを忘れるとサーバが起動しないので注意が必要。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/296170/db89ece2-956a-d1f6-cd8e-c5ce8920d11b.png)

##SQLデータベースの作成
こちらも[設定方法に従い](https://confluence.atlassian.com/adminjiraserver0713/connecting-jira-applications-to-mysql-964983095.html)、データベースを作成し、ユーザに権限を付与した。

```
CREATE DATABASE データベース名 CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
CREATE USER 'ユーザ名'@'ホスト名' IDENTIFIED BY 'パスワード';
GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,REFERENCES,ALTER,INDEX on データベース名.* TO 'ユーザ名'@'ホスト名';
flush privileges;
```

#あとは…
`https://localhost:JIRAのポート`を開き、SQLのポートやユーザ名など必要な情報を入力した。データベースの設定、ライセンスキー入力、ユーザ名入力等は事前に設定した値を入れるだけなので特に問題ないはずだが、エラーが出るようなら、DBが起動していない、DB名やDBのユーザ名やパスワードが間違っているなどを確認すると良いはず。

うまくいったら、JIRAのURLを開くと以下のような画面が表示される。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/296170/2a13e38b-4913-a532-b673-10c84801d807.png)

とても長かった…