[Git] CentOS7 GitLab RPM 설치 및 Migration (GitBlit → GitLab)
IT/Etc

[Git] CentOS7 GitLab RPM 설치 및 Migration (GitBlit → GitLab)

728x90
반응형

팀에서 기존에 사용 중이던 Git 서버를 반납해야 했기에, 새로운 Git 서버를 구축해야 하는 미션이 떨어졌다.

우선 기존 GitBlit을 버리고 GitLab으로 갈아타기로 마음먹었으며, 이번 기회에 팀 내의 Git Branch 전략을 새롭게 정립하고 CI/CD 또한 개선하려 한다.

 

이번 포스팅에서는 Internet이 안되는 Intranet 환경에서 GitLab을 설치하는 과정과, Git Repository를 이전하는 방법에 대해 다룬다.

 

1. Install and configure the necessary dependencies

1.1 gitlab 설치에 필요한 패키지 설치

$ sudo yum install -y curl policycoreutils-python openssh-server perl

 

1.2 sshd 실행

$ sudo systemctl enable sshd
$ sudo systemctl start sshd

 

1.3 http, https 방화벽 open

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

# open 확인
$ sudo firewall-cmd --list-all

# 방화벽 재시작
$ sudo systemctl restart firewalld

 

iptables -L -vn 으로 firewall list 확인

 

1.4 메일링을 위한 postfix 메일서버 설치

$ sudo yum install postfix

$ sudo systemctl enable postfix
$ sudo systemctl start postfix

 

2. Add the GitLab package repository and install the package

인터넷이 된다면 아래 명령어를 이용하여 GitLab package repository를 등록하고 설치하면 된다.

$ curl -s <https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh> | sudo bash

$ sudo yum install gitlab-ce-13.11.3-ce.0.el7.x86_64

 

우리는 offline 환경이기 때문에 GitLab에서 제공하는 RPM 패키지를 다운받아서 설치하자.

https://packages.gitlab.com/gitlab/gitlab-ce

$ rpm -Uvh gitlab-ce-13.11.3-ce.0.el7.x86_64.rpm

 

3. Configure GitLab

3.1 /etc/gitlab/gitlab.rb 경로의 파일에서 gitlab 설정 확인

$ vi /etc/gitlab/gitlab.rb

 

3.2 external_url 변경

도메인 이름을 설정하려면 external_url 변수를 수정하면 된다.

## 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://gitlab.example.com>"

 

3.3 IP, Port 변경

만약 IP와 Port를 변경하고 싶은 경우 unicorn['listen']unicorn['port'] 변수를 수정하면 된다.

################################################################################
## GitLab Unicorn
##! Tweak unicorn settings.
##! Docs: <https://docs.gitlab.com/omnibus/settings/unicorn.html>
################################################################################

### Advanced settings
# unicorn['listen'] = 'localhost'
# unicorn['port'] = 8080
# unicorn['socket'] = '/var/opt/gitlab/gitlab-rails/sockets/gitlab.socket'
# unicorn['pidfile'] = '/opt/gitlab/var/unicorn/unicorn.pid'
# unicorn['tcp_nopush'] = true
# unicorn['backlog_socket'] = 1024

###! **Make sure somaxconn is equal or higher then backlog_socket**
# unicorn['somaxconn'] = 1024

 

3.4 data repo 변경

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

만약 이 부분을 설정하지 않고 # 주석 처리가 되어 있다면, default 저장소 path는 /var/opt/gitlab/git-data로 설정된다.

나는 이 부분을 새로 마운트한 /data volume으로 변경해주었다.

 

만약 directory를 새롭게 추가하였다면, gitlab이 접근할 수 있도록 권한을 확인해 주어야 한다.

권한이 없다면 아래 명령어로 권한을 부여하자

$ chown -R git:git /data/git-data/

 

3.5 SMTP setting

gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.server"
gitlab_rails['smtp_port'] = 465
gitlab_rails['smtp_user_name'] = "smtp user"
gitlab_rails['smtp_password'] = "smtp password"
gitlab_rails['smtp_domain'] = "example.com"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_openssl_verify_mode'] = 'peer'

# If your SMTP server does not like the default 'From: gitlab@localhost' you
# can change the 'From' with this setting.
gitlab_rails['gitlab_email_from'] = 'gitlab@example.com'
gitlab_rails['gitlab_email_reply_to'] = 'noreply@example.com'

# If your SMTP server is using self signed certificates you can specify a custom ca file
gitlab_rails['smtp_ca_file'] = '/path/to/your/cacert.pem'

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

 

4. GitLab 초기화 및 설치 진행

$ sudo gitlab-ctl reconfigure

 

5. Web 접속 및 로그인

최초 접속 시 password reset 화면으로 redirect 된다.

 

default 계정의 username은 root 이다.

password 설정 후 root로 로그인하여 사용할 유저를 등록하면 된다.

 

6. Git Repository Migration (GitBlit → GitLab)

이제 준비는 끝났다.

기존에 사용하던 GitBlit의 Repository를 새로 구축한 GitLab으로 이동해야 한다.

 

--mirror 옵션을 사용하면 원격 저장소(Remote Repository)의 복사본을 만들어 간단하게 Repository를 이전할 수 있다.

참고로 --mirror--bare 옵션을 포함한다.

git clone --mirror {기존 리파지토리 주소}
cd {기존 리파지토리 명}.git
git remote set-url --push origin {신규 리파지토리 주소}
git push --mirror

 

Reference

 

 

 

 

728x90
반응형