CentOS6へのMatterMostインストール

提供: Wikiducca
移動: 案内検索

概要

Slack クローン的な、オープンソースのチャットツール MatterMost を CentOS6 にインストールする。

構築環境

Apache httpd

  • Websocket を使用するため 2.4 以上が必要

MySQL

  • 5.5 以上が必要
  • 日本語の全文検索を使うには Mroonga も必要
  • MySQL は最新バージョンが使えなかったため、同時に yum でインストールしてしまうのが良さそう

手順

# rpm -ivh http://packages.groonga.org/centos/groonga-release-1.1.0-1.noarch.rpm
# yum makecache
# yum install groonga


# yum remove mysql mysql-server


# yum install http://repo.mysql.com/mysql-community-release-el6-7.noarch.rpm
# yum install mysql-community-mroonga

mysql もインストールされる。

my.cnf などを適当に修正。

適当に起動。

mm_db というデータベースと mm_admin というユーザを作っておく。

# mkdir /usr/local/src/MatterMost
# cd /usr/local/src/MatterMost
# curl -L https://releases.mattermost.com/3.3.0/mattermost-team-3.3.0-linux-amd64.tar.gz -o mattermost-team-3.3.0-linux-amd64.tar.gz
# tar zxf mattermost-team-3.3.0-linux-amd64.tar.gz

# mv mattermost /opt/
# mkdir -p /opt/mattermost/data

# cd /opt/mattermost/config/
# diff config.json config.json.org
50c50
<         "DataSource": "mm_admin:[email protected](localhost:3306)/mm_db?charset=utf8mb4,utf8",
---
>         "DataSource": "mmuser:[email protected](dockerhost:3306)/mattermost_test?charset=utf8mb4,utf8",
188,189c188,189
<         "DefaultServerLocale": "ja",
<         "DefaultClientLocale": "ja",
---
>         "DefaultServerLocale": "en",
>         "DefaultClientLocale": "en",

# useradd -r mattermost -U
# chown -R mattermost:mattermost /opt/mattermost
# chmod -R g+w /opt/mattermost


# cd /opt/mattermost/bin
# su mattermost
$ ./platform

MySQL 日本語全文検索

SHOW ENGINES; に mroonga がなければ。

mysql> INSTALL PLUGIN mroonga SONAME 'ha_mroonga.so';

テーブルのエンジンを切り替える。

mysql> ALTER TABLE `Posts` ENGINE = Mroonga;

起動スクリプト

#!/bin/sh
# chkconfig:   - 85 15
# description:  mattermost

SERVICE=mattermost
start() {
    cd /opt/mattermost/bin
    sudo -u mattermost ./platform &
    echo "service $SERVICE [start]"
}
stop() {
    pkill platform
    echo "service $SERVICE [stop]"
}
status() {
   PID=`pgrep platform | wc -l`
   if [ $PID -eq 0 ]; then
       echo "$SERVICE stop"
   else
       echo "running $SERVICE ..."
   fi
}

case $1 in
start)
       start
       ;;
stop)
       stop
       ;;
status)
       status
       ;;
restart)
       stop
       start
       ;;
*)
       echo "Usage: $SERVICE [start|stop|restart|status]"
       ;;
esac
exit 0

バーチャルホストの設定例

<VirtualHost *:443>
    ServerName teams.example.jp
    DocumentRoot /home/sites/teams.example.jp/web

    SSLEngine on
    SSLCertificateFile /home/sites/teams.example.jp/ssl/server.crt
    SSLCertificateKeyFile /home/sites/teams.example.jp/ssl/server.key

    ProxyPreserveHost On

    RewriteEngine On

    RewriteCond %{REQUEST_URI}  ^/api/v3    [NC,OR]
    RewriteCond %{REQUEST_URI}  ^/api/v1/websocket    [NC,OR]
    RewriteCond %{HTTP:UPGRADE} ^WebSocket$           [NC,OR]
    RewriteCond %{HTTP:CONNECTION} ^Upgrade$          [NC]
    RewriteRule .* http://127.0.0.1:8065%{REQUEST_URI}  [P,QSA,L]

    RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f
    RewriteRule .* http://127.0.0.1:8065%{REQUEST_URI} [P,QSA,L]
    RequestHeader set X-Forwarded-Proto "https"

    <Location /api/v1/websocket>
        Order allow,deny
        Allow from all
        ProxyPassReverse http://127.0.0.1:8065/api/vi/websocket
        ProxyPassReverseCookieDomain 127.0.0.1 vm11.example.jp
    </Location>

    <Location />
        Order allow,deny
        Allow from all
        ProxyPassReverse http://127.0.0.1:8065/
        ProxyPassReverseCookieDomain 127.0.0.1 vm11.example.jp
    </Location>
</VirtualHost>

参考・引用

mod_proxy