Pesquisa de site

Como instalar o Mattermost no RHEL 7.1


Introdução

Mattermost é uma alternativa ao Slack de nuvem privada e de código aberto. Um sistema de mensagens no local de trabalho para web, PCs e telefones, lançado sob a licença do MIT.
Em um tutorial anterior falamos sobre como instalá-lo no Ubuntu 16.04.
Agora, vamos ver como instalar e configurar o Mattermost em uma máquina RHEL 7.1 usando MySQL como banco de dados.

Instalar banco de dados

No servidor, baixe o MySQL 5.7 executando o seguinte comando:

wget http://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm

e instale o repositório yum desse arquivo com:

yum localinstall mysql57-community-release-el7-9.noarch.rpm

Em seguida, instale o MySQL:

yum install mysql-community-server

e iniciá-lo:

systemctl start mysqld

Após executar este comando pela primeira vez, o MySQL irá gerar uma senha temporária para a conta root. Para recuperá-lo, basta:

grep 'temporary password' /var/log/mysqld.log

Este comando produzirá algo assim:

2017-03-02T08:21:27.969295Z 1 [Note] A temporary password is generated for root@localhost: Ed4SxpDyuH(y

Altere a senha raiz. Primeiro, faça login como root:

mysql -u root -p

Digite a senha temporária.
A seguir, no shell do MySQL:

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'my_new_root_strong_password';
mysql> EXIT;

Configure o MySQL para iniciar automaticamente no momento da inicialização:

chkconfig mysqld on

Inicie o shell do MySQL novamente:

mysql -u root -p

Inserindo a nova senha root, crie um usuário para o Mattermost e um novo banco de dados:

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;

Instale o servidor Mattermost

Baixe a versão mais recente do Mattermost Server. Apenas por exemplo, no momento em que estamos escrevendo:

wget https://releases.mattermost.com/3.6.2/mattermost-3.6.2-linux-amd64.tar.gz

Extraia o arquivo e mova a pasta ‘mais importante’ para

/opt
tar xf *.gz
mv mattermost /opt/

Crie um diretório para arquivos de armazenamento:

mkdir /opt/mattermost/data

Certifique-se de que a unidade seja grande o suficiente para armazenar o número previsto de arquivos e imagens carregados que serão armazenados no

data

.
Em seguida, configure um usuário e um grupo, ambos chamados ‘mattermost’, e defina a propriedade e as permissões:

useradd --system --user-group mattermost
chown -R mattermost:mattermost /opt/mattermost
chmod -R g+w /opt/mattermost

Configure o driver do banco de dados através do

/opt/mattermost/config/config.json

arquivo. Nele, procure pelas linhas “DriverName” e “DataSource” e altere conforme a seguir:

"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 tudo funcionar, deverá gerar

 Server is listening on :8065

. Interrompa-o com CTRL+C.

Crie uma unidade systemd.

Crie um arquivo systemd para o Mattermost,

/etc/systemd/system/mattermost.service

e, nele, cole a seguinte configuração:

[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

Torne-o executável:

chmod 664 /etc/systemd/system/mattermost.service

E recarregue os serviços:

systemctl daemon-reload

Habilite o serviço Mattermost:

chkconfig mattermost on

E inicie com systemd:

systemctl start mattermost

Verifique se está rodando visitando a URL http://localhost:8065.

Instalar e configurar o NGINX

Instalação

Em um sistema de produção, use um servidor proxy na frente do Mattermost Server. Neste caso, NGINX.
Os principais benefícios de fazer isso são:

  • Rescisão SSL
  • Mapeamento de portas: 80 a: 8065
  • Redirecionamento HTTP para HTTPS
  • Logs de solicitação padrão

Para instalar o NGINX no RHEL 7.1, crie um arquivo de repositório yum,

/etc/yum.repos.d/nginx.repo

, com o seguinte conteúdo:

[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/rhel/7.1/$basearch/
gpgcheck=0
enabled=1

Salve, saia e instale o NGINX com yum:

yum install nginx.x86_64

Inicie o NGINX e teste-o:

systemctl start nginx
Configuração

Para configurar o NGINX como servidor proxy, crie o arquivo

/etc/nginx/sites-available/mattermost

e passado:

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;
   }
}

Remova o arquivo padrão existente habilitado para site com:

rm /etc/nginx/sites-enabled/default

e ative o Mattermost:

ln -s /etc/nginx/sites-available/mattermost /etc/nginx/sites-enabled/mattermost

Reinicie o NGINX:

systemctl restart nginx

Conclusões

Ao final deste processo, o servidor deverá estar instalado e funcionando. Com um navegador da web, acesse o URL http://mattermost.mydomain.com e continue a configurar o Mattermost inserindo um endereço de e-mail e criando uma conta.
Isso é tudo! O servidor está pronto para servir como seu sistema de mensagens!