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. 사전 조건¶
다음 작업이 선행되어 있어야 함.
- 02-GitLab 사전 준비 및 점검: 운영 구조 및 포트 정책 정의
- 03-GitLab 데이터 경로 준비 및 Bind Mount:
/gitlab데이터 경로 및 bind mount 구성 - 04-GitLab 네트워크 정책: 네트워크 정책 정의 확인
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