웹사이트 검색

Ubuntu 16.04에서 GitLab을 설치하고 구성하는 방법


소개

GitLab CE 또는 Community Edition은 문제 추적과 같은 추가 개발 관련 기능과 함께 주로 Git 리포지토리를 호스팅하는 데 사용되는 오픈 소스 애플리케이션입니다. 자체 인프라를 사용하여 호스팅하도록 설계되었으며 개발 팀을 위한 내부 리포지토리 저장소로 배포하거나 사용자와 인터페이스하는 방법으로 공개적으로 배포하거나 기여자가 자신의 프로젝트를 호스팅하는 방법으로 공개할 수 있는 유연성을 제공합니다.

GitLab 프로젝트를 사용하면 손쉬운 설치 메커니즘을 사용하여 자신의 하드웨어에 GitLab 인스턴스를 비교적 간단하게 설정할 수 있습니다. 이 가이드에서는 Ubuntu 16.04 서버에서 GitLab을 설치하고 구성하는 방법을 다룹니다.

전제 조건

이 튜토리얼에서는 새로운 Ubuntu 16.04 서버에 액세스할 수 있다고 가정합니다. 게시된 GitLab 하드웨어 요구 사항은 다음과 함께 서버를 사용할 것을 권장합니다.

  • 2코어
  • 4GB RAM

일부 스왑 공간을 RAM으로 대체할 수는 있지만 권장하지는 않습니다. 이 가이드에서는 최소한 위의 리소스가 있다고 가정합니다.

시작하려면 서버에 구성된 sudo 액세스 권한이 있는 루트가 아닌 사용자가 필요합니다. 추가 보안 계층을 제공하기 위해 기본 방화벽을 설정하는 것도 좋은 생각입니다. Ubuntu 16.04 초기 서버 설정 가이드의 단계에 따라 이 설정을 얻을 수 있습니다.

위의 전제 조건을 충족하면 계속해서 설치 절차를 시작하십시오.

종속성 설치

GitLab 자체를 설치하기 전에 설치 중에 그리고 지속적으로 활용하는 일부 소프트웨어를 설치하는 것이 중요합니다. 다행히 필요한 모든 소프트웨어는 Ubuntu의 기본 패키지 저장소에서 쉽게 설치할 수 있습니다.

이 세션 동안 apt를 처음 사용하므로 로컬 패키지 인덱스를 새로 고친 다음 다음을 입력하여 종속성을 설치할 수 있습니다.

  1. sudo apt-get update
  2. sudo apt-get install ca-certificates curl openssh-server postfix

이 소프트웨어 중 일부는 이미 설치되어 있을 것입니다. postfix 설치의 경우 메시지가 표시되면 인터넷 사이트를 선택합니다. 다음 화면에서 서버의 도메인 이름 또는 IP 주소를 입력하여 시스템이 메일을 보내는 방법을 구성합니다.

GitLab 설치

이제 종속 항목이 준비되었으므로 GitLab 자체를 설치할 수 있습니다. 이것은 설치 스크립트를 활용하여 GitLab 리포지토리로 시스템을 구성하는 간단한 프로세스입니다.

/tmp 디렉토리로 이동한 다음 설치 스크립트를 다운로드합니다.

  1. cd /tmp
  2. curl -LO https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh

다운로드한 스크립트를 자유롭게 검토하여 수행할 작업에 익숙한지 확인하십시오. 여기에서 스크립트의 호스팅된 버전을 찾을 수도 있습니다.

  1. less /tmp/script.deb.sh

스크립트의 안전성에 만족하면 설치 프로그램을 실행합니다.

  1. sudo bash /tmp/script.deb.sh

스크립트는 GitLab 유지 관리 리포지토리를 사용하도록 서버를 설정합니다. 이를 통해 다른 시스템 패키지에 사용하는 것과 동일한 패키지 관리 도구로 GitLab을 관리할 수 있습니다. 이 작업이 완료되면 apt를 사용하여 실제 GitLab 애플리케이션을 설치할 수 있습니다.

  1. sudo apt-get install gitlab-ce

이렇게 하면 시스템에 필요한 구성 요소가 설치됩니다.

방화벽 규칙 조정

GitLab을 구성하기 전에 방화벽 규칙이 웹 트래픽을 허용할 만큼 충분히 허용되는지 확인해야 합니다. 전제 조건에 링크된 가이드를 따른 경우 ufw 방화벽이 활성화됩니다.

다음을 입력하여 활성 방화벽의 현재 상태를 봅니다.

  1. sudo ufw status
Output
Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6)

보시다시피 현재 규칙은 SSH 트래픽 통과를 허용하지만 다른 서비스에 대한 액세스는 제한됩니다. GitLab은 웹 애플리케이션이므로 HTTP 액세스를 허용해야 합니다. GitLab 서버와 연결된 도메인 이름이 있는 경우 GitLab은 설치를 보호하기 위해 Let’s Encrypt 프로젝트에서 무료 TLS/SSL 인증서를 요청하고 활성화할 수도 있습니다. 이 경우에도 HTTPS 액세스를 허용하려고 합니다.

HTTP 및 HTTPS에 대한 프로토콜 대 포트 매핑은 /etc/services 파일에서 사용할 수 있으므로 해당 트래픽을 이름별로 허용할 수 있습니다. 아직 OpenSSH 트래픽을 활성화하지 않은 경우 해당 트래픽도 지금 허용해야 합니다.

  1. sudo ufw allow http
  2. sudo ufw allow https
  3. sudo ufw allow OpenSSH

ufw status 명령을 다시 확인하면 최소한 다음 두 서비스에 대해 구성된 액세스가 표시되어야 합니다.

  1. sudo ufw status
Output
Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere 80 ALLOW Anywhere 443 ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6) 80 (v6) ALLOW Anywhere (v6) 443 (v6) ALLOW Anywhere (v6)

위의 출력은 애플리케이션을 구성하면 GitLab 웹 인터페이스에 액세스할 수 있음을 나타냅니다.

GitLab 구성 파일 편집

애플리케이션을 사용하려면 하나의 구성 파일을 업데이트하고 재구성 명령을 실행해야 합니다. 먼저 Gitlab의 구성 파일을 엽니다.

  1. sudo nano /etc/gitlab/gitlab.rb

상단 근처에는 external_url 구성 줄이 있습니다. 자신의 도메인 또는 IP 주소와 일치하도록 업데이트하십시오. 도메인이 있는 경우 httphttps로 변경하여 GitLab이 요청하는 Let’s Encrypt 인증서로 보호되는 사이트로 사용자를 자동으로 리디렉션합니다.

# If your GitLab server does not have a domain name, you will need to use an IP
# address instead of a domain and keep the protocol as `http`.
external_url 'https://yourdomain'

다음으로 GitLab 서버에 도메인 이름이 있는 경우 파일에서 letsencrypt[enable] 설정을 검색합니다. 줄의 주석을 해제하고 true로 설정합니다. 이것은 GitLab에 귀하의 GitLab 도메인에 대한 Let’s Encrypt 인증서를 요청하고 트래픽을 제공하도록 애플리케이션을 구성하도록 지시합니다.

그 아래에서 letsencrypt[contact_emails] 설정을 찾습니다. 이 설정은 도메인에 문제가 있는 경우 Let’s Encrypt 프로젝트가 연락하는 데 사용할 수 있는 이메일 주소 목록을 정의합니다. 문제를 알 수 있도록 주석을 제거하고 작성하는 것이 좋습니다.

letsencrypt['enable'] = true
letsencrypt['contact_emails'] = ['sammy@yourdomain.com']

파일을 저장하고 닫습니다. 이제 다음 명령을 실행하여 Gitlab을 재구성합니다.

  1. sudo gitlab-ctl reconfigure

이렇게 하면 서버에 대해 찾을 수 있는 정보를 사용하여 GitLab이 초기화됩니다. 이것은 완전히 자동화된 프로세스이므로 어떤 프롬프트에도 응답할 필요가 없습니다. Let’s Encrypt 통합을 활성화한 경우 도메인에 대한 인증서를 구성해야 합니다.

웹 인터페이스를 통해 초기 구성 수행

이제 GitLab이 실행 중이고 액세스가 허용되었으므로 웹 인터페이스를 통해 애플리케이션의 일부 초기 구성을 수행할 수 있습니다.

처음으로 로그인

웹 브라우저에서 GitLab 서버의 도메인 이름을 방문하십시오.

http://gitlab_domain_or_IP

Let's Encrypt를 활성화하고 external_url에서 https를 사용한 경우 보안 HTTPS 연결로 리디렉션되어야 합니다.

처음 방문하면 관리 계정의 비밀번호를 설정하라는 초기 프롬프트가 표시됩니다.

초기 암호 프롬프트에서 관리 계정의 보안 암호를 제공하고 확인합니다. 완료되면 비밀번호 변경 버튼을 클릭합니다.

기존 GitLab 로그인 페이지로 리디렉션됩니다.

여기에서 방금 설정한 비밀번호로 로그인할 수 있습니다. 자격 증명은 다음과 같습니다.

  • 사용자 이름: root
  • 비밀번호: [설정한 비밀번호]

기존 사용자의 필드에 이 값을 입력하고 로그인 버튼을 클릭합니다. 애플리케이션에 로그인하고 프로젝트 추가를 시작하라는 메시지를 표시하는 랜딩 페이지로 이동합니다.

이제 GitLab을 원하는 방식으로 설정하기 위해 몇 가지 간단한 변경을 수행할 수 있습니다.

프로필 설정 조정

새로 설치한 후 가장 먼저 해야 할 일 중 하나는 프로필을 더 나은 모양으로 만드는 것입니다. GitLab은 몇 가지 합리적인 기본값을 선택하지만 소프트웨어 사용을 시작하면 일반적으로 적절하지 않습니다.

필요한 수정을 하려면 인터페이스의 오른쪽 상단 모서리에 있는 사용자 아이콘을 클릭하십시오. 표시되는 드롭다운 메뉴에서 설정을 선택합니다.

설정의 프로필 섹션으로 이동합니다.

"Administrator” 및 "admin@example.com”의 이름과 이메일 주소를 좀 더 정확하게 조정하십시오. 선택한 이름은 다른 사용자에게 표시되며 이메일은 기본 아바타 감지, 알림, 인터페이스를 통한 Git 작업 등에 사용됩니다.

완료되면 하단의 프로필 설정 업데이트 버튼을 클릭합니다.

제공한 주소로 확인 이메일이 전송됩니다. GitLab에서 계정을 사용할 수 있도록 이메일의 지침에 따라 계정을 확인하세요.

계정 이름 변경

그런 다음 왼쪽 메뉴 표시줄에서 계정 항목을 클릭합니다.

여기에서 비공개 API 토큰을 찾거나 2단계 인증을 구성할 수 있습니다. 그러나 현재 관심 있는 기능은 사용자 이름 변경 섹션입니다.

기본적으로 첫 번째 관리 계정에는 root라는 이름이 지정됩니다. 알려진 계정 이름이므로 다른 이름으로 변경하는 것이 더 안전합니다. 여전히 관리 권한이 있습니다. 변경되는 유일한 것은 이름입니다.

사용자 이름 업데이트 버튼을 클릭하여 변경합니다.

다음에 GitLab에 로그인할 때 새 사용자 이름을 사용해야 합니다.

계정에 SSH 키 추가

대부분의 경우 Git와 함께 SSH 키를 사용하여 GitLab 프로젝트와 상호 작용할 수 있습니다. 이렇게 하려면 SSH 공개 키를 GitLab 계정에 추가해야 합니다.

로컬 컴퓨터에 이미 생성된 SSH 키 쌍이 있는 경우 일반적으로 다음을 입력하여 공개 키를 볼 수 있습니다.

  1. cat ~/.ssh/id_rsa.pub

다음과 같은 큰 텍스트 덩어리가 표시되어야 합니다.

Output
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDMuyMtMl6aWwqBCvQx7YXvZd7bCFVDsyln3yh5/8Pu23LW88VXfJgsBvhZZ9W0rPBGYyzE/TDzwwITvVQcKrwQrvQlYxTVbqZQDlmsC41HnwDfGFXg+QouZemQ2YgMeHfBzy+w26/gg480nC2PPNd0OG79+e7gFVrTL79JA/MyePBugvYqOAbl30h7M1a7EHP3IV5DQUQg4YUq49v4d3AvM0aia4EUowJs0P/j83nsZt8yiE2JEYR03kDgT/qziPK7LnVFqpFDSPC3MR3b8B354E9Af4C/JHgvglv2tsxOyvKupyZonbyr68CqSorO2rAwY/jWFEiArIaVuDiR9YM5 sammy@mydesktop

이 텍스트를 복사하고 GitLab 웹 인터페이스의 프로필 설정 페이지로 돌아갑니다.

대신 다음과 같은 메시지가 표시되면 아직 시스템에 구성된 SSH 키 쌍이 없는 것입니다.

Output
cat: /home/sammy/.ssh/id_rsa.pub: No such file or directory

이 경우 다음을 입력하여 SSH 키 쌍을 생성할 수 있습니다.

  1. ssh-keygen

기본값을 수락하고 선택적으로 암호를 제공하여 키를 로컬로 보호합니다.

Output
Generating public/private rsa key pair. Enter file in which to save the key (/home/sammy/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/sammy/.ssh/id_rsa. Your public key has been saved in /home/sammy/.ssh/id_rsa.pub. The key fingerprint is: SHA256:I8v5/M5xOicZRZq/XRcSBNxTQV2BZszjlWaIHi5chc0 sammy@gitlab.docsthat.work The key's randomart image is: +---[RSA 2048]----+ | ..%o==B| | *.E =.| | . ++= B | | ooo.o . | | . S .o . .| | . + .. . o| | + .o.o ..| | o .++o . | | oo=+ | +----[SHA256]-----+

이 키가 있으면 다음을 입력하여 위와 같이 공개 키를 표시할 수 있습니다.

  1. cat ~/.ssh/id_rsa.pub
Output
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDMuyMtMl6aWwqBCvQx7YXvZd7bCFVDsyln3yh5/8Pu23LW88VXfJgsBvhZZ9W0rPBGYyzE/TDzwwITvVQcKrwQrvQlYxTVbqZQDlmsC41HnwDfGFXg+QouZemQ2YgMeHfBzy+w26/gg480nC2PPNd0OG79+e7gFVrTL79JA/MyePBugvYqOAbl30h7M1a7EHP3IV5DQUQg4YUq49v4d3AvM0aia4EUowJs0P/j83nsZt8yiE2JEYR03kDgT/qziPK7LnVFqpFDSPC3MR3b8B354E9Af4C/JHgvglv2tsxOyvKupyZonbyr68CqSorO2rAwY/jWFEiArIaVuDiR9YM5 sammy@mydesktop

표시되는 텍스트 블록을 복사하고 GitLab 웹 인터페이스의 프로필 설정으로 돌아갑니다.

왼쪽 메뉴에서 SSH 키 항목을 클릭합니다.

제공된 공간에 로컬 컴퓨터에서 복사한 공개 키를 붙여넣습니다. 설명이 포함된 제목을 지정하고 키 추가 버튼을 클릭합니다.

이제 GitLab 계정 자격 증명을 제공하지 않고도 로컬 컴퓨터에서 GitLab 프로젝트 및 리포지토리를 관리할 수 있습니다.

공개 가입 제한 또는 비활성화(선택 사항)

GitLab 인스턴스의 랜딩 페이지를 방문하면 누구나 계정에 가입할 수 있다는 사실을 눈치채셨을 것입니다. 공개 프로젝트를 호스팅하려는 경우 원하는 것일 수 있습니다. 그러나 많은 경우 더 제한적인 설정이 바람직합니다.

시작하려면 페이지 상단의 기본 메뉴 표시줄에 있는 렌치 아이콘을 클릭하여 관리 영역으로 이동합니다.

다음 페이지에서 전체 GitLab 인스턴스에 대한 개요를 볼 수 있습니다. 설정을 조정하려면 왼쪽 메뉴 하단의 설정 항목을 클릭합니다.

GitLab 인스턴스의 전역 설정으로 이동합니다. 여기에서 새 사용자가 가입할 수 있는지 여부와 액세스 수준에 영향을 미치는 여러 설정을 조정할 수 있습니다.

가입 비활성화

가입을 완전히 비활성화하려면(여전히 새 사용자의 계정을 수동으로 생성할 수 있음) 가입 제한 섹션까지 아래로 스크롤하십시오.

가입 가능 확인란을 선택 취소합니다.

아래로 스크롤하여 저장 버튼을 클릭합니다.

가입 섹션은 이제 GitLab 랜딩 페이지에서 제거되어야 합니다.

도메인별 가입 제한

도메인과 연결된 이메일 주소를 제공하는 조직의 일부로 GitLab을 사용하는 경우 가입을 완전히 비활성화하는 대신 도메인별로 제한할 수 있습니다.

가입 제한 섹션에서 먼저 가입 시 확인 이메일 보내기 상자를 선택하여 사용자가 이메일을 확인한 후에만 로그인할 수 있도록 합니다.

그런 다음 등록을 위해 허용된 도메인 상자에 도메인을 한 줄에 하나씩 추가합니다. 별표 "*”를 사용하여 와일드카드 도메인을 지정할 수 있습니다.

아래로 스크롤하여 저장 버튼을 클릭합니다.

가입 섹션은 이제 GitLab 랜딩 페이지에서 제거되어야 합니다.

프로젝트 생성 제한

기본적으로 새 사용자는 최대 10개의 프로젝트를 만들 수 있습니다. 외부의 새 사용자에게 가시성 및 참여를 허용하고 싶지만 새 프로젝트 생성에 대한 액세스를 제한하려면 계정 및 한도 설정 섹션에서 그렇게 할 수 있습니다.

내부에서 기본 프로젝트 제한을 0으로 변경하여 새 사용자가 프로젝트를 만들지 못하도록 완전히 비활성화할 수 있습니다.

새 사용자는 여전히 수동으로 프로젝트에 추가할 수 있으며 다른 사용자가 만든 내부 또는 공개 프로젝트에 액세스할 수 있습니다.

아래로 스크롤하여 저장 버튼을 클릭합니다.

이제 새 사용자는 계정을 만들 수 있지만 프로젝트를 만들 수는 없습니다.

자동 갱신을 위한 크론 작업 생성 Let's Encrypt Certificates

기본적으로 Let’s Encrypt 인증서는 90일 동안만 유효합니다. 이전에 GitLab 도메인에 대해 Let’s Encrypt를 활성화한 경우 서비스 중단을 방지하기 위해 정기적으로 인증서를 갱신해야 합니다. GitLab은 현재 자산이 만료될 때 새 인증서를 요청하는 gitlab-ctl renew-le-certs 명령을 제공합니다.

이 프로세스를 자동화하기 위해 정기적으로 이 명령을 자동으로 실행하는 크론 작업을 만들 수 있습니다. 이 명령은 만료가 임박한 경우에만 인증서를 갱신하므로 정기적으로 안전하게 실행할 수 있습니다.

시작하려면 텍스트 편집기에서 /etc/cron.daily/gitlab-le에 파일을 만들고 엽니다.

  1. sudo nano /etc/cron.daily/gitlab-le

내부에 다음 스크립트를 붙여넣습니다.

#!/bin/bash

set -e

/usr/bin/gitlab-ctl renew-le-certs > /dev/null

완료되면 파일을 저장하고 닫습니다.

다음을 입력하여 파일을 실행 가능으로 표시합니다.

  1. sudo chmod +x /etc/cron.daily/gitlab-le

이제 GitLab은 Let's Encrypt 인증서를 갱신해야 하는지 매일 자동으로 확인해야 합니다. 그렇다면 명령이 인증서를 자동으로 갱신합니다.

결론

이제 자체 서버에서 호스팅되는 작동 중인 GitLab 인스턴스가 있어야 합니다. 새 프로젝트를 가져오거나 생성하고 팀에 적합한 액세스 수준을 구성할 수 있습니다. GitLab은 정기적으로 기능을 추가하고 플랫폼을 업데이트하므로 프로젝트 홈페이지를 확인하여 개선 사항이나 중요한 알림에 대한 최신 정보를 확인하세요.