회원가입

AWS Linux 2 Gitlab Community Edition 구축

NULL 2022-03-14

 

시작에 앞서...


회사 프로젝트를 Gitlab CE를 구축해서 따로 관리하고 있었다.

그런데, 오늘 AWS에서 이메일이 왔는데, 현재 Gitlab Community Edition용 서버가 DDoS 좀비 컴퓨터에 감염되어 다른 컴퓨터 공격에 가담하고 있다고 연락이 왔다.

 

그래서 여러가지 방법 중, 기존 Gitlab Community Edition 서버가 AWS Lightsail 로 배포되어 있었는데, 이 기회에 AWS EC2 로 빼자는 의견에 Gitlab Community Edition을 구현하기로 했다.

 

이 게시글에는 AWS Linux Gitlab CE를 구축하는 내용을 포스팅 할 것이다.

다음 게시글은 기존에 있는 Gitlab Community Edition 서버를 이용하여 백업하여 복구하는 방법을 포스팅 할 것이다.

 

 

AWS Linux 2 인스턴스 생성


1. Amazon Linux 2 인스턴스 생성

필자는 Kernel 5.10을 선택했다, 이유는 다른 EC2 들이 Kernel 5.10을 이용하고 있어 프로젝트 OS를 맞추려는 의도였다.

 

2. 인스턴스 유형

t2.medium 을 선택 했다.

(유형은 상황에 따라 Scale-up 할 수 있으니 medium으로 적당하게 설정 했다.)

 

3. 스토리지 추가

크기를 160GiB 로 설정했다.

기존 Lightsail SSD 설정에 맞춰 크기를 설정했다. Repository 이기 때문에 많은 용량이 필요할 것 같아 160GiB 로 기존에 설정했던 것 같다.

 

4. 보안그룹에서 네트워크 80포트와 443포트를 열어준다.

 

나머지는 전부 기본 값으로 설정했다.

 

 

AWS Linux 2 Gitlab Community Edition + SSL 구축하기


 1. yum update

초기 설정을 위해 시스템 패키지를 최신버전으로 업데이트 했다.

sudo yum -y update

이 작업을 마치면 항상 재부팅을 하는 것을 추천 한다고 한다.

sudo reboot

 

2. Server hostname 지정하기

재부팅 후, 서버의 hostname 을 지정하자.

sudo hostnamectl set-hostname XXX.XXXXXX.com --static
sudo hostnamectl set-hostname XXX.XXXXXX.com --transient

 

서버 재부팅 중에도 호스트 이름을 유지하도록 클라우드 초기화 구성을 업데이트한다.

sudo vi /etc/cloud/cloud.cfg

 

cloud.cfg

마지막에 해당 코드를 작성한다.

preserve_hostname: true

 

해당 변경 사항을 적용하기 위해 systemctl을 재부팅한다.

sudo systemctl reboot

 

바꿔진 hostname 을 확인하다.

[ec2-user@git ~]$ hostnamectl
   Static hostname: XXX.XXXXXX.com
         Icon name: computer-vm
           Chassis: vm
        Machine ID: ec239da046efe33c7665d4508a7d0a61
           Boot ID: 1e38214807fb4591bff2d68438765f22
    Virtualization: xen
  Operating System: Amazon Linux 2
       CPE OS Name: cpe:2.3:o:amazon:amazon_linux:2
.....

위와 같이 나오면 잘 적용된 것이다.

 

3. Gitlab CE Amazon Linux 2 설치 준비


이제 본격적인 Amazon Linux 2gitlab CE를 설치하자

 

아래 명령어는 repository file /etc/yum.repos.d/gitlab_gitlab-ce.repo 생성해준다.

sudo tee /etc/yum.repos.d/gitlab_gitlab-ce.repo<<EOF
[gitlab_gitlab-ce]
name=gitlab_gitlab-ce
baseurl=https://packages.gitlab.com/gitlab/gitlab-ce/el/7/x86_64
repo_gpgcheck=1
gpgcheck=1
enabled=1
gpgkey=https://packages.gitlab.com/gitlab/gitlab-ce/gpgkey
       https://packages.gitlab.com/gitlab/gitlab-ce/gpgkey/gitlab-gitlab-ce-3D645A26AB9FBD22.pub.gpg
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
metadata_expire=300
EOF

 


4. Gitlab CE Amazon Linux 2 설치


sudo yum install gitlab-ce

설치를 하자

 

5. SSL 적용 및 Gitlab CE 실행


 아래 명령어는 gitlab 설정이 모여있는 집합체이다.

sudo /etc/gitlab/gitlab.rb

 

여기서 수정해야 하는 곳은

external_url 'https://XXX.XXXXXX.com'
# Let's Encrypt integration
letsencrypt['enable'] = true
letsencrypt['contact_emails'] = ['XXX@XXX.com'] # This should be an array of email addresses to add as contacts
letsencrypt['auto_renew'] = true
nginx['enable'] = true
nginx['redirect_http_to_https'] = true

 

gitlab-ctl stop로 한번 정지해준다.

(reconfigure를 하려면 gitlab-ctl stop을 해줘야 한다.)

sudo gitlab-ctl stop
sudo gitlab-ctl reconfigure

 

SSL 적용을 위해 아래 명령어를 친다.

sudo gitlab-ctl renew-le-certs

 

gitlab-ctl 를 시작해준다.

sudo gitlab-ctl start

 

6. 해당 도메인네임으로 접속한다.


도메인은 Route 53을 이용하여 IP를 적용했다.

 

참고링크:

https://techviewleo.com/install-gitlab-ce-on-amazon-linux-with-lets-encrypt/

0 0
뼈와 살
프로젝트를 혹은 직장에서 일하면서 겪게 되는 Blocker, 문제 등 나에게 뼈와 살이 되어 성장시켜주게 한 문제점을 어떻게 해결했는지를 기록하는 게시판이다.
Yesterday: 750
Today: 547