GitLab 安装配置 - 狂飙
git.company.com
Jira 安装配置 - 狂飙
jira.company.com
Jenkins 安装配置 - 狂飙
ci.company.com
Mattermost 安装配置 - 狂飙
mattermost.company.com
这一系列文章中的软件是在同一台机器上安装配置的,完整地记录了配置过程。解决了同时部署各种服务之间可能会产生的问题,最终将各种服务整合到一起。每个服务都配置使用域名访问,便于使用。
账号系统未使用 LDAP,因此 Jira 与 GitLab 账号是独立的,Jenkins 与 Mattermost 使用 GitLab 账号登录。
RTX 腾迅出品,2015年之后就没有更新过,RTX for mac 经常崩溃、掉线,而且无法获取组织架构信息,导致无法找人。
钉钉 阿里出品,可以打卡、考勤,官方还出了考勤机,与钉钉自动连接。
BearyChat 比较卡顿,搜索功能较差。
CentOS 7.6 1810
MySQL 5.7.25
Mattermost 5.8.0 2019/02/16
官方提供了完整的安装流程,可以根据自己的实际情况决定如何安装。本文章记录了在实际环境中安装的全过程,仅供参考。
Installing Mattermost on RHEL 7.1 — Mattermost 5.8 documentation
MySQL
rpm -ivh https://repo.mysql.com/mysql57-community-release-el7-11.noarch.rpm
yum install -y mysql-server
systemctl enable mysqld
systemctl start mysqld
设置 root 密码
sudo grep 'temporary password' /var/log/mysqld.log
mysql -uroot -p
# 输入上面提示的密码
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'yourmysqlpassword';
MySQL :: A Quick Guide to Using the MySQL Yum Repository
注意:密码必须设置地复杂,否则会提示 ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
创建 Mattermost 数据库
mysql -u root -p
mysql> create user 'mmuser'@'%' identified by 'yourmattermostpassword';
mysql> create database mattermost;
mysql> flush privileges;
Mattermost 安装
wget https://releases.mattermost.com/5.8.0/mattermost-5.8.0-linux-amd64.tar.gz
tar -xvzf mattermost-5.8.0-linux-amd64.tar.gz
sudo mv mattermost /opt
mkdir /data/mattermost
sudo useradd --system --user-group mattermost
sudo chown -R mattermost:mattermost /opt/mattermost
sudo chmod -R g+w /opt/mattermost
配置 MySQL 以及根据需要决定是否修改文件保存目录
vi /opt/mattermost/config/config.json
"SqlSettings": {
"DriverName": "mysql",
"DataSource": "mmuser:yourmattermostpassword@tcp(127.0.0.1:3306)/mattermost?charset=utf8mb4,utf8&readTimeout=30s&writeTimeout=30s",
"FileSettings": {
"EnableFileAttachments": true,
"EnableMobileUpload": true,
"EnableMobileDownload": true,
"MaxFileSize": 52428800,
"DriverName": "local",
"Directory": "/data/mattermost/",
如果不使用默认的 8065 端口访问,而是使用后续介绍的 Nginx 绑定域名+80端口访问的话,此步可以跳过。
firewall-cmd --permanent --new-service=mattermost
firewall-cmd --permanent --service=mattermost --set-short="Mattermost Service Ports"
firewall-cmd --permanent --service=mattermost --set-description="Mattermost service firewalld port exceptions"
firewall-cmd --permanent --service=mattermost --add-port=8065/tcp
firewall-cmd --zone=public --add-service=mattermost --permanent
firewall-cmd --reload
cd /opt/mattermost
sudo -u mattermost ./bin/mattermost
等待一会儿出现 Server is listening on :8065
字样后就可以按 Ctrl+C 停止运行,继续后面的操作。
这步最主要的作用是确定前面的配置是否正确,如果有异常,可以根据实际提示去修改配置。
sudo vi /etc/systemd/system/mattermost.service
[Unit]
Description=Mattermost
After=syslog.target network.target mysqld.service
[Service]
Type=notify
WorkingDirectory=/opt/mattermost
User=mattermost
ExecStart=/opt/mattermost/bin/mattermost
PIDFile=/var/spool/mattermost/pid/master.pid
TimeoutStartSec=3600
LimitNOFILE=49152
[Install]
WantedBy=multi-user.target
配置自动启动
sudo chmod 664 /etc/systemd/system/mattermost.service
sudo systemctl daemon-reload
sudo systemctl enable mattermost
sudo systemctl start mattermost
增加 A 记录 mattermost.company.com 这样访问时 URL 中不需要增加端口
Nginx
将 server
替换成 127.0.0.1
与 server_name
替换为域名
vi /etc/nginx/conf.d/mattermost.conf
upstream backend {
server 127.0.0.1:8065;
keepalive 32;
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 mattermost.company.com;
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;
client_body_timeout 60;
send_timeout 300;
lingering_timeout 5;
proxy_connect_timeout 90;
proxy_send_timeout 300;
proxy_read_timeout 90s;
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_http_version 1.1;
proxy_pass http://backend;
systemctl restart nginx
经过这样配置后就可以使用 http://mattermost.company.com 访问。
Mattermost 站点网址
打开 系统控制台 - Mattermost
将 站点网址
修改为 http://mattermost.company.com
,然后保存
执行 systemctl restart mattermost
重启服务
GitLab OAuth 登录
使用 GitLab 登录可以减少需要注册的账号数量,而且方便管理。
GitLab
在 GitLab 中添加应用时,一定要注意,URI 要添加两行
http://mattermost.company.com/login/gitlab/complete
http://mattermost.company.com/signup/gitlab/complete
其次范围选择 api
,否则无法登录。
Mattermost
将上一步产生的应用程序 ID 与密钥填写即可,然后输入 GitLab 地址,保存后注销后在登录界面点击 GitLab Login
按钮登录测试。
GitLab Single Sign-On — Mattermost 5.8 documentation
可以在公司使用的企业邮箱内创建单独的管理账号,并且赋予多个别名,分别用于不同用途,如 Jenkins、GitLab、Jira、Mattermost 等等。
然后查找企业邮箱对应的 SMTP 发件服务器客户端设置,填写到 系统控制台 - Mattermost,最后使用 测试连接
按钮发送测试邮件即可。
注意:强烈建议使用 TLS 加密连接方式,增强安全性。
WebHooks 通知
Mattermost 中增加 Jenkins 用户,用于发送 Jenkins 打包通知。
需要将用户角色从成员改为团队管理员,这样才可以使用集成中的 WebHooks 功能。
Incoming Webhooks — Mattermost 5.8 documentation
Incoming Webhooks - Developers
Convert cURL command syntax to Python requests, Node.js, R, PHP, Strest, Go, JSON, and Rust code
官方有 Android iOS macOS Windows Linux 客户端,覆盖全面。
Download - Mattermost Private Cloud Messaging
打开客户端只需要填写服务器地址,然后使用 GitLab 登录即可。
iOS 客户端登录后可以接收到 Mattermost 发送的消息,即使应用不在前台也不在内网也会收到消息对应的 iOS 通知,因为默认使用 Mattermost 官方的外网推送服务器发送消息。
每个团队最多用户数建议根据实际情况由 50 改为更高的的 100
成员和团队 - 系统控制台 - Mattermost
建议 团队队友的名字显示:
改为 若存在昵称显示昵称,否则显示姓名
,因为默认显示全名的话是按照名在前姓在后显示的,不符合国人习惯。这样需要所有人将昵称改为姓在前名在后的全名。
成员和团队 - 系统控制台 - Mattermost
关闭邮件注册功能
邮件验证 - 系统控制台 - Mattermost