GNU/Linux >> Tutoriels Linux >  >> Cent OS

Comment déployer Mattermost sur CentOS 7

Mattermost est une plate-forme de messagerie instantanée open source, une alternative Slack auto-hébergée. Il est écrit en Golang et React et peut utiliser MySQL ou PostgreSQL comme backend de base de données. Mattermost rassemble toutes les communications de votre équipe en un seul endroit et offre diverses fonctionnalités, notamment le partage de fichiers, la messagerie individuelle et de groupe, les emojis personnalisés, les appels vidéo et plus encore. Dans ce tutoriel, nous allons vous montrer comment déployer Mattermost sur un serveur CentOS 7 et configurer Nginx en tant que proxy inverse SSL.

Prérequis #

Assurez-vous que vous avez satisfait aux prérequis suivants avant de poursuivre ce didacticiel :

  • Vous êtes connecté en tant qu'utilisateur avec des privilèges sudo.
  • Vous avez un nom de domaine pointant vers l'adresse IP de votre serveur. Nous utiliserons linuxize-test.com .
  • Vous avez installé Nginx, sinon consultez ce guide.
  • Vous avez installé un certificat SSL pour votre domaine. Vous pouvez installer un certificat SSL Let's Encrypt gratuit en suivant ce guide.

Créer la base de données MySQL #

Nous utiliserons MariaDB 10.3 comme back-end de base de données. Mattermost ne fonctionnera pas avec MariaDB version 5.5.

Si MariaDB 10.3 n'est pas installé sur votre serveur, vous pouvez consulter ce guide.

Connectez-vous au shell MySQL :

mysql -u root -p

Et exécutez les commandes suivantes pour créer une nouvelle base de données et un nouvel utilisateur pour notre installation Mattermost :

create database mattermost;GRANT ALL ON mattermost.* TO mattermost@localhost IDENTIFIED BY 'P4ssvv0rD';

Créer un nouvel utilisateur système #

Pour créer un nouvel utilisateur et un groupe nommés mattermost , qui exécutera l'installation de Mattermost, exécutez la commande suivante :

sudo useradd -U -M -d /opt/mattermost mattermost

Installer le serveur Mattermost #

Au moment de la rédaction de cet article, la dernière version stable de Mattermost est la version 5.4.0. Avant de passer à l'étape suivante, vous devez consulter la page de téléchargement de Mattermost pour voir si une version plus récente est disponible.

Téléchargez l'archive avec la commande curl suivante :

sudo curl -L https://releases.mattermost.com/5.4.0/mattermost-5.4.0-linux-amd64.tar.gz -o /tmp/mattermost.tar.gz

Une fois le téléchargement terminé, extrayez l'archive et déplacez-la vers opt répertoire :

sudo tar zxf /tmp/mattermost.tar.gz -C /opt

Créez le répertoire de stockage des fichiers :

sudo mkdir /opt/mattermost/data

Modifiez la propriété du répertoire en mattermost utilisateur :

sudo chown -R mattermost: /opt/mattermost

Ouvrez le config.json fichier avec votre éditeur de texte préféré :

sudo nano /opt/mattermost/config/config.json

Définissez le pilote de base de données sur mysql , entrez le nom de la base de données et le mot de passe de l'utilisateur de la base de données que nous avons créés précédemment dans ce didacticiel :

/opt/mattermost/config/config.json
...
"SqlSettings": {
    "DriverName": "mysql",
    "DataSource": "mattermost:P4ssvv0rD@tcp(localhost:3306)/mattermost?charset=utf8mb4,utf8&readTimeout=30s&writeTimeout=30s",
    "DataSourceReplicas": [],
...

Afin de tester notre installation pour nous assurer que tout fonctionne avant de créer une unité systemd et de configurer un proxy inverse avec Nginx, nous allons démarrer le serveur Mattermost.

Changez en /opt/mattermost répertoire et démarrer le serveur :

cd /opt/mattermostsudo -u mattermost bin/mattermost

La sortie doit montrer que le serveur Mattermost écoute sur le port8065 :

{"level":"info","ts":1540921243.6797202,"caller":"app/plugin.go:100","msg":"Starting up plugins"}
{"level":"info","ts":1540921244.3483207,"caller":"app/server.go:88","msg":"Starting Server..."}
{"level":"info","ts":1540921244.3488805,"caller":"app/server.go:148","msg":"Server is listening on [::]:8065"}
{"level":"info","ts":1540921244.3620636,"caller":"app/web_hub.go:75","msg":"Starting 2 websocket hubs"}
{"level":"info","ts":1540921244.451155,"caller":"jobs/workers.go:63","msg":"Starting workers"}
{"level":"info","ts":1540921244.456804,"caller":"jobs/schedulers.go:68","msg":"Starting schedulers."}

Vous pouvez maintenant arrêter le serveur Mattermost avec CTRL+C et passez aux étapes suivantes.

Créer un numéro d'unité Systemd

Afin d'exécuter notre instance Mattermost en tant que service, nous allons créer un mattermost.service fichier d'unité dans le /etc/systemd/system/ répertoire avec le contenu suivant :

/etc/systemd/system/mattermost.service
[Unit]
Description=Mattermost
After=network.target nss-lookup.target mariadb.service

[Service]
Type=notify
WorkingDirectory=/opt/mattermost
User=mattermost
SyslogIdentifier=mattermost
ExecStart=/opt/mattermost/bin/mattermost
TimeoutStartSec=3600
LimitNOFILE=49152

[Install]
WantedBy=multi-user.target

Avertissez systemd que nous avons créé un nouveau fichier d'unité et démarrez le service Mattermost en exécutant :

sudo systemctl daemon-reloadsudo systemctl start mattermost

Nous pouvons maintenant vérifier l'état du service avec la commande suivante :

sudo systemctl status mattermost
● mattermost.service - Mattermost
   Loaded: loaded (/etc/systemd/system/mattermost.service; disabled; vendor preset: disabled)
   Active: active (running) since Tue 2018-10-30 17:44:46 UTC; 3s ago
 Main PID: 25959 (mattermost)
   CGroup: /system.slice/mattermost.service
           └─25959 /opt/mattermost/bin/mattermost

Enfin, activez le démarrage automatique du service Mattermost au démarrage :

sudo systemctl enable mattermost

Configurer un proxy inverse avec Nginx #

Si vous avez suivi nos guides d'installation de Nginx sur CentOS 7 et de sécurisation de Nginx avec Let's Encrypt sur CentOS 7, Nginx devrait déjà être installé et configuré avec un certificat SSL. Il ne nous reste plus qu'à créer un nouveau bloc serveur pour notre installation Mattermost.

/etc/nginx/conf.d/linuxize-test.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 linuxize-test.com www.linuxize-test.com;

    include snippets/letsencrypt.conf;
    return 301 https://linuxize-test.com$request_uri;
}

server {
    listen 443 ssl http2;
    server_name www.linuxize-test.com;

    ssl_certificate /etc/letsencrypt/live/linuxize-test.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/linuxize-test.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/linuxize-test.com/chain.pem;
    include snippets/ssl.conf;

    return 301 https://linuxize-test.com$request_uri;
}

server {
    listen 443 ssl http2;
    server_name linuxize-test.com;

    ssl_certificate /etc/letsencrypt/live/linuxize-test.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/linuxize-test.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/linuxize-test.com/chain.pem;
    include snippets/ssl.conf;

    access_log /var/log/nginx/linuxize-test.com-access.log;
    error_log /var/log/nginx/linuxize-test.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;
   }
}

Rechargez le service Nginx pour que les modifications prennent effet :

sudo systemctl reload nginx

Configuration de Mattermost #

Ouvrez votre navigateur, saisissez votre domaine et créez votre premier compte :

Le premier utilisateur créé dans le système a des privilèges d'administrateur.

Cliquez sur Create a new team lien, créez votre première équipe et définissez l'URL de l'équipe :

Après avoir créé le premier compte administrateur et la première équipe, vous serez redirigé vers le tableau de bord Mattermost, connecté en tant qu'administrateur. Ouvrez la console système, en cliquant sur votre nom d'utilisateur en haut du panneau de navigation, et dans le nouveau menu qui s'ouvre, cliquez sur System Console lien :

Définissez l'URL du site en allant dans Paramètres Général → Configuration.

Activez les notifications par e-mail en accédant à Notifications → E-mail

et entrez vos paramètres SMTP. Vous pouvez utiliser tous les services de messagerie transactionnels populaires tels que SendinBlue, SendGrid, Amazon SES, Mandrill, Mailgun, Mailjet et Postmark ou vous pouvez configurer votre propre serveur de messagerie.

Enfin, nous devons redémarrer le service Mattermost pour que les modifications prennent effet :

sudo systemctl restart mattermost

Cent OS
  1. Comment installer wordpress sur CentOS 6

  2. Comment déployer CDP sur un serveur CentOS

  3. Comment installer SpaceWalk sur CentOS 6 / RHEL 6

  4. Comment installer PostgreSQL sur CentOS 7 / RHEL 7

  5. Comment installer SpaceWalk sur CentOS 7 / RHEL 7

Comment déployer Mattermost sur Ubuntu 20.04

Comment installer PostgreSQL dans CentOS 8

Comment installer le serveur de base de données PostgreSQL CentOS 8

Comment installer Mattermost sur CentOS 7

Comment installer Mattermost sur CentOS 8

Comment installer Moodle sur CentOS 8