- GitLab 페이지 로그 보는 방법
지원되지 않는 프로토콜 스킴 ""
- IPv6를 통해 수신 대기하지 않는 서버에서 GitLab 페이지 프록시에 연결할 때 502 오류
- 간헐적인 502 오류 또는 몇 일 후에 발생하는 오류
- GitLab 페이지에 액세스할 수 없음
- 내부 GitLab API에 연결할 수 없음
- 페이지는 GitLab API의 인스턴스와 통신할 수 없습니다.
- AWS 네트워크 로드 밸런서 및 GitLab Pages 사용 시 간헐적인 502 오류
securecookie: failed to generate random iv
및Failed to save the session
으로 500 오류 발생- 요청된 범위가 잘못되었거나 알 수 없습니다.
- 와일드카드 DNS 항목을 설정할 수 없는 경우 해결책
- Pages 데몬이 권한 거부 오류로 실패하는 경우
- Pages Access Control을 사용할 때
The redirect URI included is not valid.
- 500 오류
디스크에서 서비스할 수 없음
httprange: new resource 403
- GitLab 14.0 이상으로 업그레이드한 후 GitLab Pages가 작동하지 않는 경우
- GitLab Pages 배포 작업이 “인식되지 않는 제공 업체” 오류로 실패하는 경우
- 404 오류
찾을 수 없는 페이지
GitLab 페이지 관리 문제 해결
이 페이지에는 GitLab 페이지를 관리하는 중에 마주칠 수 있는 문제 목록이 포함되어 있습니다.
GitLab 페이지 로그 보는 방법
다음을 실행하여 페이지 데몬 로그를 볼 수 있습니다.
sudo gitlab-ctl tail gitlab-pages
또한 /var/log/gitlab/gitlab-pages/current
에서 로그 파일을 찾을 수도 있습니다.
지원되지 않는 프로토콜 스킴 ""
다음과 같은 오류가 표시되면:
{"error":"failed to connect to internal Pages API: Get \"/api/v4/internal/pages/status\": unsupported protocol scheme \"\"","level":"warning","msg":"attempted to connect to the API","time":"2021-06-23T20:03:30Z"}
이것은 페이지 서버 설정에서 HTTP(S) 프로토콜 스키마를 설정하지 않았음을 의미합니다. 수정 방법:
-
/etc/gitlab/gitlab.rb
를 편집합니다:gitlab_pages['gitlab_server'] = "https://<your_gitlab_server_public_host_and_port>" gitlab_pages['internal_gitlab_server'] = "https://<your_gitlab_server_private_host_and_port>" # 선택 사항, 기본값은 gitlab_pages['gitlab_server']가 사용됩니다
-
GitLab을 재구성합니다:
sudo gitlab-ctl reconfigure
IPv6를 통해 수신 대기하지 않는 서버에서 GitLab 페이지 프록시에 연결할 때 502 오류
일부 경우에, GitLab 페이지 서비스에 연결하기 위해 NGINX가 기본적으로 IPv6를 사용하는 경우가 있습니다. 이 경우 아래의 로그 항목과 유사한 내용을 볼 수 있다면 발생합니다.
2020/02/24 16:32:05 [error] 112654#0: *4982804 connect() failed (111: Connection refused) while connecting to upstream, client: 123.123.123.123, server: ~^(?<group>.*)\.pages\.example\.com$, request: "GET /-/group/project/-/jobs/1234/artifacts/artifact.txt HTTP/1.1", upstream: "http://[::1]:8090//-/group/project/-/jobs/1234/artifacts/artifact.txt", host: "group.example.com"
이를 해결하기 위해 GitLab 페이지 listen_proxy
설정에 명시적인 IP와 포트를 설정하여 GitLab 페이지 데몬이 수신해야 하는 명시적 주소를 정의합니다:
gitlab_pages['listen_proxy'] = '127.0.0.1:8090'
간헐적인 502 오류 또는 몇 일 후에 발생하는 오류
systemd
및 tmpfiles.d
를 사용하는 시스템에서 Pages를 실행하는 경우, DNS 구성이 손실될 수 있어 systemd
가 정기적으로 /tmp/
디렉토리를 정리할 수 있어 발생하는 간헐적인 502 오류에 마주칠 수 있습니다. 이를 해결하기 위해 다음과 같은 해결 방법이 있습니다:
-
tmpfiles.d
에게 Pages/tmp
디렉토리를 제거하지 말 것을 알립니다:echo 'x /tmp/gitlab-pages-*' >> /etc/tmpfiles.d/gitlab-pages-jail.conf
-
GitLab Pages를 재시작합니다:
sudo gitlab-ctl restart gitlab-pages
GitLab 페이지에 액세스할 수 없음
GitLab 페이지에 액세스할 수 없는 경우(예: 502 Bad Gateway
오류 수신, 또는 로그인 루프가 발생하는 경우) Pages 로그에 다음과 같은 오류가 표시됩니다:
"error":"retrieval context done: context deadline exceeded","host":"root.docs-cit.otenet.gr","level":"error","msg":"could not fetch domain information from a source"
-
/etc/gitlab/gitlab.rb
에 다음을 추가합니다:gitlab_pages['internal_gitlab_server'] = 'http://localhost:8080'
-
GitLab Pages를 재시작합니다:
sudo gitlab-ctl restart gitlab-pages
내부 GitLab API에 연결할 수 없음
다음과 같은 오류가 표시되면:
ERRO[0010] Failed to connect to the internal GitLab API after 0.50s error="failed to connect to internal Pages API: HTTP status: 401"
만일 분리된 서버에서 GitLab Pages 실행을 하고 있다면 GitLab 13.3로 업그레이드한 후 GitLab 서버에서 Pages 서버로 /etc/gitlab/gitlab-secrets.json
파일을 복사해야 합니다. 다른 이유로는 GitLab 서버와 Pages 서버 사이의 네트워크 연결 문제가 있을 수 있으며, 이는 방화벽 구성 또는 닫힌 포트 등이 있을 수 있습니다. 예를 들어 연결 시간 초과가 있는 경우:
error="failed to connect to internal Pages API: Get \"https://gitlab.example.com:3000/api/v4/internal/pages/status\": net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)"
페이지는 GitLab API의 인스턴스와 통신할 수 없습니다.
기본값 domain_config_source=auto
를 사용하고 여러 인스턴스의 GitLab Pages를 실행하는 경우 페이지 콘텐츠를 제공하는 동안 간헐적으로 502 오류 응답을 확인할 수 있습니다. 또한 Pages 로그에서 다음과 같은 경고 메시지도 볼 수 있습니다:
WARN[0010] 페이지는 GitLab API의 인스턴스와 통신할 수 없습니다. gitlab-secrets.json 파일을 동기화하십시오. https://gitlab.com/gitlab-org/gitlab-pages/-/issues/535#workaround. error="pages endpoint unauthorized"
이는 GitLab Rails와 GitLab Pages 간에 gitlab-secrets.json
파일이 오래되었을 때 발생할 수 있습니다. 모든 GitLab Pages 인스턴스에 별도 서버에서 GitLab Pages 실행의 단계 8-10을 따르세요.
AWS 네트워크 로드 밸런서 및 GitLab Pages 사용 시 간헐적인 502 오류
클라이언트 IP 보존을 활성화한 네트워크 로드 밸런서를 사용하면 연결이 시간 초과될 수 있으며 요청이 원본 서버로 다시 루프될 때 발생합니다. 이는 핵심 GitLab 응용 프로그램과 GitLab Pages를 모두 실행하는 GitLab 인스턴스에 발생할 수 있습니다. 또한 동일한 호스트 또는 컨테이너에서 핵심 GitLab 응용 프로그램과 GitLab Pages를 모두 실행하는 경우에도 발생할 수 있습니다.
AWS는 이 문제를 해결하기 위해 IP 대상 유형을 사용하는 것을 권장합니다.
핵심 GitLab 응용 프로그램 및 GitLab Pages가 동일한 호스트 또는 컨테이너에서 실행되는 경우 클라이언트 IP 보존 비활성화를 해결책으로 사용할 수 있습니다.
securecookie: failed to generate random iv
및 Failed to save the session
으로 500 오류 발생
이 문제는 오래된 운영 체제에서 발생할 가능성이 가장 높습니다. Pages 데몬은 securecookie
라이브러리를 사용하여 Go의 crypto/rand
를 통해 무작위 문자열을 얻습니다. 이를 위해 호스트 OS에서 getrandom
시스템 호출 또는 /dev/urandom
이 사용 가능해야 합니다. 공식으로 지원되는 운영 체제로 업그레이드하는 것이 권장됩니다.
요청된 범위가 잘못되었거나 알 수 없습니다.
이 문제는 GitLab Pages OAuth 애플리케이션의 권한에서 발생합니다. 이를 해결하려면 다음을 확인하세요:
- 왼쪽 사이드바에서 맨 아래에서 관리 영역을 선택합니다.
- 응용 프로그램 > GitLab Pages를 선택합니다.
- 응용 프로그램을 편집합니다.
-
범위에서
api
범위가 선택되었는지 확인합니다. - 변경 내용을 저장하세요.
별도 페이지 서버를 실행하는 경우, 이 설정은 주 GitLab 서버에서 구성해야 합니다.
와일드카드 DNS 항목을 설정할 수 없는 경우 해결책
와일드카드 DNS 전제조건을 충족하지 못하는 경우 GitLab Pages를 제한된 방식으로 사용할 수 있습니다:
- Pages를 사용해야 하는 모든 프로젝트를 하나의 그룹 네임스페이스(예:
pages
)로 이동합니다. -
*.
-와일드카드 없이 DNS 항목을 설정합니다. 예:pages.example.io
. -
gitlab.rb
파일에서pages_external_url http://example.io/
를 구성합니다. GitLab이 자동으로 접두어를 추가하므로 그룹 네임스페이스를 여기에 포함하지 않습니다.
Pages 데몬이 권한 거부 오류로 실패하는 경우
/tmp
가 noexec
로 마운트된 경우 Pages 데몬은 다음과 같은 오류와 함께 시작하지 못합니다:
{"error":"fork/exec /gitlab-pages: permission denied","level":"fatal","msg":"could not create pages daemon","time":"2021-02-02T21:54:34Z"}
이 경우 TMPDIR
을 noexec
로 마운트되지 않은 위치로 변경합니다. /etc/gitlab/gitlab.rb
에 다음을 추가합니다:
gitlab_pages['env'] = {'TMPDIR' => '<new_tmp_path>'}
추가한 후 sudo gitlab-ctl reconfigure
로 다시 구성하고 sudo gitlab-ctl restart
로 GitLab을 다시 시작합니다.
Pages Access Control을 사용할 때 The redirect URI included is not valid.
pages_external_url
이 언제든지 업데이트된 경우 이 오류가 발생할 수 있습니다. 다음을 확인하세요:
-
시스템 OAuth 애플리케이션을 확인합니다:
- 왼쪽 사이드바에서 맨 아래에서 관리 영역을 선택합니다.
- 응용 프로그램을 선택한 다음 새 응용 프로그램 추가를 선택합니다.
-
Callback URL/Redirect URI가
pages_external_url
이 구성된 프로토콜(HTTP 또는 HTTPS)을 사용하는지 확인합니다.
-
Redirect URI
의 도메인 및 경로 구성 요소가 유효한지 확인합니다. 이는projects.<pages_external_url>/auth
와 같아야 합니다.
500 오류 디스크에서 서비스할 수 없음
500 페이지 응답을 받고 다음과 유사한 오류를 만나면:
ERRO[0145] cannot serve from disk error="gitlab: disk access is disabled via enable-disk=false" project_id=27 source_path="file:///shared/pages/@hashed/67/06/670671cd97404156226e507973f2ab8330d3022ca96e0c93bdbdb320c41adcaf/pages_deployments/14/artifacts.zip" source_type=zip
GitLab Rails가 GitLab Pages에게 디스크의 위치에서 콘텐츠를 제공하도록 알리지만 GitLab Pages가 디스크 액세스를 비활성화하도록 구성된 경우입니다.
디스크 액세스를 활성화하려면:
-
/etc/gitlab/gitlab.rb
에서 GitLab Pages의 디스크 액세스를 활성화합니다.gitlab_pages['enable_disk'] = true
httprange: new resource 403
다음과 유사한 오류가 표시되면:
{"error":"httprange: new resource 403: \"403 Forbidden\"","host":"root.pages.example.com","level":"error","msg":"vfs.Root","path":"/pages1/","time":"2021-06-10T08:45:19Z"}
그리고 별도의 서버에서 파일을 NFS를 통해 동기화하는 경우, 공유 페이지 디렉터리가 주 GitLab 서버 및 GitLab Pages 서버의 다른 경로에 마운트되어 있을 수 있습니다.
이 경우에 객체 저장소를 구성하고 기존 페이지 데이터를 마이그레이션하는 것이 강력히 권장됩니다.
또는 두 서버의 동일한 경로에 GitLab Pages 공유 디렉터리를 마운트할 수 있습니다.
GitLab 14.0 이상으로 업그레이드한 후 GitLab Pages가 작동하지 않는 경우
GitLab 14.0에서는 수동 개입이 필요할 수 있는 GitLab Pages에 대한 여러 변경 사항이 소개되었습니다.
- 먼저 이 마이그레이션 가이드를 따르십시오.
- GitLab 14.3 이상으로 업그레이드해 보십시오. 일부 문제가 GitLab 14.1, 14.2 및 14.3에서 수정되었습니다.
- 작동하지 않는 경우 GitLab Pages 로그를 확인하고 거기서 오류를 확인한 후 이 페이지에서 해당 오류를 검색하십시오.
경고: GitLab 14.0에서 14.2에서는 일시적으로 레거시 저장소와 구성 메커니즘을 활성화할 수 있습니다.
그렇게 하려면:
-
이 마이그레이션 피드백 이슈에서 보이는 문제를 설명합니다.
-
/etc/gitlab/gitlab.rb
파일을 편집합니다.gitlab_pages['use_legacy_storage'] = true
GitLab Pages 배포 작업이 “인식되지 않는 제공 업체” 오류로 실패하는 경우
pages 작업은 성공하지만 deploy 작업이 “인식되지 않는 제공 업체” 오류를 반환하는 경우:
“인식되지 않는 제공 업체” 오류 메시지는 GitLab이 객체 저장소에 연결하기 위해 사용하는 fog
젬에서 올 수 있습니다.
해결 방법:
-
gitlab_rails['pages_object_store_enabled']
가 활성화되어 있지만 버킷 세부 정보가 구성되지 않은 경우gitlab.rb
파일을 확인하십시오.- S3 호환 연결 설정 가이드를 따라 페이지 배포용 객체 저장소를 구성합니다.
- 그 줄을 주석 처리하여 배포를 로컬에 저장합니다.
-
gitlab.rb
파일에 대한 변경 사항을 저장한 후 GitLab 다시 구성합니다.
404 오류 찾을 수 없는 페이지
GitLab Pages로부터 404 Page Not Found
응답을 받는 경우:
-
.gitlab-ci.yml
에서pages:
작업이 있는지 확인합니다. - 현재 프로젝트의 파이프라인을 확인하여
pages:deploy
작업이 실행되고 있는지 확인합니다.
pages:deploy
작업이 없으면 GitLab Pages 사이트의 업데이트가 발행되지 않습니다.