Amazon Linux に Mattermost 4.3.0 をインストールする
以前に CentOS7 に Mattermost 4.2.0 をインストールするというメモを書きました。 今回は Amazon Linux に Mattermost 4.3.0 をインストールしてみます。 概ね手順は同じですが、Amazon Linux が CentOS6 ベースである為、systemd ベースでは無い点で多少、設定に差があります。
MariaDB のインストール
Mattermost のバックエンドになる MariaDB をインストールします。 まず、GPG-KEY をインストールします。
| rpm --import https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
|
/etc/yum.repos.d/mariadb.repo
というファイルを以下の内容で新規作成します。
| [mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.3.2/centos6-amd64/
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
|
インストールします。
| yum -y install MariaDB-client MariaDB-server
|
MariaDB (起動スクリプト名は mysql
)を起動します。
インストール直後の状態で自動起動設定になっていました。
| # chkconfig --list | grep mysql
mysql 0:off 1:off 2:on 3:on 4:on 5:on 6:off
|
MariaDB の初期設定
mysql_secure_installation
で初期設定を行い、不要なデータベースや anonymous ユーザを削除しておきます。
| mysql_secure_installation
|
実行例は以下の通りです。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56 | # mysql_secure_installation
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!
In order to log into MariaDB to secure it, we'll need the current
password for the root user. If you've just installed MariaDB, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.
Enter current password for root (enter for none):
OK, successfully used password, moving on...
Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.
Set root password? [Y/n] n
... skipping.
By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them. This is intended only for testing, and to make the installation
go a bit smoother. You should remove them before moving into a
production environment.
Remove anonymous users? [Y/n] Y
... Success!
Normally, root should only be allowed to connect from 'localhost'. This
ensures that someone cannot guess at the root password from the network.
Disallow root login remotely? [Y/n] Y
... Success!
By default, MariaDB comes with a database named 'test' that anyone can
access. This is also intended only for testing, and should be removed
before moving into a production environment.
Remove test database and access to it? [Y/n] Y
- Dropping test database...
... Success!
- Removing privileges on test database...
... Success!
Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.
Reload privilege tables now? [Y/n] Y
... Success!
Cleaning up...
All done! If you've completed all of the above steps, your MariaDB
installation should now be secure.
Thanks for using MariaDB!
|
MariaDB 上にデータベースやユーザを作成します。
| mysql -u root
CREATE DATABASE mattermost;
CREATE USER 'mmuser'@'localhost' IDENTIFIED BY 'mmuser-password';
GRANT ALL PRIVILEGES ON mattermost.* TO 'mmuser'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;
quit
|
Mattermost のインストール
ダウンロードページから Matttermost 最新版のソースコードをダウンロードします。 現時点の最新版は 4.3.0 でした。 ダウンロードが完了したら /opt 配下に展開します。 更に、データ用のディレクトリとして /opt/mattermost/data
も作成しておきます。
| curl -L -O https://releases.mattermost.com/4.3.0/mattermost-4.3.0-linux-amd64.tar.gz
tar zxvf mattermost-4.3.0-linux-amd64.tar.gz -C /opt
mkdir /opt/mattermost/data
|
Mattermost 実行用のシステムアカウントを作成します。 作成したユーザに必要な権限も付与します。
| useradd --system --user-group mattermost
chown -R mattermost:mattermost /opt/mattermost
chmod -R g+w /opt/mattermost
|
設定ファイルは /opt/mattermost/config/config.json
にあります。 SqlSettings
部分はデフォルトで以下のようになっているはずです。
| "SqlSettings": {
"DriverName": "mysql",
"DataSource": "mmuser:mostest@tcp(dockerhost:3306)/mattermost_test?charset=utf8mb4,utf8&readTimeout=30s&writeTimeout=30s",
"DataSourceReplicas": [],
"DataSourceSearchReplicas": [],
"MaxIdleConns": 20,
"MaxOpenConns": 300,
"Trace": false,
"AtRestEncryptKey": "",
"QueryTimeout": 30
},
|
DataSource
を MariaDB 上に作成したデータベース名・ユーザ名・パスワードに合わせて修正します。 今回は以下のようにしました
| "DataSource": "mmuser:mmuser-password@tcp(127.0.0.1:3306)/mattermost?charset=utf8mb4,utf8&readTimeout=30s&writeTimeout=30s",
|
Mattermost の起動用スクリプトを作成します。 以下の内容で /etc/init.d/mattermost
を新規作成します。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42 | #!/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
|
起動スクリプトに実行権限を付与しておきます。
| chmod 755 /etc/init.d/mattermost
|
Mattermost が自動起動されるように設定しておきます。
| chkconfig --add mattermost
chkconfig mattermost on
|
Mattermost を起動します。
| /etc/init.d/mattermost start
|
Mattermost は初期設定で標準出力へのログ出力が有効になっている為、画面上に数行のログが表示されるはずです。 実行例は以下の通りです。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 | # /etc/init.d/mattermost start
service mattermost [start]
# [2017/10/22 00:57:56 JST] [INFO] Loaded system translations for 'en' from '/opt/mattermost/i18n/en.json'
[2017/10/22 00:57:56 JST] [INFO] Current version is 4.3.0 (4.3.0/Fri Oct 13 22:06:53 UTC 2017/8966452d1183e94fecc373b9d08c65a0573cbbc6/729b149c2a5c82c230e302f0963f6161ca7c652e)
[2017/10/22 00:57:56 JST] [INFO] Enterprise Enabled: true
[2017/10/22 00:57:56 JST] [INFO] Current working directory is /opt/mattermost/bin
[2017/10/22 00:57:56 JST] [INFO] Loaded config file from /opt/mattermost/config/config.json
[2017/10/22 00:57:56 JST] [INFO] Able to write files to local storage.
[2017/10/22 00:57:56 JST] [INFO] Server is initializing...
[2017/10/22 00:57:56 JST] [INFO] Pinging SQL master database
[2017/10/22 00:57:56 JST] [INFO] The database schema has been set to version 4.3.0
[2017/10/22 00:57:57 JST] [INFO] License key from https://mattermost.com required to unlock enterprise features.
[2017/10/22 00:57:57 JST] [INFO] Initializing plugin: ldapextras
[2017/10/22 00:57:57 JST] [INFO] Initializing plugin: jira
[2017/10/22 00:57:57 JST] [INFO] Initializing job API routes
[2017/10/22 00:57:57 JST] [INFO] API version 3 is scheduled for deprecation. Please see https://api.mattermost.com for details.
[2017/10/22 00:57:57 JST] [INFO] Starting 2 websocket hubs
[2017/10/22 00:57:58 JST] [INFO] Starting Server...
[2017/10/22 00:57:58 JST] [INFO] Server is listening on :8065
[2017/10/22 00:57:58 JST] [INFO] Starting workers
[2017/10/22 00:57:58 JST] [INFO] Starting schedulers.
|
Mattermost はデフォルトで 8,065/TCP を Listen しますので、ブラウザで http://xxx.xxx.xxx.xxx:8065/ にアクセスします。
Mattermost を 443/TCP で Listen 出来るようにする
Reverse Proxy を経由させずに直接、Mattermost を 80/TCP や 443/TCP で Listen させようとするとエラーになります。 Well Known なポートを Listen 出来るようにする為、Mattermost の実体である platform
ファイルに対して setcap
で設定を行います。
| setcap cap_net_bind_service=+ep /opt/mattermost/bin/platform
|
これで Mattermost を 443/TCP で Listen させてもエラーが出なくなります。