VagrantでMattermostを試してみる
環境は以下で確認した
Windows10
VirtualBox
vagrant
CentOS 7.2
Mysql 5.7
nginx 1.10
コマンドプロンプトにて
$ vagrant plugin install vagrant-hostsupdater
$ vi Vagrantfile
----------------
config.vm.network "private_network", ip: "192.168.33.10"
config.vm.hostname = "yourdomain.dev"
----------------
$ vagrant up
Mattermostのインストール
まずMySQL5.7のインストール
mysqlと競合するmariadb関連のライブラリが既に入っているのでアンインストール
$ sudo yum remove mariadb*
mysqlディレクトリの存在確認
$ sudo ls -la /var/lib/mysql/
もしあれば
$ sudo rm -rf /var/lib/mysql/
yumコマンドでインストール
リポジトリを追加
$ sudo yum localinstall http://dev.mysql.com/get/mysql57-community-release-el7-7.noarch.rpm
インストール
$ sudo yum install mysql-community-server
バージョン確認
$ mysqld --version
ステータス確認
$ systemctl status mysqld.service
起動
$ sudo systemctl start mysqld.service
停止
$ sudo systemctl stop mysqld.service
自動起動設定
$ sudo systemctl enable mysqld.service
mysql起動後にログを確認
$ cat /var/log/mysqld.log | grep 'password is generated'
2015-10-25T08:42:09.501502Z 1 [Note] A temporary password is generated for root@localhost: <初期パスワード>
rootユーザでログイン
$ mysql -uroot -p
Enter password: <初期パスワード>
MySQLmysql 5.7のセキュリティ設定
$ mysql_secure_installation
Enter password for user root:
New password: DbPass1! # ←仮の新rootパスです
Re-enter new password:
・匿名ユーザーアカウントを削除 Y
・ローカルホスト以外からアクセス可能な root アカウントを削除 Y
・test データベースの削除 Y
・即反映するか Y
ログイン確認
$ mysql -uroot -p
Enter password: 仮の新rootパス
⇒ログインできること
ログインしたらutf8でデータベース作成する
mysql> CREATE DATABASE mmdb DEFAULT CHARACTER SET utf8;
mysql> CREATE USER 'mmdbuser'@'localhost' IDENTIFIED BY 'MmDbUserPass1!'; # ←仮のmmuserパスです
mysql> GRANT ALL PRIVILEGES ON mmdb.* TO 'mmdbuser'@'localhost' IDENTIFIED BY 'MmDbUserPass1!';
mysql> FLUSH PRIVILEGES;
mysql> exit
Mattermost本体のインストール
最新版のバージョンとURLを確認
https://about.mattermost.com/download/
ダウンロード
$ wget https://releases.mattermost.com/3.10.0/mattermost-3.10.0-linux-amd64.tar.gz
ダウンロードしたパッケージを展開すると「mattermost」というディレクトリが作成されるので、これを適当なディレクトリに移動する。今回は/opt/ディレクトリ以下に移動した。
展開
$ tar xvzf mattermost-3.10.0-linux-amd64.tar.gz
移動
$ sudo mv mattermost /opt/
データ保存先ディレクトリ
$ sudo mkdir /opt/mattermost/data
設定ファイルを適宜編集
$ vi /opt/mattermost/config/config.json
"DataSource": "mmuser:mostest@tcp(dockerhost:3306)/mattermost_test?charset=utf8mb4,utf8&readTimeout=30s&writeTimeout=30s",
↓
"DataSource": "mmdbuser:MmDbUserPass1!@tcp(localhost:3306)/mmdb?charset=utf8mb4,utf8&readTimeout=30s&writeTimeout=30s",
Mattermostアプリを実行用のmattermostユーザを作成
$ sudo useradd -r mattermost -U
ファイル/ディレクトリのパーミッションを変更
$ sudo chown -R mattermost:mattermost /opt/mattermost
SystemdでMattermostサービスを管理するための設定ファイルを用意する
$ sudo vi /etc/systemd/system/mattermost.service
-------------------------------------------------
[Unit]
After=network-online.target
Description=mattermost server
Requires=network-online.target rsyslog.service mysqld.service
[Service]
WorkingDirectory=/opt/mattermost/bin
User=mattermost
ExecStart=/opt/mattermost/bin/platform
PIDFile=/var/spool/mattermost/pid/master.pid
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=mattermost
[Install]
WantedBy=multi-user.target
-------------------------------------------------
systemctl設定の反映
$ sudo systemctl daemon-reload
サービスの実行
$ sudo systemctl start mattermost
サービスが稼動しているかどうかも確認
$ sudo systemctl status mattermost
ブラウザで動作確認
http://yourdomain.dev:8065/
ブラウザの80番ポートでアクセスできるようにする。
ここではnginxを利用する
nginxをインストールする
$ sudo yum install nginx
configファイルに設定を追加し、mattermostの8065ポートをReverseProxyにする設定を入れます。
$ vi /etc/nginx/conf.d/nginx.conf
server {
listen 80;
server_name yourdomain.dev;
location / {
client_max_body_size 50M;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Frame-Options SAMEORIGIN;
proxy_pass http://127.0.0.1:8065;
}
}
nginxを起動
$ sudo systemctl start nginx
$ systemctl status nginx
ブラウザで動作確認
http://yourdomain.dev:80/
日本語全文検索をしたい
世知辛いと投稿しておく
コメントで辛いを検索
⇒Oh! Hitしない…
my.cnfに追記
$ sudo vi /etc/my.cnf
-----------------------------------
[mysql]
default-character-set = utf8mb4
[mysqld]
# setting for utf8mb4
character-set-server = utf8mb4
innodb_large_prefix = ON
innodb_file_format = Barracuda
innodb_file_format_max = Barracuda
-----------------------------------
スキーマをダンプ
$ mysqldump -d mmdb -u mmdbuser -p > ddl.sql
$ grep "FULLTEXT" ddl.sql
FULLTEXT KEY `idx_channels_txt` (`Name`,`DisplayName`)
FULLTEXT KEY `idx_posts_message_txt` (`Message`),
FULLTEXT KEY `idx_posts_hashtags_txt` (`Hashtags`)
FULLTEXT KEY `idx_users_all_txt` (`Username`,`FirstName`,`LastName`,`Nickname`,`Email`),
FULLTEXT KEY `idx_users_all_no_full_name_txt` (`Username`,`Nickname`,`Email`),
FULLTEXT KEY `idx_users_names_txt` (`Username`,`FirstName`,`LastName`,`Nickname`),
FULLTEXT KEY `idx_users_names_no_full_name_txt` (`Username`,`Nickname`)
⇒とりあえずPostsテーブルのMessageカラムだけは対処する
$ mysql -u mmdbuser -p mmdb
Postsテーブルのidx_posts_message_txtインデックスを削除
mysql> ALTER TABLE Posts DROP INDEX idx_posts_message_txt;
Ngramでインデックスを貼る
mysql> ALTER TABLE Posts ADD FULLTEXT INDEX idx_posts_message_txt (`Message`) WITH PARSER ngram COMMENT 'ngram index';
コメントで世知辛いを検索
⇒Hitした。OK
Ngramすげーと思ってたら、Mroonga のほうが速いらしい。。
参考
http://knowledge.sakura.ad.jp/knowledge/5933/
http://qiita.com/shadowhat/items/c29a6d0362a2742425ba
http://qiita.com/terukizm/items/b477943b63c66ab7d454