콘텐츠로 이동

GitLab 설치

GitLab Omnibus Community Edition 패키지 설치 절차를 정의함.


1. 개요

다음 기준으로 설치함.

  • GitLab 방식: Omnibus 패키지 (RPM) 설치
  • 구조: Client → Nginx (443, SSL 종단) → GitLab (127.0.0.1:8081 또는 192.168.0.100:8081)
  • 외부 URL: https://gitlab.example.com
  • 외부 노출: 별도 Reverse Proxy(Nginx) 또는 Gateway(Nginx) 사용
  • 운영 원칙: GitLab은 외부 인터넷에 직접 노출하지 않으며, Reverse Proxy를 통해서만 접근함
  • GitLab 내부 포트: 8081 (Reverse Proxy(Nginx)와 통신용, Loopback 또는 내부 네트워크 전용)
  • GitLab SSH 포트: 2222

1.1. 운영 정책

  • GitLab은 외부에 직접 노출하지 않음
  • GitLab Web Service 는 내부 포트(8081)만 사용
  • GitLab SSH Port 는 2222 포트로 분리 운영
  • TLS 종료는 Reverse Proxy(Nginx)에서 수행

2. 사전 조건

다음 작업이 선행되어 있어야 함.


3. GitLab Repository 등록

Community Edition 저장소를 등록 스크립트 다운로드 후 내용 확인 및 실행 (curl | bash 직접 실행은 보안상 권장하지 않음)

curl -fsSL -o /tmp/gitlab-repo.sh https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh
cat /tmp/gitlab-repo.sh
sudo bash /tmp/gitlab-repo.sh

4. EXTERNAL_URL 선택 기준

1. 설정 원칙: "URL은 접속 주소 기준, 통신은 내부 포트 기준"

설정값 (EXTERNAL_URL) 선정 이유
https://gitlab.example.com 외부 Proxy가 SSL을 처리하더라도, GitLab 내부 링크(Email, API 등)의 무결성을 위해 HTTPS 주소 지정이 필수적임.

2. Reverse Proxy 환경에서의 충돌 회피

외부 Gateway가 80/443을 점유 중이므로, 설치 직후 GitLab 내부 Nginx의 Listen 설정을 반드시 변경해야 함.


5. 패키지 설치 실행

설치 과정에서 실행되는 reconfigure 단계에서 포트 충돌이 발생할 수 있음. 이는 이후 설정 단계에서 해결함.

외부 접속 주소는 HTTPS로 지정하여 설치함. Reverse Proxy에서 SSL을 처리하더라도, GitLab 내부 링크의 무결성을 위해 https를 사용함.

만약 설치 중 Nginx 포트 충돌 에러가 발생해도 패키지 설치 자체는 완료된 것이니 당황하지 말 것.

sudo EXTERNAL_URL="https://gitlab.example.com" dnf install -y gitlab-ce

6. 초기 상태 확인

설치 완료 후 GitLab 서비스 상태를 확인함.

sudo gitlab-ctl status

정상적으로 실행되지 않은 경우 로그를 확인함.

sudo gitlab-ctl tail

NOTE: 이 단계에서는 내부 포트(8081) 충돌 또는 GitLab Nginx 설정 문제로 정상 동작하지 않을 수 있음. 이는 06-GitLab 설정 (gitlab.rb)에서 설정을 통해 해결함.


7. 버전 정보 확인

sudo gitlab-rake gitlab:env:info