CentOS 8에서 Mattermost를 설치하고 구성하는 방법


이 페이지에서

  1. 전제 조건
  2. MariaDB 데이터베이스 설치 및 구성
  3. Mattermost 설치
  4. Mattermost 구성
  5. Mattermost용 Systemd 서비스 파일 생성
  6. Mattermost에 대한 역방향 프록시로 Nginx 구성\n
  7. SELinux 및 방화벽 구성\n
  8. Mattermost 웹 인터페이스에 액세스
  9. 결론

Mattermost는 무료 오픈 소스 자체 호스팅 엔터프라이즈 팀 협업 메시징 시스템입니다. Golang 및 React로 작성되었으며 MySQL/MariaDB/PostgreSQL을 데이터베이스 백엔드로 사용합니다. Windows, macOS, Linux용 데스크톱 클라이언트와 iOS 및 Android용 모바일 애플리케이션을 제공합니다. Slack과 매우 유사하며 모든 팀 커뮤니케이션을 한 곳으로 가져옵니다. 일대일 및 그룹 메시징, 파일 공유, 화상 통화, 사용자 지정 이모티콘, 웹후크 및 명령 등 매우 유용한 기능을 제공합니다.

이 튜토리얼에서는 CentOS 8에 Mattermost를 설치하는 방법을 보여줍니다.

전제 조건

  • CentOS 8을 실행하는 서버.\n
  • 서버에 루트 암호가 구성되어 있습니다.\n

MariaDB 데이터베이스 설치 및 구성

Mattermost는 MariaDB/MySQL을 데이터베이스 백엔드로 사용합니다. 따라서 서버에 MariaDB를 설치해야 합니다. 설치되어 있지 않은 경우 다음 명령으로 설치할 수 있습니다.

dnf install mariadb-server -y

설치가 완료되면 MariaDB 서비스를 시작하고 다음 명령을 사용하여 시스템 재부팅 후 시작할 수 있도록 활성화합니다.

systemctl start mariadb
systemctl enable mariadb

기본적으로 MariaDB는 보안되지 않으며 CentOS 8에서는 루트 비밀번호가 설정되지 않습니다. 따라서 다음 명령으로 설정할 수 있습니다.

mysql_secure_installation

아래와 같이 모든 질문에 답하십시오.

Enter current password for root (enter for none):
Set root password? [Y/n] Y
New password:
Re-enter new password:
Remove anonymous users? [Y/n] Y
Disallow root login remotely? [Y/n] Y
Remove test database and access to it? [Y/n] Y
Reload privilege tables now? [Y/n] Y

완료되면 루트 사용자로 MariaDB에 로그인합니다.

mysql -u root -p

루트 암호를 제공한 후 다음 명령을 사용하여 Mattermost에 대한 데이터베이스 및 사용자를 생성합니다.

MariaDB [(none)]> CREATE DATABASE mattermostdb;
MariaDB [(none)]> GRANT ALL PRIVILEGES ON mattermostdb.* TO IDENTIFIED BY 'password';

그런 다음 권한을 플러시하고 다음 명령을 사용하여 MariaDB 셸을 종료합니다.

MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> EXIT;

완료되면 다음 단계로 진행할 수 있습니다.

Mattermost 설치

먼저 Mattermost를 실행하려면 별도의 사용자를 생성해야 합니다. 다음 명령으로 만들 수 있습니다.

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

다음으로 다음 명령을 사용하여 최신 버전의 Mattermost를 다운로드합니다.

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

다운로드가 완료되면 다음 명령을 사용하여 다운로드한 파일의 압축을 풉니다.

tar -xvzf mattermost-5.21.0-linux-amd64.tar.gz

그런 다음 다음 명령을 사용하여 추출된 디렉터리를 /opt로 이동합니다.

mv mattermost /opt/

다음으로, mattermost 내부에 데이터 디렉터리를 생성하고 다음 명령을 사용하여 mattermost에 적절한 권한을 부여합니다.

mkdir /opt/mattermost/data
chown -R mattermost:mattermost /opt/mattermost
chmod -R g+w /opt/mattermost

완료되면 다음 단계로 진행할 수 있습니다.

Mattermost 구성

다음으로 Mattermost에서 데이터베이스를 정의해야 합니다. config.json 파일을 편집하여 이를 수행할 수 있습니다.

nano /opt/mattermost/config/config.json

데이터베이스 설정에 따라 다음 행을 변경하십시오.

  "SqlSettings": {
    "DriverName": "mysql",
    "DataSource": "mattermost:(localhost:3306)/mattermostdb?charset=utf8mb4,utf8&readTimeout=30s&writeTimeout=30s",

완료되면 파일을 저장하고 닫습니다. 그런 다음 디렉터리를 /opt/mattermost로 변경하고 다음 명령을 사용하여 Mattermost 서버를 시작합니다.

cd /opt/mattermost
sudo -u mattermost bin/mattermost

서버가 성공적으로 시작되면 다음 출력이 표시되어야 합니다.

{"level":"info","ts":1585379681.8383002,"caller":"utils/i18n.go:83","msg":"Loaded system translations","for locale":"en","from locale":"/opt/mattermost/i18n/en.json"}
{"level":"info","ts":1585379681.83874,"caller":"app/server_app_adapters.go:58","msg":"Server is initializing..."}
{"level":"info","ts":1585379681.8470004,"caller":"sqlstore/supplier.go:221","msg":"Pinging SQL","database":"master"}
{"level":"info","ts":1585379684.7858346,"caller":"sqlstore/upgrade.go:112","msg":"The database schema version has been set","version":"5.21.0"}
{"level":"error","ts":1585379690.8182986,"caller":"app/server_app_adapters.go:129","msg":"SiteURL must be set. Some features will operate incorrectly if the SiteURL is not set. See documentation for details: http://about.mattermost.com/default-site-url"}
{"level":"info","ts":1585379690.821083,"caller":"app/license.go:39","msg":"License key from https://mattermost.com required to unlock enterprise features."}

그런 다음 CTRL + C를 눌러 Mattermost 서버를 중지합니다.

Mattermost에 대한 Systemd 서비스 파일 생성

다음으로 Mattermost 서비스를 관리하기 위해 systemd 서비스 파일을 생성해야 합니다. 다음 명령으로 만들 수 있습니다.

nano /etc/systemd/system/mattermost.service

다음 줄을 추가합니다.

[Unit]
Description=Mattermost
After=syslog.target network.target mariadb.service

[Service]
Type=notify
WorkingDirectory=/opt/mattermost
User=mattermost
ExecStart=/opt/mattermost/bin/mattermost
PIDFile=/var/run/mattermost.pid
TimeoutStartSec=3600
LimitNOFILE=49152

[Install]
WantedBy=multi-user.target

완료되면 파일을 저장하고 닫습니다. 그런 다음 다음 명령을 사용하여 systemd 데몬을 다시 로드합니다.

systemctl daemon-reload

그런 다음 Mattermost 서비스를 시작하고 다음 명령을 사용하여 시스템 재부팅 후 시작되도록 활성화합니다.

systemctl start mattermost
systemctl enable mattermost

다음 명령을 사용하여 Mattermost 서비스의 상태를 확인할 수도 있습니다.

systemctl status mattermost

다음 출력이 표시되어야 합니다.

? mattermost.service - Mattermost
   Loaded: loaded (/etc/systemd/system/mattermost.service; disabled; vendor preset: disabled)
   Active: active (running) since Sat 2020-03-28 03:17:07 EDT; 14s ago
 Main PID: 15204 (mattermost)
    Tasks: 21 (limit: 25028)
   Memory: 120.8M
   CGroup: /system.slice/mattermost.service
           ??15204 /opt/mattermost/bin/mattermost
           ??15214 plugins/com.mattermost.nps/server/dist/plugin-linux-amd64

Mar 28 03:17:07 centos8 mattermost[15204]: {"level":"info","ts":1585379827.1131086,"caller":"app/server.go:247","msg":"Printing current workin>
Mar 28 03:17:07 centos8 mattermost[15204]: {"level":"info","ts":1585379827.1131282,"caller":"app/server.go:248","msg":"Loaded config","source">

이 시점에서 Mattermost 서버는 실행 중이며 포트 8065에서 수신 대기 중입니다. 다음 명령으로 확인할 수 있습니다.

netstat -antup | grep 8065

다음 출력이 표시되어야 합니다.

tcp6       0      0 :::8065                 :::*                    LISTEN      15204/mattermost 

Nginx를 Mattermost에 대한 역방향 프록시로 구성

더 나은 성능과 보안을 위해 Nginx를 리버스 프록시로 설치 및 구성하는 것이 좋습니다.

먼저 다음 명령을 사용하여 Nginx 웹 서버를 설치합니다.

dnf install nginx -y

Nginx 웹 서버를 설치한 후 Nginx 서비스를 시작하고 다음 명령을 사용하여 시스템 재부팅 후 시작되도록 활성화합니다.

systemctl start nginx
systemctl enable nginx

다음으로 다음 명령을 사용하여 Mattermost에 대한 새 Nginx 가상 호스트 파일을 만듭니다.

nano /etc/nginx/conf.d/mattermost.conf

다음 줄을 추가합니다.

upstream mattermost {
   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.example.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://mattermost;
   }
   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://mattermost;
   }
}

완료되면 파일을 저장하고 닫습니다. 그런 다음 다음 명령을 사용하여 Nginx에서 구문 오류가 있는지 확인합니다.

nginx -t

다음 출력이 표시되어야 합니다.

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

마지막으로 Nginx 서비스를 다시 시작하여 변경 사항을 적용합니다.

systemctl restart nginx

이 시점에서 Nginx 웹 서버는 Mattermost를 제공하도록 구성됩니다. 이제 다음 단계를 진행할 수 있습니다.

SELinux 및 Firewalld 구성

기본적으로 SELinux는 CentOS 8에서 활성화되어 있습니다. Mattermost에서는 비활성화하는 것이 좋습니다. /etc/selinux/config 파일을 편집하여 비활성화할 수 있습니다.

nano /etc/selinux/config

다음 줄을 찾으십시오.

SELINUX=enforcing

그리고 다음 줄로 바꿉니다.

SELINUX=permissive

완료되면 파일을 저장하고 닫습니다. 그런 다음 시스템을 다시 시작하여 변경 사항을 적용하십시오.

다음으로 방화벽을 통해 포트 80을 허용해야 합니다. 다음 명령으로 허용할 수 있습니다.

firewall-cmd --add-service=http --permanent

다음으로 방화벽을 다시 로드하여 변경 사항을 적용합니다.

firewall-cmd --reload

Mattermost 웹 인터페이스에 액세스

이제 웹 브라우저를 열고 URL http://mattermost.example.com을 입력합니다. Mattermost 사용자 생성 페이지가 표시됩니다.

이메일 주소, 사용자 이름, 비밀번호를 입력하고 계정 만들기 버튼을 클릭합니다. 다음 페이지가 표시됩니다.

그런 다음 새 팀 만들기를 클릭하여 팀을 만듭니다. 다음 페이지가 표시됩니다.

팀 이름을 입력하고 다음 버튼을 클릭합니다. 다음 페이지가 표시됩니다.

팀 URL을 제공하고 완료를 클릭하여 설치를 완료하십시오. 다음 페이지에 Mattermost 대시보드가 표시되어야 합니다.

결론

축하합니다! CentOS 8 서버에 Mattermost를 성공적으로 설치하고 구성했습니다. 이제 조직을 위한 팀을 만들고 팀과 공동 작업을 시작할 수 있습니다.