在雲伺服器安裝 Mattermost¶
Mattermost 是開放原始碼的軟體,是企業內部溝通的軟體平台。軟體設計的原則就是企業內部溝通與協作使用。
此教學文章將會引導您安裝並擁有自己的 Mattermost。
備註
此教學將會使用到下列軟體:
Debian 10.3
Postgresql
Mattermost 5.21
Nginx 1.14.2
根據您使用的版本,步驟可能會略為不同。
步驟 1:安裝相依套件與準備環境¶
我們假設您已經有 建立一台雲伺服器。
使用 SSH 登入主機:
$ ssh admin@1.2.3.4
切換到 root 身份,並確認系統已經是最新的版本:
$ su
# apt update
# apt upgrade
之後,請安裝 postgresql、postgresql-contrib、sudo 與 nginx,都是 Mattermost 需要使用的套件:
# apt-get install postgresql postgresql-contrib sudo nginx
同時也建議另外建立一個使用者來執行 Mattermost:
# /sbin/useradd --system --user-group mattermost
伺服器已設定完畢,接者請建立資料庫。
步驟 2:建立資料庫¶
在本教學中,我們使用 Postgresql 資料庫。然而,您可以使用 MySQL 資料庫。
切換到使用者 postgres 並執行 psql
指令:
# sudo --login --user postgres
$ psql
建立 mattermost
資料庫,資料庫帳號 mmuser
,密碼 mmuser-password
,請修改成您的專屬密碼。
postgres=# CREATE DATABASE mattermost;
postgres=# CREATE USER mmuser WITH PASSWORD 'mmuser-password';
postgres=# GRANT ALL PRIVILEGES ON DATABASE mattermost to mmuser;
postgres=# \q
postgres=# exit
資料庫建立完成,現在只需要安裝 Mattermost 即可,記得申請一個 網域名稱 或建立一個子域名。
步驟 3:安裝與設定 Mattermost¶
下載最新版的 Mattermost:
# wget https://releases.mattermost.com/5.21.0/mattermost-5.21.0-linux-amd64.tar.gz
解壓縮至 /opt/
目錄:
# tar -xvzf mattermost-5.21.0-linux-amd64.tar.gz
# mv mattermost /opt
建立 /opt/mattermost/data
目錄並且設定目錄權限給我們之前建立的使用者:
# mkdir /opt/mattermost/data
# chown -R mattermost:mattermost /opt/mattermost
編輯 /opt/mattermost/config/config.json
設定檔,設定資料庫名稱與資料庫使用者與密碼。
取代此設定:
"DriverName": "mysql",
取代此設定:
"DriverName": "postgres",
取代此設定:
"DataSource": "mmuser:mostest@tcp(localhost:3306)/mattermost_test?charset=utf8mb4,utf8\u0026readTimeout=30s\u0026writeTimeout=30s",
取代此設定:
"DataSource": "postgres://mmuser:<mmuser-password>@<host-name-or-IP>:5432/mattermost?sslmode=disable&connect_timeout=10",
切換到 /opt/mattermost
目錄,測試執行 Mattermost:
# cd /opt/mattermost
# sudo -u mattermost ./bin/mattermost
如果設定都正確,您應該可以看到類似的訊息:
{"level":"info","ts":1585299574.1884124,"caller":"app/server.go:538","msg":"Server is listening on [::]:8065","address":"[::]:8065"}
Mattermost 執行後會使用埠 8065。
接者我們需建立 Mattermost 的系統檔,這樣就可以更容易的管理 Mattermost:
# touch /lib/systemd/system/mattermost.service
# vim /lib/systemd/system/mattermost.service
將下列的內容複製到上述建立的系統檔中:
[Unit]
Description=Mattermost
After=network.target
After=postgresql.service
Requires=postgresql.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=multi-user.target
重新載入系統檔並測試:
# systemctl daemon-reload
# systemctl status mattermost.service
# systemctl start mattermost.service
檢查 Mattermost 是否建立在埠 8065:
# curl http://localhost:8065
測試完成後,啟動 Mattermost 系統檔,在您的伺服器開啟時就會自動啟動:
systemctl enable mattermost.service
步驟 4:設定 Nginx¶
我們假設您已經有 SSL 憑證,所以我們會開始教您設定 Nginx。
需使用 root 身份,建立檔案:
# vim /etc/nginx/sites-available/mattermost.example.com.conf
將下列設定複製到設定檔中,並且將 mattermost.example.com
變更為您的實際網址,與 SSL 憑證的路徑:
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 default_server;
server_name mattermost.example.com;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl http2;
server_name mattermost.example.com;
ssl on;
ssl_certificate /path/to/fullchain.cer;
ssl_certificate_key /path/to/mattermost.example.com.key ;
ssl_dhparam /etc/ssl/certs/dhparam.pem;
ssl_session_cache shared:SSL:10m;
ssl_session_tickets off;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ecdh_curve sect571r1:secp521r1:brainpoolP512r1:secp384r1:prime256v1:X25519;
ssl_ciphers EECDH+AESGCM:EECDH+CHACHA20:EECDH+AES:TLS13-CHACHA20-POLY1305-SHA256:TLS13-AES-256-GCM-SHA384:TLS13-AES-128-GCM-SHA256;
ssl_prefer_server_ciphers on;
ssl_session_timeout 1d;
ssl_stapling on;
ssl_stapling_verify on;
add_header Strict-Transport-Security max-age=15768000;
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;
}
}
現在,啟用網站:
# ln -s /etc/nginx/sites-available/mattermost.example.com.conf /etc/nginx/sites-enabled/mattermost.example.com
確認設定檔正確:
nginx -t
重新啟動 Nginx:
# systemctl restart nginx
若都正常順利啟動,您就可以使用您的網址登入 Mattermost。首次登入時請先建立使用者帳戶。
參考資料: