데이터베이스에 구성 저장#

plans-img 모든 플랜 에서 사용 가능

deployment-img 자체 호스팅 배포

Mattermost 설치의 활성 구성을 위한 단일 진실 공급원으로 데이터베이스를 사용할 수 있습니다. 이는 Mattermost 바이너리가 기본 config.json 파일을 읽는 것에서 데이터베이스의 구성 테이블에 저장된 구성 설정을 읽는 것으로 변경됩니다. Mattermost는 이 기능이 출시된 이후부터 커뮤니티 서버 를 이 옵션으로 실행해 왔으며, 고가용성 배포 를 사용하는 사용자에게 이 기능의 사용을 권장합니다.

이 옵션 사용의 이점:

  • 고가용성 배포와 읽기 전용 컨테이너화된 환경에서도 시스템 콘솔에서 직접 구성 변경을 편리하게 관리할 수 있습니다.

  • 클러스터에 새 서버가 추가되더라도 고가용성 배포의 모든 서버가 동일한 구성을 갖도록 보장합니다.

  • 클러스터의 모든 서버에 SAML 인증서와 키를 자동으로 배포합니다.

Mattermost 구성 데이터베이스와 Mattermost 애플리케이션 데이터베이스는 서로 다른 두 개의 엔티티입니다. 하나의 데이터베이스에 Mattermost 구성을 저장하고 다른 데이터베이스에 Mattermost 데이터를 저장할 수 있습니다.

이를 위해 Datasource 구성 설정을 새로운 데이터 소스 이름으로 업데이트해야 합니다. 이는 애플리케이션이 실행 중일 때 수행할 수 있습니다. 구성에 정의된 내용(데이터베이스 또는 파일에 있는지 여부)을 재정의하기 위해 MM_SQLSETTINGS_DATASOURCE 환경 변수를 명시적으로 설정하면 올바른 데이터 소스 이름이 Mattermost 애플리케이션에 전달됩니다.

데이터베이스로 구성을 마이그레이션하는 방법#

이 지침은 Mattermost 구성을 데이터베이스로 마이그레이션하고 systemd 구성을 업데이트하여 데이터베이스에서 로드하는 방법을 다룹니다.

중요

  • 이 지침은 Mattermost 서버가 /opt/mattermost 에 설치되어 있다고 가정합니다. 다른 디렉토리에서 Mattermost를 실행 중이라면 환경에 맞게 경로를 수정해야 합니다.

  • 고가용성 클러스터 기반 배포에서 Mattermost를 실행 중이라면, 클러스터의 각 서버에서 아래 단계를 모두 완료해야 합니다.

데이터베이스 연결 문자열 가져오기#

첫 번째 단계는 마스터 데이터베이스 연결 문자열을 가져오는 것입니다. config.json 파일에 접근하여 SqlSettings.DataSource 의 값을 복사하거나 동등한 환경 변수인 MM_SQLSETTINGS_DATASOURCE 를 사용하는 것을 권장합니다.

중요

  • SqlSettings.DataSourcepostgres:// 또는 mysql:// 로 시작해야 합니다. 그렇지 않은 경우 사용 중인 데이터베이스에 따라 시작 부분에 추가하세요. 예: postgres://mmuser:really_secure_password@localhost:5432/mattermost?sslmode=disable&connect_timeout=10

  • \u0026 가 보이면 & 로 바꾸세요. 예: mysql://mmuser:really_secure_password@tcp(127.0.0.1:3306)/mattermost?charset=utf8mb4,utf8&writeTimeout=30s

환경 파일 생성하기#

MM_CONFIG 환경 변수를 데이터베이스 연결 문자열로 설정하기 위해 /opt/mattermost/config/mattermost.environment 파일을 생성하세요. 예:

MM_CONFIG='postgres://mmuser:mostest@localhost:5432/mattermost_test?sslmode=disable&connect_timeout=10'

Mattermost 디렉토리의 권한을 확인하려면 다음 명령을 실행하세요:

sudo chown -R mattermost:mattermost /opt/mattermost

로컬 모드 활성화#

EnableLocalModetrue 로 설정하여 config.json 을 편집하세요. 로컬 모드 활성화 및 사용에 대한 자세한 내용은 local mode 문서를 참조하세요.

Mattermost 재시작#

다음 명령을 실행하여 Mattermost 서버를 재시작하고 구성 변경사항을 적용하세요:

sudo systemctl restart mattermost

config.json 에서 구성 마이그레이션#

다음 명령을 실행하여 mmctl config migrate 명령으로 구성을 마이그레이션할 수 있습니다:

./bin/mmctl config migrate path/to/config.json "postgres://mmuser:mostest@localhost:5432/mattermost_test?sslmode=disable&connect_timeout=10" --local

중요

  • 고가용성 클러스터 기반 배포를 사용 중이라면, 이 명령을 한 번만 실행하고 클러스터의 한 서버에서 구성을 마이그레이션하면 됩니다.

  • 구성을 마이그레이션할 때 Mattermost는 현재 셸에 설정된 기존 MM_* 환경 변수의 구성을 통합합니다. 자세한 내용은 Environment Variables 문서를 참조하세요.

  • 환경 파일과 마찬가지로 데이터베이스 연결 문자열의 작은따옴표를 이스케이프해야 합니다.

  • 기존 SAML 인증서도 데이터베이스로 마이그레이션되어 클러스터의 모든 서버에서 사용할 수 있습니다. 인증서가 만료되면 시스템 콘솔이나 mmctl을 사용하여 새 인증서를 업로드할 수 있으며, 이는 데이터베이스 업데이트를 트리거합니다. 인증서 파일을 수동으로 교체하려면 Mattermost 서버를 다시 로드하여 인증서를 다시 가져와야 합니다. 구성 파일은 데이터베이스의 configurationfiles 테이블에 저장됩니다.

데이터베이스의 구성이 활성화되면 구성의 모든 변경 사항이 ConfigurationsConfigurationFiles 테이블에 기록됩니다. 또한 ClusterSettings.ReadOnlyConfig 는 무시되어 시스템 콘솔을 완전히 사용할 수 있습니다.

서버별로 설정해야 하는 구성 설정이 있다면 mattermost.environment 파일에 환경 변수로 추가해야 합니다. 이들은 각각 별도의 줄에 있어야 하며, 적절히 이스케이프해야 합니다.

Mattermost systemd 파일 수정#

다음 명령을 사용하여 mattermost.service 파일을 찾으세요:

sudo systemctl status mattermost.service

출력의 두 번째 줄에 실행 중인 mattermost.service 의 위치가 표시됩니다.

Loaded: loaded (/lib/systemd/system/mattermost.service; enabled; vendor preset: enabled)

root 권한으로 이 파일을 편집하여 ExecStart 로 시작하는 줄 바로 위에 아래 텍스트를 추가하세요:

EnvironmentFile=/opt/mattermost/config/mattermost.environment

EnvironmentFile 줄이 추가된 완전한 mattermost.service 파일입니다:

[Unit]
Description=Mattermost
After=network.target
After=postgresql.service
Requires=postgresql.service

[Service]
Type=notify
EnvironmentFile=/opt/mattermost/config/mattermost.environment
ExecStart=/opt/mattermost/bin/mattermost
TimeoutStartSec=3600
KillMode=mixed
Restart=always
RestartSec=10
WorkingDirectory=/opt/mattermost
User=mattermost
Group=mattermost
LimitNOFILE=49152

[Install]
WantedBy=postgresql.service

구성이 올바르게 마이그레이션되었는지 확인#

구성은 데이터베이스의 Configurations 테이블에 저장됩니다. 구성이 성공적으로 마이그레이션되었는지 확인하려면 다음 쿼리를 실행하세요:

SELECT * FROM Configurations WHERE Active=true;

정확히 한 줄이 반환되어야 하며, 해당 줄의 Value 필드는 config.json 파일과 일치해야 합니다.

systemd 파일을 다시 로드하고 Mattermost 재시작#

새로운 MM_CONFIG 환경 변수를 사용하여 데몬을 다시 로드하고 Mattermost를 재시작하려면 다음 명령을 실행하세요.

sudo systemctl daemon-reload
sudo systemctl restart mattermost

중요

데이터베이스에서 구성을 사용하기 시작하면 활성 구성 행을 수동으로 편집하지 마세요. 다음 방법 중 하나로 구성을 편집하거나 업데이트해야 합니다:

  • 시스템 콘솔을 사용하여 구성을 변경하세요.

  • mmctl 을 사용하여 구성을 변경하세요.

Mattermost 서버는 활성 구성을 메모리에 유지하고 변경 사항이 있을 때만 새 구성을 데이터베이스에 기록합니다. 이렇게 하면 구성 변경을 처리하기 위해 데이터베이스를 폴링하는 것을 피할 수 있습니다. 클러스터에 변경 사항을 게시하는 것은 애플리케이션 자체에서 처리합니다.

롤백#

데이터베이스의 구성에 문제가 발생하면 /opt/mattermost/config/mattermost.environmentMM_CONFIG 줄을 주석 처리하고 systemctl restart mattermost 로 Mattermost를 재시작하여 config.json 파일로 롤백할 수 있습니다.

문제 해결#

서버 시작 실패#

실제로 파일을 가리키지 않으면서 --disableconfigwatch 플래그를 제공하면 적절한 오류 메시지와 함께 서버 시작이 실패합니다.