Come installare Mattermost su RHEL 7.1
introduzione
Mattermost è un cloud privato open source alternativo a Slack. Un sistema di messaggistica aziendale per web, PC e telefoni, rilasciato sotto licenza MIT.
In un tutorial precedente abbiamo parlato di come installarlo su Ubuntu 16.04.
Ora vediamo come installare e configurare Mattermost su una macchina RHEL 7.1 utilizzando MySQL come database.
Installa banca dati
Sul server scaricare MySQL 5.7 eseguendo il seguente comando:
wget http://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm
e installa il repository yum da quel file con:
yum localinstall mysql57-community-release-el7-9.noarch.rpm
Successivamente, installa MySQL:
yum install mysql-community-server
e avviarlo:
systemctl start mysqld
Dopo aver eseguito questo comando per la prima volta, MySQL genererà una password temporanea per l'account root. Per recuperarlo basta:
grep 'temporary password' /var/log/mysqld.log
Questo comando restituirà qualcosa del genere:
2017-03-02T08:21:27.969295Z 1 [Note] A temporary password is generated for root@localhost: Ed4SxpDyuH(y
Cambia la password di root. Per prima cosa accedi come root:
mysql -u root -p
Inserisci la password temporanea.
Successivamente, nella shell MySQL:
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'my_new_root_strong_password';
mysql> EXIT;
Imposta MySQL per l'avvio automatico all'avvio:
chkconfig mysqld on
Avvia nuovamente la shell MySQL:
mysql -u root -p
Inserendo la nuova password di root, crea un utente per Mattermost e un nuovo database:
mysql> CREATE USER 'mmuser'@'localhost' IDENTIFIED BY 'mmuser_strong_password';
mysql> CREATE DATABASE mattermostdb;
mysql> GRANT ALL PRIVILEGES ON mattermostdb.* TO 'mmuser'@'localhost';
mysql> FLUSH PRIVILEGES;
mysql> EXIT;
Installa Mattermost Server
Scarica l'ultima versione di Mattermost Server. Solo ad esempio, nel momento in cui scriviamo:
wget https://releases.mattermost.com/3.6.2/mattermost-3.6.2-linux-amd64.tar.gz
Estrai l'archivio e sposta la cartella "più importante" in
/opt
tar xf *.gz
mv mattermost /opt/
Crea una directory per i file di archiviazione:
mkdir /opt/mattermost/data
Assicurati che l'unità sia sufficientemente grande da contenere il numero previsto di file e immagini caricati su cui verranno archiviati
data
.
Successivamente, configura un utente e un gruppo, entrambi denominati "mattermost", e imposta la proprietà e le autorizzazioni:
useradd --system --user-group mattermost
chown -R mattermost:mattermost /opt/mattermost
chmod -R g+w /opt/mattermost
Configurare il driver del database tramite
/opt/mattermost/config/config.json
file. In esso, cerca le righe "DriverName" e "DataSource" e modifica come segue:
"DriverName": "mysql"
"DataSource": "mmuser:@tcp(localhost:3306)/mattermost?charset=utf8"
Save, exit, and test the Mattermost Server with the following command:
sudo -u mattermost /opt/mattermost/bin/platform
Se tutto funziona, dovrebbe essere visualizzato
Server is listening on :8065
. Interrompilo con CTRL+C.
Crea un'unità systemd.
Crea un file systemd per Mattermost,
/etc/systemd/system/mattermost.service
e, in esso, incolla la seguente configurazione:
[Unit]
Description=Mattermost
After=syslog.target network.target postgresql-9.4.service
[Service]
Type=simple
WorkingDirectory=/opt/mattermost/bin
User=mattermost
ExecStart=/opt/mattermost/bin/platform
PIDFile=/var/spool/mattermost/pid/master.pid
LimitNOFILE=49152
[Install]
WantedBy=multi-user.target
Rendilo eseguibile:
chmod 664 /etc/systemd/system/mattermost.service
E ricaricare i servizi:
systemctl daemon-reload
Abilita il servizio Mattermost:
chkconfig mattermost on
E avvialo con systemd:
systemctl start mattermost
Controlla se è in esecuzione visitando l'URL http://localhost:8065.
Installa e configura NGINX
Installazione
In un sistema di produzione, utilizzare un server proxy davanti a Mattermost Server. In questo caso, NGINX.
I principali vantaggi di questa operazione sono:
- Terminazione SSL
- Mappatura delle porte: da 80 a: 8065
- Reindirizzamento da HTTP a HTTPS
- Registri delle richieste standard
Per installare NGINX su RHEL 7.1, crea un file repository yum,
/etc/yum.repos.d/nginx.repo
, con il seguente contenuto:
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/rhel/7.1/$basearch/
gpgcheck=0
enabled=1
Salva, esci e installa NGINX con yum:
yum install nginx.x86_64
Avvia NGINX e testalo:
systemctl start nginx
Configurazione
Per configurare NGINX come server proxy, creare il file
/etc/nginx/sites-available/mattermost
e passato:
upstream backend {
server localhost: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 mattermost.mydomain.com;
location /api/v3/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;
}
}
Rimuovere il file abilitato per il sito predefinito esistente con:
rm /etc/nginx/sites-enabled/default
e abilitare Mattermost:
ln -s /etc/nginx/sites-available/mattermost /etc/nginx/sites-enabled/mattermost
Riavvia NGINX:
systemctl restart nginx
Conclusioni
Al termine di questo processo, il server dovrebbe essere attivo e funzionante. Con un browser web vai all'URL http://mattermost.mydomain.com e continua a configurare Mattermost inserendo un indirizzo email e creando un account.
È tutto! Il server è pronto per fungere da sistema di messaggistica!