Mattermost 是一个企业级即时消息平台,是一个开源自托管 Slack 替代品。它是用 Golang 和 React 编写的,可以使用 MySQL 或 PostgreSQL 作为数据库后端。 Mattermost 将您的所有团队沟通集中到一处,并提供各种功能,包括文件共享、一对一和群组消息传递、自定义表情符号、视频通话等。
在本教程中,我们将在 Ubuntu 18.04 服务器上安装 Mattermost 并配置Nginx 作为 SSL 反向代理
.
先决条件#
在继续本教程之前,请确保您已满足以下先决条件:
- 您登录的身份为具有 sudo 权限的用户
.
- 您有一个指向您的服务器 IP 地址的域名。在本文中我们将使用
example.com
.
- 你已经安装了Nginx,如果没有安装请检查this
guide.
- 您已为您的域安装了 SSL 证书。您可以按照以下步骤安装免费的 Let’s Encrypt SSL 证书this
guide.
创建MySQL数据库#
我们将使用 MySQL 作为 Mattermost 的数据库。如果您的服务器上没有安装 MySQL 或 MariaDB,您可以按照以下方式安装这些说明
.
登录 MySQL shell:
mysql -u root
为我们的 Mattermost 安装创建一个新的数据库和用户:
CREATE DATABASE mattermost;
GRANT ALL ON mattermost.* TO mattermost@localhost IDENTIFIED BY 'P4ssvv0rD';
创建新的系统用户#
创建一个新用户和组来运行我们的 Mattermost 实例。我们将为用户命名mattermost
:
sudo useradd -U -M -d /opt/mattermost mattermost
安装 Mattermost 服务器#
在撰写本文时,Mattermost 的最新稳定版本是版本 5.1.0。下载包含以下内容的存档卷曲命令
:
sudo curl -L https://releases.mattermost.com/5.1.0/mattermost-5.1.0-linux-amd64.tar.gz -o /tmp/mattermost.tar.gz
下载完成后,解压存档并将其移至/opt
目录
sudo tar zxf /tmp/mattermost.tar.gz -C /opt
创建文件的存储目录:
sudo mkdir -p /opt/mattermost/data
更改目录所有权
to the mattermost
user:
sudo chown -R mattermost: /opt/mattermost
打开/opt/mattermost/config/config.json
文件,将数据库驱动程序设置为mysql
并输入数据库信息:
/opt/mattermost/config/config.json
"SqlSettings": {
"DriverName": "mysql",
"DataSource": "mattermost:P4ssvv0rD@tcp(localhost:3306)/mattermost?charset=utf8mb4,utf8&readTimeout=30s&writeTimeout=30s",
为了确保我们的 Mattermost 实例按预期工作,我们将测试 Mattermost 服务器。更改为/opt/mattermost
目录并使用以下命令启动服务器:
cd /opt/mattermost
sudo -u mattermost bin/mattermost
如果一切正常,服务器将启动,输出将如下所示:
{"level":"info","ts":1532546921.941638,"caller":"app/server.go:115","msg":"Starting Server..."}
{"level":"info","ts":1532546921.9421031,"caller":"app/server.go:154","msg":"Server is listening on [::]:8065"}
{"level":"info","ts":1532546921.9541554,"caller":"app/web_hub.go:75","msg":"Starting 2 websocket hubs"}
我们现在可以停止 Mattermost 服务器CTRL+C
并继续执行后续步骤。
创建一个 Systemd 单元#
为了将 Mattermost 实例作为服务运行,我们将创建一个mattermost.service
单元文件中的/etc/systemd/system/
目录。
打开文本编辑器并创建以下文件:
/etc/systemd/system/mattermost.service
[Unit]
Description=Mattermost
After=network.target
After=mysql.service
Requires=mysql.service
[Service]
Type=notify
ExecStart=/opt/mattermost/bin/mattermost
TimeoutStartSec=3600
Restart=always
RestartSec=10
WorkingDirectory=/opt/mattermost
User=mattermost
Group=mattermost
LimitNOFILE=49152
[Install]
WantedBy=mysql.service
通知 systemd 我们已经创建了一个新的单元文件,并使用以下命令启动 Mattermost 服务:
sudo systemctl daemon-reload
sudo systemctl start mattermost
我们现在可以通过以下方式检查服务状态:
sudo systemctl status mattermost
● mattermost.service - Mattermost
Loaded: loaded (/etc/systemd/system/mattermost.service; disabled; ven
Active: active (running) since Wed 2018-07-25 18:39:05 UTC; 41s ago
Main PID: 3091 (mattermost)
Tasks: 18 (limit: 507)
CGroup: /system.slice/mattermost.service
├─3091 /opt/mattermost/bin/mattermost
如果没有错误,请启用 Mattermost 服务以在启动时自动启动:
sudo systemctl enable mattermost
使用 Nginx 设置反向代理#
如果您关注我们的如何在 Ubuntu 18.04 上安装 Nginx
and 如何在 Ubuntu 18.04 上使用 Let’s Encrypt 保护 Nginx指南中您应该已经安装了 Nginx 并配置了 SSL 证书。
现在我们需要为 Mattermost 实例设置一个新的服务器块。打开文本编辑器并创建以下文件:
/etc/nginx/conf.d/example.com.conf
proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=mattermost_cache:10m max_size=3g inactive=120m use_temp_path=off;
upstream mattermost_backend {
server 127.0.0.1:8065;
}
server {
listen 80;
server_name example.com www.example.com;
include snippets/letsencrypt.conf;
return 301 https://example.com$request_uri;
}
server {
listen 443 ssl http2;
server_name www.example.com;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem;
include snippets/ssl.conf;
return 301 https://example.com$request_uri;
}
server {
listen 443 ssl http2;
server_name example.com;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem;
include snippets/ssl.conf;
access_log /var/log/nginx/example.com-access.log;
error_log /var/log/nginx/example.com-error.log;
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://mattermost_backend;
}
location / {
proxy_http_version 1.1;
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://mattermost_backend;
}
}
重新加载Nginx服务使更改生效:
sudo systemctl reload nginx
配置 Mattermost#
打开浏览器,输入您的域名,您将被重定向到注册页面。
输入您的电子邮件,选择用户名和密码,然后单击Create Account
按钮创建您的第一个帐户。
系统中第一个创建的用户将具有管理员权限。
在下一步中,配置向导将要求您创建一个新团队。
点击Create a new team
链接,输入您的第一个团队,然后单击Next
button.
在下一步中,系统会要求您选择新团队的网址:
单击Finish
按钮,您将被重定向到 Mattermost 仪表板,并以管理员身份登录。
打开系统控制台,单击导航面板顶部的用户名,然后在打开的新菜单中单击System Console
link.
通过转至设置常规 → 配置来设置站点 URL。
要启用电子邮件通知,请转至通知 → 电子邮件,更改Enable Email Notifications
价值来自false
to true
并输入您的 SMTP 参数。
您可以使用任何流行的事务性电子邮件服务,例如 SendinBlue、SendGrid、Amazon SES、Mandrill、Mailgun、Mailjet 和 Postmark,也可以按照以下方式设置您自己的邮件服务器this教程。
最后我们需要重新启动 Mattermost 服务以使更改生效:
sudo systemctl restart mattermost
结论#
您已在 Ubuntu 18.04 服务器上成功安装 Mattermost 并将 Nginx 设置为反向代理。您现在可以开始使用 Mattermost 与您的团队协作。
如果您在安装时遇到任何问题,请随时发表评论。