Gitlab Install

Gitlab 설치 (CentOS 7)

Gitlab은 Git의 원격 저장소 기능과 이슈 트래커 기능등을 제공하는 소프트웨어 입니다. 설치형 Github라는 컨셉으로 시작된 프로젝트이기 때문에 Github와 비슷한 면이 많이 있습니다. 서비스 형 원격저장소를 운영하는 것에 대한 비용이 부담되거나, 소스코드의 보안이 중요한 프로젝트에게 적당 합니다.

패키지 종류
GitLab 패키지는 3가지로 구분 됩니다.

  • GitLab CE : Community Edition으로 설치형이고 아무런 제한 없이 무료
  • GitLab EE : Enterprise Edition으로 설치형이고 매월 유저당 과금. 자세한 내용은 https://about.gitlab.com/pricing/ 참고
  • GitLab.com : 클라우드형이고 개인이 가입해서 사용하면 무료 (10명 이하의 프로젝트는 무료로 사용할 수 있습니다.)

CE와 EE 버전 기능 비교는 https://about.gitlab.com/features/#compare 참고.

Gitlab의 특징

  • Git 저장소 및 관리
  • 프로젝트 생성하면 자동으로 git 저장소가 생성됨
  • 그룹 및 팀원
  • 그룹을 만들고 팀원을 지정해서 그룹 단위로 접근 권한을 관리할 수 있음
  • 업무 관리
  • 마일스톤을 설정하고 이슈를 등록해서 담당자를 지정해서 업무를 관리할 수 있음
  • 코드 커밋 로그에 이슈번호 넣으면 자동으로 이슈와 연결
  • 라벨을 사용해서 이슈를 구분해서 관리할 수 있음
  • 코드 리뷰
  • Merge request를 통해 코드 리뷰를 할 수 있는 프로세스를 만들 수 있음
  • 해당 request에 댓글로 커뮤니케이션 할 수 있고 소스코드에도 댓글 달 수 있음
  • 위키
  • markdown 형식 지원
  • wiki 별도 git 저장소가 생성되어 로컬에서 작업해서 push 해도 됨
  • 이력 및 통계 조회
  • Activity 이력 조회
  • Files 브라우징
  • Commit 브라우징(커밋 이력, 브랜치로 비쥬얼하게 이력 조회, 그래프로 통계 제공)
  • 검색
  • 전체 검색: 프로젝트, 이슈, Merge request 검색 가능
  • 그룹 내 검색: 프로젝트, 이슈, Merge request 검색 가능
  • 프로젝트 내 검색: 코드, 이슈, Merge request, 코멘트, Wiki 검색 가능
  • Snippets
  • 재사용 가능한 소스 코드나 텍스트를 저장해서 사용하는 기능
  • 공통 유틸성 코드나 팁에 대해서 공개해서 사용하면 좋을 것 같다.
  • 관리자
  • 그룹 및 사용자 관리
  • 관리자 페이지에서 사용자 추가해도 되고 회원가입 형태도 되고 LDAP 연동도 가능함
  • 어플리케이션 지원
  • CI
  • 패키지에 GitLab CI가 내장되어 있음
  • GitLab과 연동해서 활용하는 방법이 쉽지 않음

1. git 설치

일단 설치가 되어 있는지 확인해보겠습니다.

1
$ git --version

git 최신버전 설치
기존 git 이 설치 되어 있다면 최신 버전을 사용하기 위하여 아래 명령어로 제거합니다.

1
$ yum remove git

최신 버전을 사용하기 위해서 소스코드를 컴파일 해서 설치를 할 수도 있으나 업그레이드나 여러가지 불편함이 있기에 Wandisco 사에서 운영하는 repository를 사용하겠습니다. 해당 repository를 사용하기 위하여 아래의 링크를 install 합니다.

1
$ yum install http://opensource.wandisco.com/centos/7/git/x86_64/wandisco-git-release-7-1.noarch.rpm

다시 git을 install해줍니다.

1
$ yum install git

2. Gitlab 설치

  • 공식 홈페이지의 내용을 따라하면 손쉽게 설치가 됩니다. 살짝 설정을 바꿔줄 부분은 있습니다.
  • https://about.gitlab.com/install/#centos-7
  • 공식 홈페이지는 아래가 처음 설치 할 것으로 소개하고 있는데요, 아마 기본적으로 CentOS를 설치할 때 이미 설치되어 있는 것들이 있을 것입니다.
1
2
3
4
5
6
7
8
$ sudo yum install curl policycoreutils openssh-server openssh-clients 
$ sudo systemctl enable sshd
$ sudo systemctl start sshd
$ sudo yum install postfix
$ sudo systemctl enable postfix
$ sudo systemctl start postfix
$ sudo firewall-cmd --permanent --add-service=http
$ sudo systemctl reload firewalld

설치된 패키지 확인은 아래의 명령어로 확인 하시면 됩니다.

1
$ yum list installed | grep 패키지명

GitLab Package repository를 추가합니다.

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

gitlab설치 파일을 다운로드 받고 gitlab설치를 합니다. 다음 명령어를 이용해 설치합니다.
참고로 설치할때 EXTERNAL_URL 은 옵션값으로 브라우저로 접속할 정보를 입력하는데 여기에 포트도 추가하여 입력해도 됩니다.
대신 포트를 추가하는 경우 firewalld 나 iptables를 사용할 경우 에서 추가 설정을 해주어야 합니다.

1
$ sudo yum install gitlab-ce

or

1
2
3
4
5
$ sudo EXTERNAL_URL="http://[server id]:[port]" yum install -y gitlab-ce

# 만약 포트번호 추가했을 경우 firewalld 사용시 아래와 같은 방법으로 해제
$ sudo firewall-cmd --permanent --zone=public --add-port=[포트번호]/tcp
$ sudo systemctl reload firewalld

설치가 완료되면 다음과 같이 로그가 찍힙니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
Running handlers:
Running handlers complete
Chef Client finished, 199/619 resources updated in 03 minutes 36 seconds
gitlab Reconfigured!

*. *.
*** ***
***** *****
.****** *******
******** ********
,,,,,,,,,***********,,,,,,,,,
,,,,,,,,,,,*********,,,,,,,,,,,
.,,,,,,,,,,,*******,,,,,,,,,,,,
,,,,,,,,,*****,,,,,,,,,.
,,,,,,,****,,,,,,
.,,,***,,,,
,*,.



_______ __ __ __
/ ____(_) /_/ / ____ _/ /_
/ / __/ / __/ / / __ `/ __ \
/ /_/ / / /_/ /___/ /_/ / /_/ /
\____/_/\__/_____/\__,_/_.___/


Thank you for installing GitLab!
GitLab should be available at http://[server id]:[port]

For a comprehensive list of configuration options please see the Omnibus GitLab readme
https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/README.md

Verifying : gitlab-ee-11.3.4-ee.0.el7.x86_64

Installed:
gitlab-ee.x86_64 0:11.3.4-ee.0.el7

Complete!
  • 설정을 바꿔줄 부분이 있습니다. 설정을 바꿔줄 부분은 3가지 입니다.
  • gitlab페이지가 기본적으로 80포트를 사용하고 인증 관련된 unicorn 부분은 8080포트를 사용합니다. 만약 해당 포트가 Apache와 Tomcat에서 사용하는 포트와 동일하면 충돌이 합니다. 그리고 이메일을 사용하기 위해 smtp를 설정할 수 있습니다.
  • gitlab설정파일은 아래에 있습니다. 아래의 경로의 파일을 vi에디터로 오픈합니다.
1
$ vi /etc/gitlab/gitlab.rb

Gitlab 설치과정1

  • 오픈 하자마자 보시면 external_url 항목이 보이게 됩니다.
  • gitlab페이지가 보여지는 웹사이트 포트번호 입니다.
  • 원하시는 포트번호를 입력합니다. 나중에 방화벽에서도 오픈시킬 번호 입니다.
1
external_url 'http://localhost:포트번호'
  • 인증 및 unicorn 과 관련된 부분이 두군데가 있습니다. 에디터 화면에서 / 입력한후 8080으로 입력하시면 쉽게 찾으실수 있습니다.
  • 8080으로 되어 있는 줄에서 반드시 ‘#’으로된 주석을 제거 하시고 8080 번호를 다른 포트로 변경합니다.
  • 변경하실때 위에서 변경한 포트와 다른 포트로 변경합니다.
  • 내부적으로 인증과 관련한 포트 번호 입니다. 이 포트는 방화벽을 해제할 필요는 없습니다.

Gitlab 설치과정2
Gitlab 설치과정3

  • 이제 smtp설정입니다. 이는 gitlab에서 유저 인증이나 각종 알림의 용도로 사용됩니다.
  • 에디터 화면에서 smtp_enable 라는 글자로 검색을 해봅니다. 검색은 / 명령어 입니다.

Gitlab 설치과정4

  • 위 설정을 google smtp정보를 입력할 것입니다. 그리고 입력하시고 주석을 제거합니다.
  • 위 설정은 필수는 아닙니다.
  • 설정을 하지 않으면 유저 생성할때 패스워드 생성할때 유저에게 이메일 보내어 인증이 된 사용자에게 패스워드를 설정하게 되는데, 이는 사용자를 생성하고 다시 관리자가 다시 사용자 정보에 재진입하여 패스워드를 설정해주면 됩니다.
  • 구글 smtp설정은 아래 링크를 참조하세요.

https://support.google.com/a/answer/176600?hl=ko

  • 기타 메일 설정은 아래 링크에 더 있습니다.

https://docs.gitlab.com/omnibus/settings/smtp.html

1
2
3
4
5
6
7
8
9
10
gitlab_rails['smtp_enable'] = true 
gitlab_rails['smtp_address'] = "smtp.gmail.com"
gitlab_rails['smtp_port'] = 587
gitlab_rails['smtp_user_name'] = "my.email@gmail.com"
gitlab_rails['smtp_password'] = "my-gmail-password"
gitlab_rails['smtp_domain'] = "smtp.gmail.com"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = false
gitlab_rails['smtp_openssl_verify_mode'] = 'peer'
  • 변경이 완료되었으면 저장하고 빠져 나옵니다.
  • 이제 방화벽 설정을 합니다. 첫번째로 변경한 gitlab페이지가 보여지는 웹사이트 포트번호만 오픈 하시면됩니다.
1
2
$ firewall-cmd --permanent --add-port=변경한포트/tcp 
$ firewall-cmd --reload

그리고 다음 명령어를 실행하여 적용 합니다.

1
$ sudo gitlab-ctl reconfigure

Gitlab 설치과정5

이제 설치가 완료되었습니다. 이제부터 EXTERNAL_URL에 입력한 URL 을 브라우저로 접근이 가능합니다.
웹브라우저에서 설정변경한 포트로 진입해봅니다.

1
http://서버아이피:변경한포트번호
  • 입력하고 들어가시면 아래의 화면이 처음 나타납니다.
  • root 계정의 패스워드 설정화면입니다. 원하시는 암호로 설정하고 root 아이디로 로그인합니다.

Gitlab 설치과정6

  • root로 로그인하면 나오는 화면입니다.

Gitlab 설치과정7

  • 위쪽에 스패너 아이콘이 관리자용 설정 메뉴입니다. 이곳에서 유저 생성이 가능합니다.

Gitlab 설치과정8

접속 URL 변경 및 수정

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# gitlab.rb 파일안에 URL을 수정합니다.
$ vi /etc/gitlab/gitlab.rb

### 아래의 내용을 찾아 수정합니다.
external_url 'http://[변경할 server id]:[변경할 port]'

# Gitlab 레파지토리 적용
$ sudo gitlab-ctl reconfigure

# Gitlab 재시작
$ sudo gitlab-ctl restart

# 포트 활성화
$ firewall-cmd --permanent --add-port=변경한포트/tcp

GitLab 서버의 시작/종료

1
2
3
4
5
# Gitlab 서버 시작
$ sudo gitlab-ctl start

# Gitlab 서버 종료
$ sudo gitlab-ctl stop

메일 테스트

1
2
3
4
5
6
7
8
9
10
$ sudo gitlab-rails console

# 테스트 메일 보내기
irb(main):001:0> Notify.test_email('xxx@gmail.com', 'Message Subject', 'Message Body').deliver_now

# 콘솔 나오기
irb(main):002:0> exit

# sudo vi /etc/gitlab/gitlab.rb 의 smtp 관련 옵션 수정시 Gitlab 재시작
$ sudo gitlab-ctl restart

구글 보안 수준이 낮은 앱의 액세스가 허용되어야 한다.

Gitlab gmail 연동

gitlab 제거

설치되어 있는 gitlab을 제거하기 위해서는 다음과 같은 순서로 실행한다.

1
2
3
$ gitlab-ctl cleanse
$ gitlab-ctl uninstall
$ yum remove gitlab-ce

참조

공유하기