Debian 12 또는 11에 GitLab을 설치하는 방법

GitLab은 버전 제어, 지속적인 통합, 배포 및 프로젝트 관리를 위한 광범위한 기능을 제공하는 포괄적인 DevOps 플랫폼입니다. DevOps 라이프사이클의 다양한 단계를 단일 애플리케이션에 통합하여 팀이 효율적으로 협업할 수 있도록 합니다. GitLab Community Edition(CE)은 GitLab의 오픈 소스 버전으로 리포지토리 관리, 문제 추적, CI/CD 파이프라인 자동화를 위한 강력한 도구를 제공합니다.

Debian 12 또는 11에 GitLab CE를 설치하려면 공식 GitLab Bash 스크립트를 사용하여 GitLab CE APT 저장소를 설정한 다음 소프트웨어를 설치하고 구성할 수 있습니다. 이 가이드는 전체 프로세스를 안내하여 Debian 시스템에 강력한 GitLab을 설정할 수 있도록 합니다.

Gitlab 설치 전에 Debian 업데이트

데비안 운영 체제를 최신 상태로 유지하는 것은 안정성과 보안을 유지하는 데 중요합니다. Debian 시스템의 모든 기존 패키지를 최신 상태로 유지하려면 업데이트를 수행하여 최신 보안 업데이트와 버그 수정을 제공하여 시스템의 안정성과 신뢰성을 보장하는 것이 좋습니다.

다음 명령을 실행하여 Debian 운영 체제를 쉽게 업데이트할 수 있습니다:

sudo apt update && sudo apt upgrade 

GitLab에 필요한 패키지 설치

GitLab에 대한 모든 종속성이 설치되었는지 확인하는 것은 설치 프로세스에서 중요한 단계입니다. 이러한 종속성은 GitLab이 올바르게 작동하기 위해 의존하는 필수 구성 요소입니다. 다행히도 이러한 종속성을 설치하는 과정은 간단합니다.

터미널을 열고 다음 명령을 실행하면 쉽게 설치할 수 있습니다.

sudo apt install curl ca-certificates apt-transport-https tzdata perl

GitLab CE APT 저장소 가져오기

기본적으로 GitLab은 Debian의 기본 리포지토리에서 사용할 수 없습니다. 이는 GitLab을 설치하려면 수동으로 저장소를 생성해야 함을 의미합니다. 그러나 GitLab은 이 프로세스를 돕기 위해 APT 스크립트를 제공하여 사용자가 플랫폼을 더 쉽게 설치할 수 있도록 합니다. 이 스크립트를 사용하면 표준 APT 패키지 관리자를 사용하여 GitLab을 설치할 수 있는 GitLab 저장소를 생성할 수 있습니다.

스크립트를 다운로드하려면 터미널에 다음 명령을 입력하세요.

curl -s https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash

이 명령을 실행하면 스크립트가 GitLab 저장소를 다운로드하여 Debian 시스템에 추가합니다. 또한 표준 APT 패키지 관리자를 사용하여 GitLab을 설치할 수 있도록 패키지 목록을 업데이트합니다.

APT 명령을 통해 GitLab 설치 마무리

다음 단계는 GitLab을 설치하는 것입니다. 새로 생성되고 수정된 저장소를 동기화하기 위해 스크립트가 이미 "apt update" 명령을 사용했다는 점을 기억하세요. 완료되면 이제 다음을 실행하여 설치 명령 실행을 진행할 수 있습니다.

sudo apt install gitlab-ce

이 명령은 GitLab의 무료 오픈 소스 버전인 GitLab Community Edition(CE)을 설치합니다. 인터넷 속도 및 시스템 사양에 따라 설치 과정에 다소 시간이 걸릴 수 있습니다.

Debian에서 GitLab 설치가 성공한 경우의 출력 예:

GitLab 구성

Debian에서 GitLab을 구성하려면 몇 가지 단계를 주의 깊게 따라야 합니다. 이 섹션에서는 호스트 이름 구성, 방화벽 설정, 이메일 설정 구성을 포함한 프로세스를 단계별로 설명합니다.

호스트 이름 구성

GitLab 인스턴스에 액세스하려면 GitLab 서버의 호스트 이름을 구성하는 것이 중요하므로 기억하고 액세스하기 쉬운 이름을 선택하십시오. 호스트 이름을 구성하려면 다음 단계를 따르세요.

텍스트 편집기를 사용하여 GitLab 구성 파일을 엽니다.

sudo nano /etc/gitlab/gitlab.rb

external_url 설정을 찾아 예시 URL을 원하는 호스트 이름으로 바꿉니다.

external_url 'https://gitlab.example.com'

파일을 저장하고 텍스트 편집기를 종료합니다.

이제 변경 사항을 적용하도록 GitLab을 재구성합니다.

sudo gitlab-ctl reconfigure

Gitlab용 UFW 방화벽 설정

GitLab은 기본적으로 HTTP에 포트 80을 사용하고 HTTPS에 포트 443을 사용합니다. 이러한 포트에서 트래픽을 허용하고 GitLab 인스턴스에 액세스할 수 있도록 방화벽을 구성하는 것이 중요합니다.

방화벽을 설정하려면 다음 단계를 따르세요.

먼저 UFW 방화벽을 설치하세요. UFW 방화벽은 Debian에 기본적으로 설치되어 있지 않기 때문에 다음 명령을 사용하세요:

sudo apt install ufw

그런 다음 설치가 완료되면 다음 명령을 사용하여 UFW 방화벽을 활성화하십시오.

sudo ufw enable

텍스트 편집기를 사용하여 방화벽 구성 파일을 엽니다.

sudo nano /etc/ufw/applications.d/gitlab

다음 줄을 복사하여 파일에 붙여넣습니다.

[GitLab]
title=GitLab
description=GitLab application
ports=80,443/tcp

파일을 저장하고 텍스트 편집기를 종료합니다.

방화벽에서 GitLab 애플리케이션을 활성화합니다.

sudo ufw app update GitLab
sudo ufw allow GitLab

이메일 설정 구성

GitLab은 이메일 알림을 사용하여 사용자에게 새로운 이슈, 병합 요청, 댓글과 같은 프로젝트 활동에 대해 알립니다.

이메일 설정을 구성하려면 다음 단계를 따르세요.

텍스트 편집기를 사용하여 GitLab 구성 파일을 엽니다.

sudo nano /etc/gitlab/gitlab.rb

gitlab_rails['smtp_enable'] 설정을 찾아 true로 설정합니다.

gitlab_rails['smtp_enable'] = true

Gmail과 같은 이메일 제공업체에 대한 SMTP 서버 설정을 구성하려면 파일에 다음 줄을 추가하세요.

gitlab_rails['smtp_address'] = "smtp.gmail.com"
gitlab_rails['smtp_port'] = 587
gitlab_rails['smtp_user_name'] = "example@gmail.com"
gitlab_rails['smtp_password'] = "your_password"
gitlab_rails['smtp_domain'] = "smtp.gmail.com"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true

파일을 저장하고 텍스트 편집기를 종료합니다.

변경 사항을 적용하도록 GitLab을 재구성합니다.

sudo gitlab-ctl reconfigure

"gitlab-ctl reconfigure" 명령을 실행한 후 터미널 출력이 다음 메시지로 끝나는 것을 볼 수 있다는 점에 유의하는 것이 중요합니다.

Notes:
Default admin account has been configured with following details:
Username: root
Password: You didn't opt-in to print initial root password to STDOUT.
Password stored to /etc/gitlab/initial_root_password. This file will be cleaned up in first reconfigure run after 24 hours.

루트(GitLab) 비밀번호를 보려면 터미널에서 다음 명령을 실행하세요.

sudo cat /etc/gitlab/initial_root_password

이 명령을 실행하면 터미널에 루트 비밀번호가 표시됩니다. 이 비밀번호를 안전하게 유지하고 승인되지 않은 사용자와 공유하지 않는 것이 중요합니다.

루트 비밀번호를 재설정해야 하는 경우 다음 명령을 사용할 수 있습니다.

sudo gitlab-rake "gitlab:password:reset[root]"

이 명령을 실행하면 루트 비밀번호가 터미널 출력에 표시된 임의의 문자열로 재설정됩니다. 루트 비밀번호를 재설정하면 기존 및 개인 액세스 토큰이 모두 무효화되므로 사용자는 비밀번호를 재설정한 후 새 토큰을 생성해야 한다는 점을 기억하는 것이 중요합니다.

보안상의 이유로 초기 설정 후 최대한 빨리 루트 비밀번호를 강력하고 고유한 비밀번호로 변경하고 기본 비밀번호를 사용하지 않는 것이 좋습니다. GitLab 웹 인터페이스에 로그인하고 "사용자 설정"> "계정"으로 이동한 후 "비밀번호 변경" 옵션을 선택하여 루트 비밀번호를 변경할 수 있습니다.

GitLab 사용자 인터페이스에 액세스

백엔드 구성이 완료되면 이제 GitLab에 로그인하여 액세스할 차례입니다. 이를 위해서는 구성 파일에서 GitLab에 할당된 도메인 경로를 엽니다.

https://gitlab.example.com

그런 다음 사용자 이름 "root"와 설치 중에 받은 비밀번호를 사용하여 GitLab에 로그인합니다. 이전 섹션의 비밀번호 출력에서 ​​언급했듯이 가이드의 비밀번호는 이미지에서 “4zB2mbBLCcRLRAkv3qHfmSZULJ/6ocJNe2XK8zNx9nU=”였습니다.

루트 계정으로 성공적으로 로그인되었으며 기본 랜딩 페이지에 도착하게 됩니다.

추가 팁

다음은 GitLab 사용자 인터페이스에 처음 로그인할 때 보안, 사용자 정의 또는 기타 일반적인 최초 팁에 대한 몇 가지 권장 사항입니다.

  • 기본 비밀번호를 변경하세요: GitLab 인스턴스의 보안을 강화하려면 루트 사용자의 기본 비밀번호를 변경하는 것이 중요합니다. 기본 사용자 이름과 비밀번호를 사용하여 GitLab에 로그인하고 "사용자 설정"> "비밀번호"로 이동한 후 새 비밀번호를 입력하세요.
  • 2FA(2단계 인증) 설정: 휴대폰으로 전송되거나 앱에서 생성된 코드와 같은 인증 요소를 로그인 프로세스에 추가하는 것은 2FA에서 제공하는 추가 보안 계층입니다. GitLab에서 2FA를 활성화하려면 "사용자 설정"> "계정"> "2단계 인증"으로 이동하여 지침을 따르세요.
  • 프로젝트를 생성합니다: GitLab에서 새 프로젝트를 생성하려면 “프로젝트” 페이지로 이동하여 “새 프로젝트” 버튼을 클릭하세요. 빈 프로젝트를 생성하거나 Git 리포지토리에서 기존 프로젝트를 가져올 수 있습니다.
  • 사용자 인터페이스를 사용자 정의합니다. GitLab에서는 테마 변경, 사용자 정의 로고 추가, 탐색 모음 구성과 같은 여러 사용자 정의 옵션을 사용할 수 있습니다. "관리 영역"> "설정"으로 이동하여 적절한 옵션을 선택하여 사용자 인터페이스를 사용자 정의합니다.
  • 액세스 제어를 구성합니다. GitLab의 강력한 액세스 제어 기능을 사용하면 프로젝트에 액세스할 수 있는 사람과 수행할 수 있는 작업을 제어할 수 있습니다. "프로젝트 설정"> "구성원"으로 이동하여 다양한 액세스 수준을 가진 구성원을 추가하거나 제거하여 액세스 제어를 구성하십시오.
  • GitLab CI/CD 사용: GitLab의 강력한 CI/CD 기능은 코드 테스트 및 배포를 자동화합니다. 프로젝트의 루트 디렉터리에 ".gitlab-ci.yml" 파일을 생성하고 파이프라인의 단계와 작업을 정의하여 CI/CD 파이프라인을 구성합니다.
  • GitLab Runner 설정: GitLab Runner는 CI/CD 작업을 실행하고 결과를 다시 GitLab으로 보내는 경량 에이전트입니다. Debian 시스템에 GitLab Runner를 설치하고 구성하려면 GitLab 설명서의 지침을 따르세요.
  • GitLab 인스턴스를 백업합니다. 하드웨어 오류나 기타 재해 발생 시 데이터 손실을 방지하려면 GitLab 인스턴스를 정기적으로 백업하세요. GitLab 인스턴스를 백업하려면 터미널에서 "gitlab-rake gitlab:backup:create" 명령을 실행하세요.

GitLab 자동 백업을 위한 Cronjob 생성

Debian에서 GitLab 자동 백업을 위한 cronjob을 설정하는 것은 데이터의 안전과 보안을 보장하는 데 필수적입니다. cronjob은 GitLab 인스턴스 백업을 수행하기 위해 특정 간격으로 자동 실행되는 예약된 작업입니다. Debian에서 GitLab 자동 백업을 위한 cronjob을 생성하려면 다음 단계를 따르세요.

Gitlab 백업 스크립트 만들기

첫 번째 단계는 GitLab 인스턴스의 백업을 수행하기 위한 백업 스크립트를 만드는 것입니다. 다음과 같이하세요:

텍스트 편집기를 사용하여 백업 스크립트용 새 파일을 만듭니다. 예는 다음과 같습니다.

sudo nano /usr/local/bin/gitlab-backup.sh

다음 코드를 파일에 붙여넣습니다.

#!/bin/bash

BACKUP_DIR=/var/opt/gitlab/backups
TIMESTAMP=$(date +%s)

sudo gitlab-rake gitlab:backup:create

sudo cp ${BACKUP_DIR}/$(ls -t ${BACKUP_DIR} | head -1) ${BACKUP_DIR}/gitlab_backup_${TIMESTAMP}.tar
  • 파일을 저장하고 텍스트 편집기를 종료합니다.

이 스크립트는 gitlab-rake gitlab:backup:create 명령을 실행하여 GitLab 인스턴스의 백업을 생성합니다. 백업을 만든 후, 파일 이름에 타임스탬프가 있는 새 파일에 최신 백업을 복제합니다.

권한 및 소유권 설정

후속 단계는 cronjob이 실행할 수 있도록 백업 스크립트에 대한 적절한 권한과 소유권을 설정하는 것입니다. 다음과 같이하세요:

백업 스크립트의 소유자를 GitLab과 연결된 사용자로 설정합니다.

sudo chown git:git /usr/local/bin/gitlab-backup.sh

실행을 활성화하려면 백업 스크립트의 권한을 설정하십시오.

sudo chmod +x /usr/local/bin/gitlab-backup.sh

크론잡 만들기

다음 단계는 백업 스크립트를 정기적으로 실행하도록 예약하는 cronjob을 만드는 것입니다. 다음 단계를 따르세요.

GitLab 사용자를 위한 crontab 구성 파일을 열려면 다음 단계를 따르세요.

sudo crontab -u git -e

매일 오전 1시에 백업 스크립트가 실행되도록 예약하려면 GitLab 사용자의 crontab 구성 파일에 다음 줄을 추가합니다.

0 1 * * * /path/to/backup/script.sh

파일을 저장하고 텍스트 편집기를 종료합니다.

이 cronjob은 매일 오전 1시에 백업 스크립트를 자동으로 실행하여 파일 이름에 타임스탬프가 있는 새 백업 파일을 생성합니다.

크론잡 테스트

백업 스크립트를 수동으로 실행하고 백업 파일이 오류 없이 생성되었는지 확인하여 cronjob이 올바르게 작동하는지 확인할 수 있습니다. 이 테스트를 수행하려면 터미널에 다음 명령을 입력하십시오.

sudo /usr/local/bin/gitlab-backup.sh

이 명령은 "/var/opt/gitlab/backups" 디렉터리에 새 백업 파일을 생성합니다. 파일 이름에는 백업이 생성된 시기를 나타내는 타임스탬프가 포함됩니다.

GitLab 터미널 명령

GitLab-ctl은 Debian에서 GitLab을 관리하기 위한 명령줄 도구입니다. 특히 GitLab 서비스를 시작, 중지, 다시 시작 및 관리하기 위한 일련의 터미널 명령을 제공합니다. 다음은 예제 명령 및 설명이 포함된 출력과 함께 GitLab-ctl 터미널 명령에 대한 자세한 섹션입니다.

GitLab 서비스 시작 및 중지

GitLab 서비스를 시작하고 중지하려면 다음 명령을 사용하십시오.

모든 GitLab 서비스를 시작합니다.

sudo gitlab-ctl start

모든 GitLab 서비스를 중지합니다.

sudo gitlab-ctl stop

모든 GitLab 서비스를 다시 시작합니다.

sudo gitlab-ctl restart

GitLab 서비스를 다시 로드합니다.

sudo gitlab-ctl reload

이 명령은 모든 GitLab 서비스를 시작, 중지, 다시 시작 또는 다시 로드합니다. 출력에는 시작 또는 중지 중인 서비스와 작업 성공 여부가 표시됩니다.

GitLab 서비스 상태 확인

GitLab 서비스의 상태를 확인하려면 다음 명령을 사용하십시오.

sudo gitlab-ctl status

이 명령은 모든 GitLab 서비스를 시작, 중지, 다시 시작 또는 다시 로드합니다. 명령을 실행하면 영향을 받는 서비스와 작업 성공 여부가 출력에 표시됩니다.

GitLab 데이터 백업 및 복원

다음 명령을 사용하여 GitLab 데이터의 백업을 생성할 수 있습니다.

GitLab 데이터의 백업을 생성합니다:

sudo gitlab-rake gitlab:backup:create

제공된 명령은 리포지토리, 사용자 데이터 및 구성 파일과 같은 모든 GitLab 데이터를 포함하는 백업 파일을 생성합니다. 백업 파일은 "/var/opt/gitlab/backups" 디렉터리에 저장됩니다.

GitLab 데이터 백업을 복원합니다.

sudo gitlab-rake gitlab:backup:restore BACKUP=<backup_file>

이 명령을 사용하면 특정 백업 파일에서 GitLab 데이터 백업을 복원할 수 있습니다. 백업 파일은 "var/opt/gitlab/backups" 디렉터리에 있어야 합니다. 그렇지 않으면 백업 파일의 전체 경로를 지정할 수 있습니다.

GitLab 구성 확인

다음 명령을 사용하여 GitLab의 구성을 확인할 수 있습니다.

sudo gitlab-rake gitlab:check

이 명령은 오래된 버전, 누락된 종속성, 잘못 구성된 설정을 포함하여 GitLab 구성에서 오류 또는 경고를 검색할 수 있습니다. 출력에는 검색 결과와 감지된 문제에 대한 자세한 정보가 요약됩니다.

GitLab 로그 확인

다음 명령을 사용하여 GitLab 로그를 확인하는 방법은 다음과 같습니다.

GitLab 로그를 봅니다.

sudo gitlab-ctl tail gitlab-rails/production.log

다음 명령을 사용하면 사용자 작업, 경고 및 오류를 자세히 설명하는 GitLab 프로덕션 로그의 마지막 10줄을 볼 수 있습니다.

GitLab NGINX 로그를 봅니다.

sudo gitlab-ctl tail nginx/gitlab_access.log

이 명령은 HTTP 요청 및 응답에 관한 세부 정보가 포함된 GitLab NGINX 액세스 로그의 마지막 10줄을 표시합니다.

GitLab PostgreSQL 로그를 봅니다.

sudo gitlab-ctl tail postgresql/current

이 명령은 데이터베이스 쿼리 및 트랜잭션에 대한 정보가 포함된 GitLab PostgreSQL 로그의 마지막 10줄을 표시합니다.

결론

공식 설정 스크립트를 사용하여 Debian 시스템에 GitLab CE를 성공적으로 설치하면 강력한 DevOps 기능을 최대한 활용할 수 있습니다. 이 방법을 사용하면 최신 버전을 보유하고 업데이트에 쉽게 액세스할 수 있습니다. 최신 기능과 향상된 보안 기능을 활용하려면 GitLab 인스턴스를 정기적으로 유지 관리하고 업데이트하세요. GitLab CE가 개발 프로젝트를 위해 제공하는 원활한 통합 및 협업 도구를 즐겨보세요.

Joshua James

코멘트를 남겨주세요