Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Table of Contents

...

  1. 프로젝트의 Settings > General > Visibility, project features, permissions 확장

  2. Pages 버튼 전환
    토글 버튼이 표시되지 않으면 활성화되지 않은 상태. 관리자에게 활성화 요청

  3. 페이지 접근 제어 드롭다운을 사용하면 프로젝트의 가시성에 따라 GitLab 페이지로 호스팅되는 페이지를 볼 수 있는 사용자를 설정할 수 있다.

    • 프로젝트가 private인 경우 :
      Only project members : 프로젝트 구성원만 웹사이트를 탐색 가능
      Everyone : GitLab에 접속 가능한(로그인/로그아웃 상관없이) 모든사용자는 프로젝트 권한에 상관없이 웹사이트를 탐색 가능

    • 프로젝트가 internal인 경우 :
      Only project members : 프로젝트 구성원만 웹사이트를 탐색 가능
      Everyone with access : GitLab에 로그인한 모든사용자는 프로젝트 권한에 상관없이 웹사이트를 탐색 가능
      Everyone : GitLab에 접속 가능한(로그인/로그아웃 상관없이) 모든사용자는 프로젝트 권한에 상관없이 웹사이트를 탐색 가능

    • 프로젝트가 public인 경우 :
      Only project members : 프로젝트 구성원만 웹사이트를 탐색 가능
      Everyone with access : GitLab에 접속 가능한(로그인/로그아웃 상관없이) 모든사용자는 프로젝트 권한에 상관없이 웹사이트를 탐색 가능

  4. Save changes 클릭

...

Info

public/data/index.html이 존재할 경우 /data 및 /data/ URL 경로 모두에 대해 public/data.html 파일보다 우선한다.

사용자 지정 도메인 및 SSL/TLS 인증서

GitLab 페이지의 선택적 기능으로, 사용자 지정 도메인으로 GitLab 페이지를 설정하고 여기에 SSL/TLS 인증서를 추가한다.

사용자 지정 도메인으로 페이지 설정

요구사항

  • GitLab 페이지 웹 사이트 가동 및 실행, 기본 페이지 도메인(*.gitlab.io, GitLab.com)

  • 사용자 지정 도메인 이름 example.com 또는 하위 도메인 subdomain.example.com

  • 도메인의 서버 제어판에 액세스하여 DNS 레코드 설정:

    • 도메인이 GitLab 페이지 서버를 가리키는 DNS A 또는 CNAME 레코드

    • 도메인의 소유권을 확인하기 위한 DNS TXT 레코드

Step

사용자 정의 도메인을 페이지에 추가하려면 아래 단계를 따른다. DNS 레코드에 대한 개요는 이 페이지를 참조한다.

1. 페이지에 사용자 지정 도메인 추가

프로젝트의 Setting > Pages > + New domain 클릭하여 사용자 지정 도메인을 GitLab 페이지에 추가. 다음 중 하나를 선택.
- SSL/TLS 인증서 추가
- 공백으로 남겨놓는다.(나중에 추가할 수 있음)

...

Create New Domain 클릭

2. 확인 코드 받기

일단 페이지에 새 도메인을 추가하면, 확인 코드가 프롬프트된다. 해당 값을 복사하여 다음 단계에서 도메인의 제어판에 TXT 레코드로 붙여 넣으면 된다.

...

3. 페이지에 대한 DNS 레코드 설정
루트 도메인의 경우

루트 도메인(example.com)의 요구 사항:

  • 도메인에서 페이지 서버를 가리키는 DNS A 레코드

  • 도메인의 소유권을 확인하기 위한 TXT 레코드

From

DNS Record

To

example.com

A

35.185.44.232

_gitlab-pages-verification-code.example.com

TXT

gitlab-pages-verification-code=00112233445566778899aabbccddeeff

GitLab.com의 프로젝트의 경우, 이 IP는 35.42.44.232이다. 다른 GitLab 인스턴스(CE 또는 EE)에 있는 프로젝트의 경우 sysadmin에게 이 정보(어느 IP 주소가 해당 인스턴스에서 실행 중인 페이지 서버인지)를 문의하기 바란다.

...

Note

루트 도메인을 GitLab 페이지 웹 사이트에만 사용하고 도메인 등록 담당자가 이 기능을 지원하는 경우 A 레코드 대신 DNS 정점 CNAME 레코드를 추가할 수 있다는 점에 유의. GitLab.com의 GitLab 페이지 IP가 어떤 이유로든 변경될 때 A 레코드를 업데이트할 필요가 없다는 것이 장점이다. 몇 가지 예외가 있을 수 있지만 루트 도메인에 대해 MX 레코드를 설정하면 이 방법이 작동하지 않을 가능성이 높기 때문에 이 방법은 권장되지 않는다.

서브 도메인의 경우

서브 도메인(subdomain.example.com)의 요구 사항:

  • 서브 도메인을 페이지 서버로 가리키는 DNS CNAME 레코드

  • 도메인의 소유권을 확인하기 위한 DNS TXT 레코드

From

DNS Record

To

subdomain.example.com

CNAME

namespace.gitlab.io

_gitlab-pages-verification-code.subdomain.example.com

TXT

gitlab-pages-verification-code=00112233445566778899aabbccddeeff

사용자든 프로젝트 웹 사이트든 CNAME은 프로젝트 디렉토리가 아닌 페이지 도메인(namespace.gitlab.io)을 가리켜야 한다는 점에 유의.

...

루트 및 하위 도메인의 경우

예를 들어, example.com과 www.example.com과 같이 하위 도메인과 루트 도메인이 모두 동일한 웹 사이트를 가리켜야 하는 경우, 요구 사항은 다음과 같다:

  • 도메인에 대한 DNS A 레코드

  • 하위 도메인의 DNS CNAME 레코드

  • 각각에 대한 DNS TXT 레코드

From

DNS Record

To

example.com

A

35.185.44.232

_gitlab-pages-verification-code.example.com

TXT

gitlab-pages-verification-code=00112233445566778899aabbccddeeff

www.example.com

CNAME

namespace.gitlab.io

_gitlab-pages-verification-code.www.example.com

TXT

gitlab-pages-verification-code=00112233445566778899aabbccddeeff

Info
  • domain.com을 GitLab Pages 사이트로 가리키려면 CNAME 레코드가 아닌 A 레코드를 사용하십시오.

  • 기본 페이지 도메인 뒤에 특수 문자를 추가하지 마십시오. 예: namespace.gitlab.io/을 가리키지 마십시오. 그러나 일부 도메인 호스팅 제공자는 추적 점(namespace.gitlab.io.)을 요청할 수 있습니다.

  • GitLab.com의 GitLab 페이지 IP는 2017년에 변경

  • GitLab.com의 GitLab 페이지 IP는 2018년 52.124.135에서 35.124.44.232로 변경

4. 도메인의 소유권 확인

모든 DNS 레코드를 추가한 후:

  1. 프로젝트의 Settings > Pages

  2. 도메인 이름을 찾고 Details 클릭

  3. 새 도메인을 활성화하려면 Retry verification 클릭

...

도메인이 활성화되는 즉시 도메인 이름을 통해 웹 사이트를 사용할 수 있다.

Note

도메인 검증이 활성화된 GitLab 인스턴스를 고려해 7일 동안 도메인을 검증할 수 없는 경우 해당 도메인은 GitLab 프로젝트에서 제거된다.

Info
  • GitLab.com 사용자에게는 도메인 확인이 필요하며, GitLab 자체 관리 인스턴스의 경우 GitLab 관리자에게 사용자 지정 도메인 확인을 사용하지 않도록 설정할 수 있는 옵션이 있다.

  • DNS 전파는 보통 변경 완료하는데 몇 분 정도 면 끝나지만 간혹 시간이 지연될 수 있다(최대 24시간). 변경이 완료될 때까지 검증은 실패하고 도메인 방문 시도 시 404 에러로 응답한다.

  • 도메인이 활성화되면 확인 레코드를 유지한다. 도메인은 주기적으로 복구되기 때문에 레코드가 제거되면 도메인이 비활성화될 수 있다.

페이지 도메인 검증 문제 해결

도메인 검증 TXT DNS 항목을 올바르게 구성했는지 수동으로 확인하려면 터미널에서 다음 명령을 실행:

Code Block
dig _gitlab-pages-verification-code.<YOUR-PAGES-DOMAIN> TXT

예상 출력:

Code Block
;; ANSWER SECTION:
_gitlab-pages-verification-code.<YOUR-PAGES-DOMAIN>. 300 IN TXT "gitlab-pages-verification-code=<YOUR-VERIFICATION-CODE>"

도메인 별칭 추가

동일한 프로젝트에 둘 이상의 별칭(사용자 지정 도메인 및 하위 도메인)을 추가할 수 있다. 별칭은 하나의 방으로 통하는 문을 많이 만들 수 있는 것으로 이해할 수 있다.

사이트에 설정한 모든 가명들은 Setting > Pages에 나열된다. 이 페이지에서 해당 페이지를 보고, 추가하고, 제거할 수 있다.

Cloudflare를 사용하여 www.domain.com으로 리디렉션

Cloudflare를 사용할 경우 GitLab에 www.domain.com과 domain.com을 모두 추가하지 않고도 www를 domain.com으로 리디렉션할 수 있다.

  1. Cloudflare에서 domain.com을 35.185.44.232로 가리키는 DNS A 레코드 생성

  2. GitLab에서 GitLab 페이지에 도메인을 추가하고 확인 코드 획득

  3. Cloudflare에서 DNS TXT 레코드를 생성하여 도메인 확인

  4. GitLab에서 도메인 확인

  5. Cloudflare에서 wwww domain.com을 가리키는 DNS CNAME 레코드를 생성

  6. Cloudflare에서 www.domain.com을 가리키는 페이지 규칙을 domain.com에 추가
    - 도메인의 대시보드 > 상단 탐색기에서 Page Rules 클릭
    - Create Page Rule 클릭
    - 도메인 www.domain.com을 입력하고 + Add a Setting 클릭
    - 드롭다운 메뉴에서 Forwarding URL 선택 > 상태 코드 301 - Permanent Redirect 선택
    - 대상 URL https://domain.com 입력

페이지에 SSL/TLS 인증서 추가

SSL/TLS 인증에 대한 개요는 이 페이지를 참조한다.

GitLab 페이지를 사용하여 사용자 지정 도메인을 보호하려면:

  • 페이지 도메인에 대한 SSL 인증서를 자동으로 가져오고 갱신하는 GitLab 페이지와의 암호화 통합 사용

  • 아래 단계에 따라 수동으로 GitLab 페이지 웹 사이트에 SSL/TLS 인증서 추가

요구사항
  • 사용자 지정 도메인을 통해 가동 및 실행 액세스 할 수 있는 GitLab 페이지 웹 사이트

  • PEM 인증서 : CA에서 생성한 인증서로서 Certificate (PEM) 필드에 추가 필요

  • 중간 인증서 : ("root certificate"라고 함), CA를 식별하는 암호화 키체인의 부분이다. 보통 PEM 인증서와 결합되지만 수동으로 추가해야 하는 경우도 있다. CloudFlare 인증서는 이러한 사례 중 하나이다.

  • 개인 키 : 도메인에 대해 PEM을 검증하는 암호화된 키

Steps
  • 새 도메인을 추가할 때 인증서를 추가하려면 Settings > Pages > New Domain으로 이동하여 도메인 이름과 인증서를 추가

  • 이전에 추가된 도메인에 인증서를 추가하려면 프로젝트의 Settings > Pages로 이동하여 도메인 이름을 찾고 DetailsEdit을 클릭하여 인증서를 추가

...

  1. 해당 필드에 PEM 인증서를 추가

  2. 인증서가 중간 인증서를 누락한 경우 루트 인증서를 복사하여 붙여넣고(일반적으로 CA 웹 사이트에서 사용 가능) PEM 인증서와 동일한 필드에 붙여넣기

  3. 개인 키를 복사하여 마지막 필드에 붙여 넣기

Info

일반 텍스트 편집기에서 인증서 또는 암호화 키를 열지 마십시오. 항상 코드 편집기(예: Sublime Text, Atom, Dreamweaver, Brackets 등)를 사용하십시오.

GitLab 페이지 웹 사이트에 HTTPS 강제 적용

웹 사이트 방문자의 보안을 강화하기 위해 GitLab 페이지에 HTTPS를 적용하도록 선택할 수 있다. 이렇게 하면 HTTP를 통해 웹 사이트를 방문하려는 모든 시도가 301을 통해 HTTPS로 자동 리디렉션된다.

GitLab의 기본 도메인 및 사용자 지정 도메인 모두에서 작동한다.(해당 서비스에 유효한 인증서를 설정한 경우)

이 설정을 사용하려면:

  1. 프로젝트의 Settings > Pages로 이동

  2. Force HTTPS (requires valid certificates) 체크박스 체크

Info

GitLab 페이지 앞에서 CloudFlare CDN을 사용하는 경우 SSL 연결 설정을 플렉시블이 아닌 전체로 설정. 자세한 내용은 CloudFlare CDN 지침을 참조.

GitLab 페이지와 Let's Encryption과의 통합

GitLab Pages와 LE(Let's Encrypt)를 통합하면 사용자가 인증서를 직접 발급하고 업데이트해야 하는 번거로움 없이 사용자 지정 도메인이 있는 페이지 웹 사이트에 대한 LE 인증서를 사용할 수 있으며, GitLab은 곧바로 사용이 가능하다.

Let's Encryption은 자유롭고 자동화된 오픈 소스 인증 기관이다.

Note

이 기능은 페이지 대몬을 실행하는 데 필요한 와일드카드 인증서가 아닌 사용자 지정 도메인에 대한 인증서만 다룬다. 와일드카드 인증서 생성은 이 이슈에서 추적된다.

요구사항

도메인에 대한 SSL 인증서의 자동 공급을 실행하기 전에 다음이 있는지 확인:

  • GitLab에서 웹 사이트의 소스 코드를 포함하는 프로젝트 생성

  • 도메인(example.com) 획득과 페이지 웹 사이트를 가리키는 DNS 항목 추가

  • 페이지 프로젝트에 도메인을 추가하고 소유권을 확인

  • 웹 사이트가 실행 중이고 사용자 지정 도메인을 통해 액세스할 수 있는지 확인

Info

GitLab의 Let's Encryption 통합은 GitLab.com에서 사용할 수 있다. 자체 관리 GitLab 인스턴스의 경우 관리자가 사용 가능으로 설정했는지 확인하여야 한다.

사용자 지정 도메인에 대해 암호화 사용

요구 사항을 충족한 후 Let's Encryption 통합:

  1. 프로젝트의 Settings > Pages로 이동

  2. 도메인을 찾아 Details 클릭

  3. 오른쪽 상단 모서리에서 Edit 클릭

  4. Automatic certificate management using Let’s Encrypt 토글을 전환하여 통합 암호화 사용:

    Image Added

  5. Save changes 클릭

GitLab이 활성화되면 LE 인증서를 획득하여 연결된 페이지 도메인에 추가한다. GitLab이 자동 갱신한다.

Info
  • 인증서 발급 및 페이지 구성 업데이트는 최대 1시간이 소요될 수 있다.

  • 도메인 설정에 SSL 인증서가 이미 있는 경우 LE 인증서로 대체될 때까지 계속 동작한다.

문제 해결

“Something went wrong while obtaining the Let’s Encrypt certificate” 오류

Let's Encryption 인증서를 가져오는 동안 오류가 발생한 경우, 다음 단계를 수행하여 인증서를 다시 획득한다.

  1. 프로젝트의 Settings > Pages로 이동

  2. 도메인에서 Edit 클릭

  3. Retry 클릭

  4. 여전히 동일한 오류가 발생하는 경우:

    1. 도메인에 대한 CNAME 또는 DNS 레코드를 하나만 올바르게 설정했는지 확인

    2. 도메인에 AAAA DNS 레코드가 없는지 확인

    3. 도메인 또는 상위 도메인에 대한 CAA DNS 레코드가 있는 경우 letsencrypt.org이 포함되어 있는지 확인

    4. 도메인이 검증되었는지 확인

    5. 1단계로 이동

“GitLab is obtaining a Let’s Encrypt SSL certificate for this domain. This process can take some time. Please try again later.” 메시지 표시 후 한 시간 이상 대기중일 경우

다음 단계에 따라 GitLab 페이지에 대한 도메인을 제거하고 다시 추가한다.

  1. 프로젝트의 Settings > Pages로 이동

  2. 도메인에서 Remove 클릭

  3. 도메인을 다시 추가하고 확인

  4. 도메인에 대한 통합 암호화 사용

  5. 시간이 흐른 후에도 동일한 메시지가 표시되는 경우:

    1. 도메인에 대한 CNAME 또는 DNS 레코드를 하나만 올바르게 설정했는지 확인

    2. 도메인에 AAAA DNS 레코드가 없는지 확인

    3. 도메인 또는 상위 도메인에 대한 CAA DNS 레코드가 있는 경우 letsencrypt.org이 포함되어 있는지 확인

    4. 1단계로 이동

기술 문서 및 참조 페이지

문서

기술

정적 웹 사이트와 동적 웹 사이트

정적 사이트와 동적 사이트 개요

최신 정적 사이트 생성기

SSG 개요

GitLab Pages로 SSG 사이트 구축

GitLab 페이지에 SSG를 사용

CloudFlare 인증서

CloudFlare 인증서로 페이지 사이트를 보호