GitLab CE 설치 (CentOS 7): 무료 오픈소스로 나만의 Git 서버 운영하기

안녕하세요! 개발자라면 누구나 Git의 중요성을 알고 계실 겁니다. GitHub, Bitbucket 같은 훌륭한 호스팅 서비스도 있지만, 때로는 자체적으로 Git 저장소를 관리하고 싶을 때가 있습니다. 이럴 때 강력한 대안이 바로 GitLab입니다. GitLab은 단순한 Git 저장소 호스팅을 넘어 CI/CD, 이슈 트래킹 등 다양한 DevOps 기능을 통합적으로 제공하는 플랫폼입니다.

GitLab에는 두 가지 주요 버전이 있습니다:

  • Community Edition (CE): 오픈소스로 제공되며, 무료로 대부분의 핵심 기능을 사용할 수 있습니다.
  • Enterprise Edition (EE): 유료 버전으로, 고급 기능과 기술 지원이 포함됩니다.

이 가이드에서는 GitLab Community Edition (CE)을 CentOS 7 환경에 설치하는 과정을 단계별로 안내해 드리겠습니다. 공식 설치 문서를 참고하여 가장 기본적인 설치 방법을 따릅니다.

1. 사전 준비: 시스템 환경 설정

GitLab을 원활하게 설치하고 운영하기 위해 몇 가지 필수 패키지를 먼저 설치해야 합니다.

1.1. 필수 패키지 설치

SSH 접속 및 시스템 정책 관리를 위해 openssh-server, openssh-clients, policycoreutils-python 그리고 curl을 설치합니다.

sudo yum install -y curl policycoreutils-python openssh-server openssh-clients

1.2. SSH 서비스 활성화 및 시작

설치된 SSH 서버(sshd)를 시스템 부팅 시 자동으로 시작되도록 활성화하고, 현재 세션에서 바로 시작합니다.

sudo systemctl enable sshd
sudo systemctl start sshd

1.3. 메일 발송을 위한 Postfix 설치 (선택 사항이지만 권장)

GitLab은 사용자 알림, 비밀번호 재설정 등의 이메일을 발송합니다. 이를 위해 Postfix와 같은 메일 전송 에이전트(MTA)가 필요합니다.

sudo yum install -y postfix

Postfix도 시스템 부팅 시 자동으로 시작되도록 활성화하고, 현재 세션에서 시작합니다.

sudo systemctl enable postfix
sudo systemctl start postfix

참고: Postfix의 상세 설정은 이 가이드의 범위를 벗어납니다. 로컬 발송만 필요한 경우 기본 설정으로도 GitLab 알림은 동작할 수 있습니다.

2. GitLab CE 설치: 핵심 구성 요소 가져오기

이제 본격적으로 GitLab CE를 설치할 차례입니다.

2.1. GitLab CE 패키지 저장소 추가

GitLab 공식 스크립트를 사용하여 시스템에 GitLab CE 패키지 저장소를 추가합니다. 이 스크립트는 필요한 저장소 정보를 시스템에 등록해줍니다.

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

2.2. GitLab CE 패키지 설치

저장소가 성공적으로 추가되었다면, yum 명령어를 통해 gitlab-ce 패키지를 설치할 수 있습니다.

sudo yum install -y gitlab-ce

설치 과정은 시스템 환경에 따라 다소 시간이 소요될 수 있습니다.

3. GitLab 기본 설정: 접속 환경 구성

GitLab 설치 후에는 몇 가지 기본 설정을 진행해야 합니다.

3.1. 접속 URL 설정

GitLab에 접속할 외부 URL을 설정해야 합니다. /etc/gitlab/gitlab.rb 파일을 열어 external_url 항목을 수정합니다.

sudo vi /etc/gitlab/gitlab.rb

파일 내에서 다음 줄을 찾아 주석을 해제하고, 원하는 도메인 또는 서버 IP 주소와 포트 번호로 변경합니다. 포트 번호를 생략하면 기본 HTTP 포트(80)를 사용합니다.

# external_url 'http://gitlab.example.com'
# 위 줄을 아래와 같이 변경 (예시)
external_url 'http://YOUR_SERVER_IP_OR_DOMAIN' # 또는 http://YOUR_SERVER_IP_OR_DOMAIN:PORT

예를 들어, 서버 IP가 192.168.0.100이고 8080 포트를 사용하고 싶다면 external_url 'http://192.168.0.100:8080' 과 같이 설정합니다.

3.2. 설정 적용 (Reconfigure)

gitlab.rb 파일의 변경 사항을 시스템에 적용하기 위해 다음 명령어를 실행합니다. 이 과정은 GitLab의 모든 구성 요소를 설정하고 시작하므로 시간이 꽤 걸릴 수 있습니다.

sudo gitlab-ctl reconfigure

3.3. Pro-Tip: GitLab 서비스 관리 명령어

GitLab 운영 중 유용하게 사용할 수 있는 명령어들입니다.

  • GitLab 시작: sudo gitlab-ctl start
  • GitLab 중지: sudo gitlab-ctl stop
  • GitLab 재시작: sudo gitlab-ctl restart
  • GitLab 상태 확인: sudo gitlab-ctl status

4. 방화벽 설정: 외부 접속 허용

GitLab에 외부에서 접속할 수 있도록 방화벽에서 설정한 포트를 열어주어야 합니다. CentOS 7에서는 firewalld를 주로 사용합니다.

4.1. Firewalld 설치 및 활성화 (이미 설치되어 있다면 생략)

sudo yum install -y firewalld
sudo systemctl enable firewalld
sudo systemctl start firewalld

4.2. GitLab 접속 포트 허용

external_url에서 설정한 포트 번호를 방화벽에 영구적으로 추가합니다. 만약 포트 번호를 지정하지 않았다면 기본 HTTP 포트인 80번을, HTTPS를 설정했다면 443번을 열어주어야 합니다. 여기서는 external_url에 포트를 지정하지 않았다는 가정하에 80번 포트를 예시로 엽니다. (만약 8080 포트를 사용했다면 8080/tcp로 변경)

sudo firewall-cmd --permanent --add-service=http  # 또는 --add-port=YOUR_PORT/tcp
sudo firewall-cmd --reload

예를 들어, external_url에서 8080 포트를 사용하도록 설정했다면 다음 명령어를 사용합니다:

sudo firewall-cmd --permanent --add-port=8080/tcp
sudo firewall-cmd --reload

5. GitLab 최초 접속 및 관리자 계정 설정

모든 설정이 완료되었다면 이제 웹 브라우저를 통해 GitLab에 접속할 수 있습니다.

5.1. GitLab 접속

웹 브라우저 주소창에 gitlab.rb 파일에서 설정한 external_url (예: http://YOUR_SERVER_IP_OR_DOMAIN)을 입력하여 접속합니다.

5.2. 초기 관리자(root) 비밀번호 확인

최초 접속 시 관리자 계정(root)의 임시 비밀번호가 필요합니다. 이 비밀번호는 다음 파일에서 확인할 수 있습니다. (이 파일은 최초 reconfigure 후 일정 시간 동안만 존재하며, 첫 로그인 후 비밀번호를 변경하면 삭제될 수 있습니다.)

sudo cat /etc/gitlab/initial_root_password

출력된 Password: 다음의 문자열이 임시 비밀번호입니다. 이 비밀번호는 24시간 동안 유효합니다.

GitLab Community Edition의 로그인 화면으로, 좌측에는 GitLab에 대한 간단한 소개가, 우측에는 사용자 이름 또는 이메일과 비밀번호를 입력하는 로그인 폼이 구성되어 있습니다.

5.3. 로그인 및 비밀번호 변경

로그인 화면에서 사용자 이름에 root를, 비밀번호에는 위에서 확인한 임시 비밀번호를 입력하여 로그인합니다. 로그인 후에는 즉시 새로운 관리자 비밀번호로 변경하는 것이 보안상 매우 중요합니다.

마무리

축하합니다! 이제 자신만의 GitLab CE 서버가 성공적으로 설치되었습니다. 이 가이드는 가장 기본적인 설치 과정을 다루었으며, GitLab은 HTTPS 설정, 백업, CI/CD 연동 등 더욱 다양하고 강력한 기능을 제공합니다. 공식 문서를 참고하여 여러분의 필요에 맞게 GitLab을 확장하고 활용해 보세요.

이제 여러분의 프로젝트를 GitLab으로 관리하며 효율적인 개발 환경을 구축할 수 있습니다!