MattermostのWindows版をセットアップしたときのつまづきごとと対応

# なんでMattermostを使おうと思ったの？
以前はLet's ChatをこれまたWindows上で使っていたのですが、なんでか2週間くらい使っているとログインすら出来なくなる事象が発生して3回ぐらい作り直したのですがダメだったので諦めました。
Let's Chatの問題なのかMongoDBの問題なのかそれとも別なのかはいまだわかりません。

で、バージョンアップされたかな？と思ってググっていたところ、Mattermostというソフトを知りました。
日本語UIあるらしいし全然違うソフトならこっちも試してみようと検証環境を構築した次第。
Windows環境への導入にあたっては下記記事／サイトのお世話になりましたので、まだの方は先にご覧ください。

- SlackクローンのMattermostのWindows版を動かす - Qiita
 - http://qiita.com/yaju/items/de94de6d8d8476d47454
- つぎはぎロケッツ: チャットシステムはMattermostに落ち着いた
 - https://patchrocket.blogspot.jp/2017/02/mattermost.html


# 今回使った環境
- Windows 8.1 Pro with Update (x64) (を Hyper-V上で動かしている)
 - (8.1なのはたまたま環境があったのととりあえず動作できればいいかなと思って手軽に使い回したため)
- Mattermost Windows用ビルド
 - https://releases.mattermost.com/x.x.x/mattermost-team-x.x.x-windows-amd64.zip
 - 2017.05.01時点の最新版は 3.8.2 でした。
     - https://releases.mattermost.com/3.8.2/mattermost-team-3.8.2-windows-amd64.zip
- XAMPP
 - 今回は xampp-win32-7.1.1-0-VC14-installer.exe を使用。
     - https://www.apachefriends.org/jp/download.html
- テキストエディタをお好みで
 - (個人的にはTeraPadとgPadを併用で愛用)
- インターネットブラウザもお好みで
 - (この環境では Vivaldi と Iron を使いました)


# 今回のつまづきどころ
1. mattermostを起動すると "DBから応答がありません: Error 1045: Access denied for user..." と表示されてエラーで起動しない。
1. それでは、とユーザーアカウントを追加しようとすると、MySQLのエラーが出てユーザーを追加出来ない。
1. 2人目以降のユーザーのサインアップが出来ない。
1. 再起動したら繋がらなくなる。

この下にセットアップの流れを書きながらなんとかしていきます。


# インストール手順など
基本的には上記サイトの手順の通りですが、エラーなどで引っかかるところを調整しています。
ローカルエリアな環境での利用が前提なので、セキュリティ関係は適切に調整してください。とりあえず使えるようにするのが目標です。


## XAMPP
Mattermostを展開したいところですが、はやる気持ちを抑えてまずはXAMPPをインストールします。

1. xampp-win32-7.1.1-0-VC14-installer.exe を管理者権限で実行します。
1. この例でのインストール先は c:\xampp です。
1. インストールが終わったら httpd.conf を開いて、ポートの部分2箇所を書き換えます。今回は 30080 にしてみます。
![mattermost_01_httpdconf.png](https://qiita-image-store.s3.amazonaws.com/0/36239/c656156a-110d-6993-8d14-44f3ed2a0350.png)
 - このポート (というかApache) は管理用にしか使わないのでむしろ80じゃないほうが良いのかも。
1. httpd.conf を保存して XAMPP Control Panel から Apache の [Start] ボタンを押すと、緑色になって起動します。
 - このとき、Port(s) 欄は '443, 30080' になっているはず。
1. ブラウザーを起動して、 http://localhost:30080/ に繋ぎます。XAMPPの画面が出ればOKです。
![mattermost_02_xampp.png](https://qiita-image-store.s3.amazonaws.com/0/36239/bd30f8c3-b4b5-8efb-6229-5a37fa2dd54f.png)

## MySQLの起動…の前に
先にMattermostを展開します。設定ファイルを見るためです。

1. ダウンロードした mattermost-team-3.8.2-windows-amd64.zip を c:\mattermost に展開します。
1. c:\mattermost\config\config.json を開きます。
1. mattermostの待ち受けポートを変えたいので、先に "ListenAddress" を ":8065" から ":34567" に書き換えます。
1. ついでに手順通りに214行目あたりの "LocalizationSettings" も "ja" にしときましょう。
1. 72行目あたりの "SqlSettings" "DataSource" を見ます。デフォルトで "mmuser:mostest@tcp(localhost:3306)/～ になってるはずです。
1. /のあとのデータベース名 (mattermost_test) を、実際に使うつもりのデータベース名 (mattermost) に書き換えたりします。


## MySQLの起動
1. XAMPPコンパネ で MySQL を Start させます。Port(s):3306 で起動します。
1. ブラウザで http://localhost:30080/phpmyadmin/ にアクセスします。
1. New から新しいデータベース mattermost を作ります。
![mattermost_11_mysql.png](https://qiita-image-store.s3.amazonaws.com/0/36239/3f5fef62-12ba-2d83-0d4e-038d5378301b.png)

1. 一旦トップに戻ったあと、右ペインの User accounts から Add user account を選びます。
1. User name (mmuser) と パスワード (mostest) を入力します。さっきの config に書いてあったやつです。
![mattermost_12_mysql.png](https://qiita-image-store.s3.amazonaws.com/0/36239/be6b2f43-e4e6-a45e-9af6-ef3ae70f1bc3.png)

1. グローバル特権 Check all にチェックします。必要な権限にチェックが入っていないと、platform.exe の実行時に怒られます。
![mattermost_13_mysql.png](https://qiita-image-store.s3.amazonaws.com/0/36239/c633323c-023b-791c-88a4-1e92f78a6848.png)

1. 一番下の [実行] を押すと、エラーメッセージが出ます。
![mattermost_14_mysql.png](https://qiita-image-store.s3.amazonaws.com/0/36239/84b55f8e-38c6-7f33-d460-ced5d88d57a2.png)
1. 表示されているディレクトリが存在しないので 'c:\xampp\mysql\lib\plugin\' を掘ります。掘るだけでよいので、特にファイルを置く必要などはありません。
1. 赤いエラー表示をクリックして閉じてから、もう一度 [実行] を押します。
1. 「新しいユーザを追加しました。」と出ればOKです。


## Mattermostの起動
1. platform.exe を実行します。問題が無ければしばらく処理をしたあと、[INFO] で "サーバーは:34567" で接続待ちです" と出て起動します。
![mattermost_20_platform.png](https://qiita-image-store.s3.amazonaws.com/0/36239/6f126b65-fd58-ea4f-d909-a8de7761211e.png)

1. 問題があったらエラーメッセージに従って問題を潰します。
1. 起動したら、ブラウザで "http://localhost:34567/" に接続します。サインアップ画面にリダイレクトされれば成功です。
1. サインアップしてチームを作っちゃいましょう。
![mattermost_30_mattermost.png](https://qiita-image-store.s3.amazonaws.com/0/36239/b7851c4c-2873-0833-5c28-041677120895.png)

## 2人目のユーザーがサインアップ出来ない
別のユーザーで入ろうとしても既存ユーザーのログイン画面になってしまいます。
![mattermost_31_mattermost.png](https://qiita-image-store.s3.amazonaws.com/0/36239/c8f613a8-f8fe-edb7-52e0-2f0dc6bb4a8b.png)

管理者がチームに招待すればいいのですが面倒くさいので各自がサインアップ出来るようにしたいなーと思って設定を眺めていたら見つけました。

1. システムコンソール→セキュリティー→利用登録 へ移動します。
1. "オープンサーバーを有効にする" を "有効" にして、設定を保存します。
![mattermost_32_mattermost.png](https://qiita-image-store.s3.amazonaws.com/0/36239/b9341ce4-1e11-6331-9764-567e1471dbd3.png)

1. ログイン画面に "アカウントを作成する" が出てきました。
![mattermost_33_mattermost.png](https://qiita-image-store.s3.amazonaws.com/0/36239/04ddb03c-e30f-9e95-9a60-e7990817a608.png)


## 再起動したら繋がらなくなった
NSSMでサービス化をしたのに再起動をしたら Mattermost に繋がらなくなりました。色々焦りましたが、答えは単純で MySQL がサービス起動していなかったわけです。
XAMPP の Service チェックボックスがグレーアウトしていたのを脳内スルーしていたので気づきませんでしたので、これをサービスとしてインストールします。

1. XAMPP Contorol Panel を、管理者として実行します。
1. MySQL を Stop させてから、Service のチェックボックスをクリックしてインストールします。
![mattermost_40_xampp.png](https://qiita-image-store.s3.amazonaws.com/0/36239/153f428e-568e-f38c-02cf-20e75ac4d906.png)

1. インストール出来たら、再度 Start するとOKです。Apache をサービスで使う場合も同様です。


# 所感など
慣れてしまえばセットアップも手軽なのがよいよ Mattermost。
自分だけのために立てて、一人で思いついたままにメモなどに使うにも良いですね。
まだ使い始めたばかりですがあとは日々使って、安定してるかどうか見ていきたいです。
絵文字使えたり画像貼れたりたのしい (たのしい)。