데이터베이스에 구성 저장#
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.DataSource는postgres://또는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
로컬 모드 활성화#
EnableLocalMode 를 true 로 설정하여 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테이블에 저장됩니다.
데이터베이스의 구성이 활성화되면 구성의 모든 변경 사항이 Configurations 및 ConfigurationFiles 테이블에 기록됩니다. 또한 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.environment 의 MM_CONFIG 줄을 주석 처리하고 systemctl restart mattermost 로 Mattermost를 재시작하여 config.json 파일로 롤백할 수 있습니다.
문제 해결#
서버 시작 실패#
실제로 파일을 가리키지 않으면서 --disableconfigwatch 플래그를 제공하면 적절한 오류 메시지와 함께 서버 시작이 실패합니다.