반응형
이번 포스트는 저번에 이어서 로그인에서 ssl인증 에러가 난 것을 해결해 보자
1. 로그인 에러 원인파악하기
아래와 같은 에러가 발생했는데 이를 GPT한테 물어봤다.
- 이 에러 메시지는 Matomo가 요청의 "origin"이나 "referrer"를 확인하는 과정에서 무언가 일치하지 않았음을 나타낸다. 여기에는 여러 가지 원인이 있을 수 있다.
- HTTP와 HTTPS 혼용:
- 만약 Matomo 설정이 HTTPS를 사용하도록 설정되어 있지만, HTTP로 접근하려고 하면 이런 문제가 발생할 수 있다. 반대의 경우도 마찬가지다. (이게 가장 확률이 높다.)
- Proxy 설정 문제:
- Nginx나 다른 리버스 프록시를 사용하고 있다면, 실제 클라이언트의 IP나 프로토콜 정보가 제대로 전달되지 않을 수 있다.
- Browser Cache:
- 브라우저 캐시가 오래된 정보를 가지고 있다면, 이런 문제가 발생할 수 있습니다. 캐시를 지우고 다시 시도해 보자.
- 브라우저 캐시가 오래된 정보를 가지고 있다면, 이런 문제가 발생할 수 있습니다. 캐시를 지우고 다시 시도해 보자.
- HTTP와 HTTPS 혼용:
2. 해결 시도 (Matomo 설정 확인)
2-1. Matomo의 설정 파일 확인
- 설정 파일은 일반적으로 config/config.ini.php에 위치한다. (docker container의 내부에 들어가야 한다.)
2-2. matomo 컨테이너 ID 확인
- 아래의 grep 명령어로 실행중인 matomo 컨테이너의 ID를 확인한다.
docker ps | grep matomo
2-3. matomo 컨테이너 접속
- Matomo의 설정을 변경하려면 matomo-docker_matomo_1 컨테이너에 접속해야 한다.
- 이 컨테이너는 Matomo 애플리케이션을 실행하고 있으므로, 설정 파일들도 이 안에 있을 것이다.
다음과 같은 명령어를 사용하여 Matomo 컨테이너에 접속할 수 있다.
sudo docker exec -it ab476e1c0389 /bin/bash
- 이 명령어를 실행하면 컨테이너의 bash 쉘에 접속할 수 있다. 그다음, 필요한 설정 파일을 찾아 수정할 수 있다.
2-4. config.ini.php 파일 수정
- 만약 Matomo가 config.ini.php 파일을 사용하고 있다면, 해당 파일을 찾아 수정하면 된다. 일반적으로 이 파일은 /var/www/html/config/ 디렉토리 안에 있을 가능성이 높다.
cd /var/www/html/config/
nano config.ini.php # nano 편집기를 사용하여 파일을 열거나, vi 등 다른 편집기를 사용해도 됩니다.
- 여기서 문제점은 nano, vim 에디터를 사용하면 다음과 같은 에러가 발생한다.
- 이런 에러가 발생하는 이유는 컨테이너 내부에 텍스트 편집기가 설치되어 있지 않기 때문이다.
2-5. 에디터 문제 해결하기
1. 컨테이너 내부에서 편집기 설치
- 이는 일반적으로 권장되지 않는 방법이다. 컨테이너는 원래 불변(immutable) 해야 하며, 필요한 모든 의존성은 이미지 빌드 과정에서 해결되어야 한다.
apt-get update
apt-get install vim # 또는 nano
2. 컨테이너에서 파일을 호스트 시스템으로 복사, 수정 후 다시 컨테이너로 복사
- 이 방법은 상대적으로 안전하며, 다음과 같이 실행할 수 있다.
- 참고로 이 방법을 사용하려면 지금 접속해 있는 컨테이너의 bash에서 나와야 한다.
# 컨테이너에서 호스트로 파일 복사
sudo docker cp ab476e1c0389:/var/www/html/config/config.ini.php ./config.ini.php
# 호스트 시스템에서 파일을 수정
vim ./config.ini.php # 또는 nano, 또는 다른 편집기
# 수정된 파일을 다시 컨테이너로 복사
sudo docker cp ./config.ini.php ab476e1c0389:/var/www/html/config/config.ini.php
명령어1 입력: 컨테이너에서 호스트로 파일 복사하기
명령어 2 입력: config.ini.php 파일 수정하기
- Matomo의 config.ini.php 파일에서 HTTP로도 접속 가능하게 설정하는 것은 보통 force_ssl 설정을 변경함으로써 가능하다. 하지만, 보안상 HTTPS를 사용하는 것이 좋다. 그래도 꼭 HTTP를 사용해야 하는 상황이라면, config.ini.php 파일에서 force_ssl 설정을 찾아서 값을 0으로 설정하면 된다.
이 설정이 파일에 없다면 [General] 섹션 아래에 추가하면 된다.
- force_ssl이 0이면 http에서 접속이 가능하고 1이면 강제로 https로 전환시켜서 ssl인증이 되어있어야만 접속이 가능하게 된다.
[General]
force_ssl = 0
명령어 3 입력: 수정을 마치고 컨테이너로 다시 옮기는 작업
sudo docker cp ./config.ini.php ab476e1c0389:/var/www/html/config/config.ini.php
- 이렇게 하면, HTTPS를 강제하지 않고 HTTP로도 접속이 가능해질 것이다. 다만, 이 설정은 보안에 취약하므로 신중히 사용해야 한다.
2-6. 설정을 적용하기 위해서는 Matomo가 실행되고 있는 Docker 컨테이너를 재시작해 주는 것이 좋습니다.
- docker-compose가 있는 디렉터리에서 다음 명령을 실행하면 된다.
sudo docker-compose down
sudo docker-compose up -d
- 또는 특정 서비스만 재시작하려면
sudo docker-compose restart matomo
- 이렇게 하면 변경된 설정이 적용될 것이다.
3. 문제점 재발생
3-1. 에러 파악
- sql관련 에러인데 내가 위에서 컨테이너를 재시작했는데 이때 docker-compose.yml안에 db정보를 local에 mount 하지 않아서 다시 재시작하면서 mysql 정보가 다 날아간 것이었다.
3-2. 일단 docker-compose.yml을 수정했다.
- volums: db_data:/var/lib/mysql 이 내용을 추가했다.
version: '3'
services:
web:
image: nginx:latest
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf
ports:
- "8080:80"
depends_on:
- matomo
matomo:
image: matomo:latest
volumes:
- matomo_data:/var/www/html
environment:
- MATOMO_DATABASE_HOST=db
- MATOMO_DATABASE_USERNAME=matomo
- MATOMO_DATABASE_PASSWORD=matomo
depends_on:
- db
db:
image: mysql:latest
volumes:
- db_data:/var/lib/mysql # MySQL 데이터를 저장할 볼륨 추가
environment:
- MYSQL_ROOT_PASSWORD=rootpassword
- MYSQL_DATABASE=matomo
- MYSQL_USER=matomo
- MYSQL_PASSWORD=matomo
volumes:
matomo_data:
db_data: # MySQL 데이터를 저장할 볼륨 정의
- 그리고 docker-compose를 재기동했는데 당연히 안된다. -> db설정을 다시해야 한다.
3-3. Docker Compose를 사용하여 실행 중인 서비스들을 초기화하고 다시 시작하기
- Docker Compose로 현재 실행 중인 서비스들 정지
sudo docker-compose down
3-4. Docker 볼륨 삭제
- 현재 설정에서 볼륨 이름은 matomo_data와 db_data로 추정된다. 그러므로 아래와 같이 명령을 실행한다.
sudo docker volume rm matomo-docker_matomo_data
sudo docker volume rm matomo-docker_db_data
- 주의: 이 명령은 모든 Matomo 및 MySQL 데이터를 삭제한다. 반드시 필요한 데이터가 있다면 먼저 백업해라
3-5. Docker Compose로 서비스 재시작
sudo docker-compose up -d
- 이 명령들을 실행한 후, Matomo 웹 인터페이스에 다시 접속하여 설정을 진행해 봐라. 이렇게 하면 이전에 발생했던 데이터베이스 관련 에러는 해결될 가능성이 높다.
- 만약 같은 문제가 반복된다면, docker-compose logs 명령을 사용하여 오류 로그를 확인해 더 자세한 문제 분석을 진행할 수 있다.
3-6. 마토모 페이지 재설정 시작
3-7. 마토모 웹 인터페이스 설정 과정은 이전 포스트를 다시 확인하자
2023.10.22 - [웹분석tool (GA, Matomo)] - Matomo 웹 분석 설정: 웹 인터페이스를 통한 구성 (2편)
문제점은 웹페이지 세팅을 다 했더니 이제 마운트를 해서 DB 정보는 유지가 되는데 아직도 로그인할 때 ssl관련 에러가 나와서 로그인이 불가능하다. 다음 포스트에서 다른 방법을 시도해서 해결해 보겠다.
2023.10.22 - [웹분석tool (GA, Matomo)] - Matomo 웹 분석 설정: SSL 로그인 오류 해결 (4편)
2023.10.22 - [웹분석tool (GA, Matomo)] - Matomo 웹 분석 설정: 웹 인터페이스를 통한 구성 (2편)
반응형
'DevOps > 웹분석tool (GA, Matomo)' 카테고리의 다른 글
Matomo 추적 스크립트 설정: 웹사이트에 적용 및 테스트하기 (5편) (0) | 2023.10.22 |
---|---|
Matomo 웹 분석 설정: SSL 로그인 오류 해결 (4편) (0) | 2023.10.22 |
Matomo 웹 분석 설정: 웹 인터페이스를 통한 구성 (2편) (0) | 2023.10.22 |
Matomo 웹 분석 설치: Docker Compose 활용 가이드 (1편) (1) | 2023.10.22 |
Matomo Analytics (웹 분석도구): 데이터의 미래를 설계하다 (0) | 2023.10.22 |