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 연동도 가능함
- 어플리케이션 지원
- iOS, Android, Chrome App 등의 Native App 지원
- 자세한 사항은 https://about.gitlab.com/applications 참고
- 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 | $ sudo yum install curl policycoreutils openssh-server openssh-clients |
설치된 패키지 확인은 아래의 명령어로 확인 하시면 됩니다.
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 | $ sudo EXTERNAL_URL="http://[server id]:[port]" yum install -y gitlab-ce |
설치가 완료되면 다음과 같이 로그가 찍힙니다.
1 | Running handlers: |
- 설정을 바꿔줄 부분이 있습니다. 설정을 바꿔줄 부분은 3가지 입니다.
- gitlab페이지가 기본적으로 80포트를 사용하고 인증 관련된 unicorn 부분은 8080포트를 사용합니다. 만약 해당 포트가 Apache와 Tomcat에서 사용하는 포트와 동일하면 충돌이 합니다. 그리고 이메일을 사용하기 위해 smtp를 설정할 수 있습니다.
- gitlab설정파일은 아래에 있습니다. 아래의 경로의 파일을 vi에디터로 오픈합니다.
1 | $ vi /etc/gitlab/gitlab.rb |
- 오픈 하자마자 보시면 external_url 항목이 보이게 됩니다.
- gitlab페이지가 보여지는 웹사이트 포트번호 입니다.
- 원하시는 포트번호를 입력합니다. 나중에 방화벽에서도 오픈시킬 번호 입니다.
1 | external_url 'http://localhost:포트번호' |
- 인증 및 unicorn 과 관련된 부분이 두군데가 있습니다. 에디터 화면에서 / 입력한후 8080으로 입력하시면 쉽게 찾으실수 있습니다.
- 8080으로 되어 있는 줄에서 반드시 ‘#’으로된 주석을 제거 하시고 8080 번호를 다른 포트로 변경합니다.
- 변경하실때 위에서 변경한 포트와 다른 포트로 변경합니다.
- 내부적으로 인증과 관련한 포트 번호 입니다. 이 포트는 방화벽을 해제할 필요는 없습니다.
- 이제 smtp설정입니다. 이는 gitlab에서 유저 인증이나 각종 알림의 용도로 사용됩니다.
- 에디터 화면에서
smtp_enable
라는 글자로 검색을 해봅니다. 검색은 / 명령어 입니다.
- 위 설정을 google smtp정보를 입력할 것입니다. 그리고 입력하시고 주석을 제거합니다.
- 위 설정은 필수는 아닙니다.
- 설정을 하지 않으면 유저 생성할때 패스워드 생성할때 유저에게 이메일 보내어 인증이 된 사용자에게 패스워드를 설정하게 되는데, 이는 사용자를 생성하고 다시 관리자가 다시 사용자 정보에 재진입하여 패스워드를 설정해주면 됩니다.
- 구글 smtp설정은 아래 링크를 참조하세요.
https://support.google.com/a/answer/176600?hl=ko
- 기타 메일 설정은 아래 링크에 더 있습니다.
https://docs.gitlab.com/omnibus/settings/smtp.html
1 | gitlab_rails['smtp_enable'] = true |
- 변경이 완료되었으면 저장하고 빠져 나옵니다.
- 이제 방화벽 설정을 합니다. 첫번째로 변경한 gitlab페이지가 보여지는 웹사이트 포트번호만 오픈 하시면됩니다.
1 | $ firewall-cmd --permanent --add-port=변경한포트/tcp |
그리고 다음 명령어를 실행하여 적용 합니다.
1 | $ sudo gitlab-ctl reconfigure |
이제 설치가 완료되었습니다. 이제부터 EXTERNAL_URL에 입력한 URL 을 브라우저로 접근이 가능합니다.
웹브라우저에서 설정변경한 포트로 진입해봅니다.
1 | http://서버아이피:변경한포트번호 |
- 입력하고 들어가시면 아래의 화면이 처음 나타납니다.
- root 계정의 패스워드 설정화면입니다. 원하시는 암호로 설정하고 root 아이디로 로그인합니다.
- root로 로그인하면 나오는 화면입니다.
- 위쪽에 스패너 아이콘이 관리자용 설정 메뉴입니다. 이곳에서 유저 생성이 가능합니다.
접속 URL 변경 및 수정
1 | # gitlab.rb 파일안에 URL을 수정합니다. |
GitLab 서버의 시작/종료
1 | # Gitlab 서버 시작 |
메일 테스트
1 | $ sudo gitlab-rails console |
구글 보안 수준이 낮은 앱의 액세스가 허용되어야 한다.
gitlab 제거
설치되어 있는 gitlab을 제거하기 위해서는 다음과 같은 순서로 실행한다.
1 | $ gitlab-ctl cleanse |