본문 바로가기

리눅스 서버로 많이 사용하는 CentOS 7gitlab을 설치하는 방법을 Posting하려고 합니다.
먼저 공식 사이트에서 제공하고 있는 설치방법을 따르는 것을 권장합니다. 저는 그 가이드를 따라 설치하면서 주의해야 할 점이나 기억해야 할 점에 대해서 주로 작성하려고 합니다.

공식 사이트의 설치가이드는 아래의 URL을 참조하세요.
주의 할 점은 무료 버전인 ce(Community Edition)을 찾아서 설치해야 라이선스의 찜찜함 없이 설치할 수 있습니다. 그냥 공식사이트에서 설치가이드를 따라 설치하면 ee(Enterprise Edition)의 가이드를 먼저 보여주기 때문에 영어 울렁증이 있는 사람은 나도 모르게 ee버전을 설치하게 되어 있습니다.

ce(Community Edition) 설치가이드 : https://about.gitlab.com/install/#centos-7?version=ce

설치 OS들
다양한 리눅스 버전을 지원합니다만 저는 CentOS 7에 설치할 것이므로 해당 아이콘을 선택합니다.

관련된 사전작업

gitlab을 설치하기 전에 구동을 위한 사전작업을 진행해야 합니다.

openssh 설치하기

먼저 openssh를 설치 합니다.

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

서버 부팅 시 sshd 실행

매번 서버를 부팅/재부팅할때 마다 설치된 openssh 데몬(sshd)이 실행되게 합니다.

sudo systemctl enable sshd
sudo systemctl start sshd

방화벽 해제 및 재 실행

http, https에 대한 방화벽을 해제하고 다시 실행합니다.

sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo systemctl reload firewalld

방화벽이 설치되어 있지 않아 해당 명령어가 오류가 나는 경우가 있습니다.
아래 내용 중에 방화벽 설치에 대한 자세한 내용이 있으니 참고하세요.

메일서버 설치

gitlab에서 사용자 가입 인증이나 관리자에게 Alerts이나 기타 이유로 메일을 보내야 하므로 메일 서버를 설치합니다.

sudo yum install postfix

서버 부팅 시 메일서버 실행

매번 서버를 부팅/재부팅할때 마다 설치된 postfix를 실행되게 합니다.

sudo systemctl enable postfix
sudo systemctl start postfix

gitlab 패키지 설치하기

이제 본격적으로 gitlab를 설치해야 합니다.

패키지 저장소 등록

curl를 이용하여 gitlab package repository를 등록합니다.

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

패키지 설치

curl은 패키지의 저장소를 등록하는 것 까지만 해줍니다. yum을 이용하여 등록된 패키지를 설치해야 합니다.

sudo EXTERNAL_URL="자신의 도메인이나 접속가능한 IP:접속할 Port번호" yum install -y gitlab-ce

EXTERNAL_URL은 지금 설치한 gitlab 웹사이트에 접속할 URL을 입력해 줍니다. 보통 도메인이 있으면 도메인명을 입력하지만 도메인이 없는 경우 일단 그냥 IP번호를 작성해도 됩니다.
Port를 다른 포트로 사용한다면 port번호도 :으로 구분하여 작성해 주면 됩니다.

예를 들면 아래와 같습니다.
ex) port는 8001로 가정합니다.

sudo EXTERNAL_URL="192.168.0.102:8001" yum install -y gitlab-ce

연속된 명령어 yum install -y gitlab-ce가 설치를 시작합니다.

실행하기

설치에 별 문제가 없는 경우는 설치가 완료되고 아까 작성한 자신의 도메인이나 접속가능한 IP:접속할 Port번호를 웹브라우저에 입력하면 아래와 같이 뭔가 성공한 듯한 로그인 화면이 나오면 설치에 반은 성공한 것입니다.

로그인 화면

로그인 하기

최초 접속 시 로그인 아이디는 root이며 비밀번호는 새로 설정하게 되어 있습니다.

gitlab 설정하기

gitlab의 설정은 설치된 폴더에서 gitlab.rb을 변경하면 됩니다.
보통 설치 위치는 /etc/gitlab/gitlab.rb 입니다.
많은 부분의 gitlab 설정은 여기서 변경할 수 있습니다.
보통 아래와 같이 vi편집기를 활용하여 설정을 변경합니다.

sudo vi /etc/gitlab/gitlab.rb

port 변경하기

vi편집기에서 /external_url로 검색해서 아래와 같이 URL뒤에 Port 부분을 수정해 주면됩니다.
위의 설치 명령중에 sudo EXTERNAL_URL="192.168.0.102:8001"를 실행했다면 이미 등록되어 있을 것입니다.
주석(#)을 제거해야 반영됩니다.

## GitLab URL
##! URL on which GitLab will be reachable.
##! For more details on configuring external_url see:
##! https://docs.gitlab.com/omnibus/settings/configuration.html#configuring-the-external-url-for-gitlab
##!
##! Note: During installation/upgrades, the value of the environment variable
##! EXTERNAL_URL will be used to populate/replace this value.
##! On AWS EC2 instances, we also attempt to fetch the public hostname/IP
##! address from AWS. For more details, see:
##! https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instancedata-data-retrieval.html
external_url 'http://192.168.0.102:8001'

port 변경에 대해서 아래에 좀 더 자세히 설명해 놨습니다.

업로드 파일 용량 변경

한번에 업로드해야 할 파일의 용량이 큰 경우 아래와 같이 사이즈를 크게 설정하면 됩니다.
앞에 주석(#)을 제거해야 반영됩니다.

nginx[‘enable’] = true 
nginx[‘client_max_body_size’] = ‘2G’ # 2Gbyte로 변경함

참고 - 리눅스의 기본 에디터인 vi 또는 vim의 기초적인 명령어

/문자열     # --> 원하는 문자열 찾기
i           # --> 현재 커서 위치에서 입력모드로 전환
x           # --> 현재 커서 위치에서 한 글자 삭제
dw          # --> 현재 커서 위치에서 한 단어 삭제
dd          # --> 현재 커서 위치에서 한 행 삭제
:q          # --> esc버튼을 누른 후 -> 에디터 빠져나오기
:q!         # --> esc버튼을 누른 후 -> 강제 에디터 빠져나오기
:wq!        # --> esc버튼을 누른 후 -> 저장하고 강제 에디터 빠져나오기

변경된 설정 적용

변경 후에는 아래의 명령어로 새로운 설정을 반영하여 실행해 줘야 합니다.

sudo gitlab-ctl reconfigure  

port 설정하기

port설정은 위에서 설치할때 설정을 하긴 한 상태입니다. 혹시 등록이 되어 있지 않다면 gitlab.rb에서 설정 및 수정을 할 수 있습니다. (윗 내용 참조)

그리고 port는 gitlab에서만 설정했다고 되는 것은 아니고 시스템(CentOS)에서 실제로 해당 port를 방화벽에서 열어줘야 합니다.

시스템(CentOS) firewall 상태 확인

현재 firewall이 구동되고 있는지 죽어있는지 먼저 확인해봐야 합니다.

firewall-cmd --state

현재 실행 중이면 running, 실행 중이 아니면 not running을 출력합니다.

시스템(CentOS) firewall 설치

간혹 시스템에 firewall이 설치되어 있지 않은 경우가 있습니다. 이때는 먼저 Firewall을 아래와 같이 설치 해 줘야 합니다.

sudo yum install firewalld
sudo systemctl enable firewalld
sudo systemctl start firewalld

port 추가하기

만약 8001번 포트를 열어 주려면 아래와 같이 명령어를 실행하면 됩니다.

firewall-cmd --permanent --add-port=8001/tcp

port 제거하기

만약 8001번 포트를 제거하려면 아래와 같은 명령어를 실행하면 됩니다.

firewall-cmd --permanent --add-remove=8001/tcp

현재 열려있는 포트 확인하기

사용 가능한 모든 서비스와 포트의 목록을 보여 줍니다. 등록한 8001/tcp이 목록에 있는지 확인 합니다.

firewall-cmd --list-all 

대략 아래와 같이 나옵니다.

public
  target: xxx
  icmp-block-inversion: no
  interfaces:
  sources:
  services: dhcpv6-client http https ssh
  ports: xxxx/tcp 8001/tcp  # <-- 요기에 원하는 포트가 등록되어 있는지 보면됩니다. 
  ...

레파지토리 저장 폴더 위치 변경

기본은 지정된 레파지토리 저장위치가 있으나 드라이브를 별도로 추가하여 운영하는 경우는 다른 드라이브로 저장 위치를 변경해야 합니다.

저장 디렉토리를 변경하려면 gitlab.rb을 수정해야 합니다.

sudo vi /etc/gitlab/gitlab.rb

git_data_dirs로 검색하여 위치를 찾은 후 주석을 제거하고 원하는 폴더로 지정합니다.

 git_data_dirs({
    "default" => { "path" => "/data/git-data"}
 })

만약 새로운 하드디스크를 추가하고 지정해야 한다면 리눅스의 경우 아래의 파티션 설정, 마운트 추가 작업을 해야 합니다.

시스템(CentOS7) 에서 마운트되어있는 하드디스크 확인 하기

리눅스의 경우 새로운 하드디스크를 추가하게 되면 파티션을 잡고 별도로 마운트라는 작업을 해서 시스템에 연결을 해줘야 사용할 수 있습니다. 연결하기 전에 현재 마운트되어 있는 리스트를 확인합니다.

```bash
fdisk -l # 현재 마운트되어있는 드라이브 보기

아래와 같은 형태의 리스트가 나옵니다. 
sda는 현재 마운트가 된 모습이고
sdb는 아직 마운트가 되지 않은 모습입니다. 
만약 마운트가 되었다면 `/dev/sda1`, `/dev/sda2` 와 같이 `/dev/sdb1` 같은 리스트가 보여집니다. 

Disk /dev/sda: 26.8 GB, 26843545600 bytes, 52428800 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x000130f6

Device Boot      Start         End      Blocks   Id  System

/dev/sda1 * 2048 2099199 1048576 83 Linux
/dev/sda2 2099200 52428799 25164800 83 Linux

Disk /dev/sdb: 536.9 GB, 536870912000 bytes, 1048576000 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

#### 하드디스크 파티션 생성 하기 
이제 sdb를 아래와 같이 먼저 파티션을 생성 합니다.   

bash
fdisk /dev/sdb # --> fdisk /dev/[디스크명]

아래와 같은 옵션을 선택하는 질문이 있는데 잘 모르겠으면 그냥 기본(Default)로 설정하면 됩니다. 

Command action
a toggle a bootable flag
b edit bsd disklabel
c toggle the dos compatibility flag
d delete a partition
g create a new empty GPT partition table
G create an IRIX (SGI) partition table
l list known partition types
m print this menu
n add a new partition
o create a new empty DOS partition table
p print the partition table
q quit without saving changes
s create a new empty Sun disklabel
t change a partition's system id
u change display/entry units
v verify the partition table
w write table to disk and exit
x extra functionality (experts only)
Command (m for help): n #--> 새로운 파티션을 잡기 위해 n 선택

Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p):p #--> 잘 모르겠으면 기본값 선택

Partition number (1-4, default 1): 1 #--> 잘 모르겠으면 기본값 선택
First sector (2048-4294967295, default 2048): 2048 #--> 잘 모르겠으면 기본값 선택
Last sector, +sectors or +size{K,M,G} (2048-4294967294, default 4294967294): Using default value 4294967294 #--> 잘 모르겠으면 기본값 선택

Partition 1 of type Linux and of size 2 TiB is set
Command (m for help): w #--> 잘 모르겠으면 기본값 선택

The partition table has been altered!

#### 하드디스크 파일시스템 만들기 
나눈 파티션을 파일시스템으로 만들고 포멧을 합니다.   

bash
mkfs -t ext4 /dev/sdb1 #--> mkfs -t [파일시스템] /dev/[디스크명]

#### 마운트할 디렉토리 생성하기 
마운트할 디렉토리를 생성합니다. 

bash
mkdir /data #--> 마운트 할 디렉토리 생성

#### 하드디스크 마운트 하기 
`sdb1`을 생성한 `/data`디렉토리에 마운트 합니다. 

bash
mount -t ext4 /dev/sdb1 /data #--> mount -t [파일시스템] /dev/[디스크명] /[마운트할 디렉토리명]

#### 시스템에 영구 마운트 설정하기  
위의 작업까지만 했을때 시스템을 재부팅하게 되면 초기화가 되버려서 다시 설정 작업을 해줘야 합니다. 재부팅을 해도 영구적으로 적용하기 위해서는 아래와 같이 `fstab`에 `uuid`를 등록을 해 주면 됩니다.  

bash
ls -la /dev/disk/by-uuid/ #--> 먼저 sdb1의 uuid를 확인합니다.

```
total 0 
drwxr-xr-x 2 root root 120 Jun 29 23:25 . 
drwxr-xr-x 5 root root 100 Jun 29 22:46 .. 
lrwxrwxrwx 1 root root  10 Jun 29 23:25 47b817-f881-423d-b2f6-xxxxxxxxxxxx   -> ../../sdb1  #--> sdb1 uuid 확인
lrwxrwxrwx 1 root root  10 Jun 29 22:46 7a00c89a-cd13-42ac-8f4b-xxxxxxxxxxxx -> ../../sda1 

확인한 uuid를 fstab에 적용합니다.

vi /etc/fstab  #--> fastb 수정 

아래와 같이 UUID=47b817-f881-423d-b2f6-xxxxxxxxxxxx /data ext4 defaults 1 0fstab에 추가해 줍니다.

UUID=7a00c89a-cd13-42ac-8f4b-xxxxxxxxxxxx /boot         xfs    defaults        0 0 
UUID=47b817-f881-423d-b2f6-xxxxxxxxxxxx   /data        ext4    defaults        1 0   #--> uuid 값으로 마운트 합니다.
/dev/mapper/cl-swap                       swap         swap    defaults        0 0 

※ fstab 마지막 숫자를 1로 설정하면 주기적으로 fsck체크를 하기 때문에 디스크 용량이 클 경우(1TB 이상) 무리가 갈 수 있으므로 0으로 설정하는 것을 추천합니다.

gitlab 터미널 명령어

몇가지 대표적인 gitlab의 터미널 명령어는 아래와 같습니다.

gitlab 재설정 후 제시작

gitlab을 터미널로 수정했다면 아래의 명령어를 실행해서 반영시킨 후 재시작해야 합니다.

sudo gitlab-ctl reconfigure

gitlab 시작

sudo gitlab-ctl start

gitlab 종료

sudo gitlab-ctl stop

gitlab 재시작

sudo gitlab-ctl restart

gitlab 삭제

gitlab를 삭제해야 할 경우는 아래의 명령어로 삭제하면 되고 남아있는 폴더나 파일이 있는경우 수동으로 삭제하면 됩니다.

명령어 삭제

sudo gitlab-ctl uninstall
sudo gitlab-ctl cleanse
sudo gitlab-ctl remove-accounts

sudo dpkg -P gitlab-ce || sudo yum -y remove gitlab-ce

수동삭제

폴더강제 삭제 명령어 : rm -rf 폴더명

  • /opt/gitlab
  • /var/opt/gitlab
  • /etc/gitlab
  • /var/log/gitlab

어쩌다보니여기까지

고급지게 만들어 저렴하게 배포는 공작소

0