Mattermost環境構築

職場でグループチャットを導入したかったので、SlackクローンのMattermostの環境を構築しました。
基本的に公式サイト通りですが、インストール方法をまとめておきます。

VagrantでCentOS7仮想マシン作成

bento/centos-7.2を使用

最新版でもよかったのですが、たまたま別の環境を構築した際に7.2のboxをダウンロード済みだったので、時間短縮のため7.2を使いました。

#!/bin/sh
$ mkdir mattermost
$ cd mattermost/
$ vagrant init bento/centos-7.2
ネットワークを設定する
#!/bin/sh
$ emacs Vagrantfile
[Vagrantfile]
# 別の端末からアクセスできるように固定IPのパブリックネットワークにします。
config.vm.network :public_network, :ip => "{IPアドレス}", :netmask => "{ネットマスク}", :bridge => "{ネットワーク名}"
VM起動・SSH接続
#!/bin/sh
$ vagrant up
$ vagrant ssh

パッケージを最新にする

#!/bin/sh
$ sudo yum update
$ sudo yum upgrade

MySQLインストール

#!/bin/sh
# とりあえずダウンロードディレクトリを作成しておく。
$ mkdir ~/Download
$ cd ~/Download

# wgetの存在確認
$ which wget
# なければインストール
$ sudo yum install wget

# MySQLインストール
$ wget http://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm
$ sudo yum localinstall mysql57-community-release-el7-9.noarch.rpm
$ sudo yum install mysql-community-server

# MySQLサーバー起動
$ sudo systemctl start mysqld.service
初回起動時に’root’@’localhost’のパスワードが勝手に生成されるので任意のパスワードに変更する。
#!/bin/sh
# ログから生成されたパスワードを確認
$ sudo grep 'temporary password' /var/log/mysqld.log

# rootの生成されたパスワードでMySQLにログイン
$ mysql -u root -p
# >> パスワードを入力
# mysql
# rootのパスワードを変更
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '{パスワード}';
マシン起動時にMySQLが起動するように設定する
#!/bin/sh
$ sudo chkconfig mysqld on
データベース設定
# mysql
# ユーザー作成
mysql> create user 'mmuser'@'%' identified by '{パスワード}';

# データベース作成
mysql> create database mattermost;

# ユーザーへのアクセス権限
mysql> grant all privileges on mattermost.* to 'mmuser'@'%';

Mattermostサーバーインストール

#!/bin/sh
# 最新バージョンを確認してダウンロード(https://about.mattermost.com/download/)
$ wget https://releases.mattermost.com/4.7.2/mattermost-4.7.2-linux-amd64.tar.gz

# Mattermostサーバーのファイルを抽出する
$ tar -xvzf *.gz

# /optディレクトリに移動
$ sudo mv mattermost /opt

# ユーザーがアップロードしたファイルやイメージの格納先ストレージディレクトリ作成
$ sudo mkdir /opt/mattermost/data

# Mattermostを実行するユーザーとグループを作成し所有権、アクセス権を設定する
$ sudo useradd --system --user-group mattermost
$ sudo chown -R mattermost:mattermost /opt/mattermost
$ sudo chmod -R g+w /opt/mattermost
データベース接続設定
#!/bin/sh
# エディタは任意
$ sudo nano /opt/mattermost/config/config.json

[config.json]

"SqlSettings": {
    "DriverName": "mysql",
    "DataSource": "mmuser:{パスワード}@tcp({IPアドレス}:3306)/mattermost?charset=utf8mb4,utf8&readTimeout=30s&writeTimeout=30s"
}
Mattermost起動
#!/bin/sh
$ cd /opt/mattermost/bin

# 起動確認(正常そうならCtrl+Cで終了)
$ sudo -u mattermost ./platform

$ sudo touch /etc/systemd/system/mattermost.service
$ sudo nano /etc/systemd/system/mattermost.service

[majttermost.service]

 [Unit]
 Description=Mattermost
 After=syslog.target network.target mysqld.service

 [Service]
 Type=simple
 WorkingDirectory=/opt/mattermost
 User=mattermost
 ExecStart=/opt/mattermost/bin/platform
 PIDFile=/var/spool/mattermost/pid/master.pid
 LimitNOFILE=49152

 [Install]
 WantedBy=multi-user.target
#!/bin/sh
$ sudo chmod 664 /etc/systemd/system/mattermost.service
$ sudo systemctl daemon-reload
$ sudo chkconfig mattermost on
$ sudo systemctl enable mattermost

$ sudo systemctl start mattermost

# 起動確認(それっぽいHTMLが表示されたらOK)
$ curl http://{IPアドレス}:8065

http://{IPアドレス}:8065にアクセスしてWEBから設定
1. ユーザー作成
1. サイトURLの設定(DNSの設定するまではIPアドレス)
1. 言語の設定
1. SMTP設定
1. ファイル共有機能を無効化(任意)

#!/bin/sh
# リスタート
$ sudo systemctl restart mattermost

Nginxインストール

#!/bin/sh
$ sudo touch /etc/yum.repos.d/nginx.repo
$ sudo nano /etc/yum.repos.d/nginx.repo

[nginx.repo]

[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/rhel/7/$basearch/
gpgcheck=0
enabled=1
#!/bin/sh
$ sudo yum install nginx.x86_64
$ sudo systemctl start nginx
$ sudo systemctl enable nginx

# 確認(Welcome NginxみたいなタイトルのHTMLだったらOK)
$ curl http://localhost
プロキシ設定
#!/bin/sh
$ sudo mkdir /etc/nginx/sites-available
$ sudo mkdir /etc/nginx/sites-enabled

$ sudo nano /etc/nginx/nginx.conf

[nginx.conf]

# コメントアウトする
#include /etc/nginx/conf.d/*.conf;

# 追加する
include /etc/nginx/sites-enabled/*;
#!/bin/sh
$ sudo touch /etc/nginx/sites-available/mattermost
$ sudo nano /etc/nginx/sites-available/mattermost

[mattermost]

upstream backend {
   server {IPアドレス}:8065;
}

proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=mattermost_cache:10m max_size=3g inactive=120m use_temp_path=off;

server {
   listen 80;
   server_name    {HOST名};

   location ~ /api/v[0-9]+/(users/)?websocket$ {
       proxy_set_header Upgrade $http_upgrade;
       proxy_set_header Connection "upgrade";
       client_max_body_size 50M;
       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_buffers 256 16k;
       proxy_buffer_size 16k;
       proxy_read_timeout 600s;
       proxy_pass http://backend;
   }

   location / {
       client_max_body_size 50M;
       proxy_set_header Connection "";
       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_buffers 256 16k;
       proxy_buffer_size 16k;
       proxy_read_timeout 600s;
       proxy_cache mattermost_cache;
       proxy_cache_revalidate on;
       proxy_cache_min_uses 2;
       proxy_cache_use_stale timeout;
       proxy_cache_lock on;
       proxy_pass http://backend;
   }
}
#!/bin/sh
$ sudo ln -s /etc/nginx/sites-available/mattermost /etc/nginx/sites-enabled/mattermost

リスタート
$ sudo systemctl restart nginx

確認
$ curl http://localhost

日本語の全文検索対応

参考
https://qiita.com/terukizm/items/b477943b63c66ab7d454

フォントを修正

参考

Mattermostで日本語フォントのスタイルを変更する方法

#!/bin/sh
$ sudo cd /opt/mattermost/client/
$ sudo cp -p root.html root.html.backup
$ sudo nano root.html

[root.html]

<!-- 以下を</head>の直前に追加 -->
<link rel="stylesheet" href="/static/custom.css" type="type/css" />
#!/bin/sh
sudo nano custom.css

[custom.css]

body {
    font-family: 'Hiragino Kaku Gothic ProN', 'ヒラギノ角ゴ ProN W3', Meiryo, メイリオ, Osaka, 'MS PGothic', arial, helvetica, sans-serif !important;
}

ファイアウォール設定

#!/bin/sh
$ sudo systemctl start firewalld

# 確認
$ sudo systemctl status firewalld
# ストップする場合
$ sudo systemctl stop firewalld

# 有効な設定確認
$ sudo firewall-cmd --list-services --zone=public  --permanent     

# ssh,mysql,httpを許可
$ sudo firewall-cmd --add-service=ssh --zone=public --permanent
$ sudo firewall-cmd --add-service=mysql --zone=public --permanent
$ sudo firewall-cmd --add-service=http --zone=public --permanent

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください