회사 프로젝트를 Gitlab CE를 구축해서 따로 관리하고 있었다.
그런데, 오늘 AWS에서 이메일이 왔는데, 현재 Gitlab Community Edition용 서버가 DDoS 좀비 컴퓨터에 감염되어 다른 컴퓨터 공격에 가담하고 있다고 연락이 왔다.
그래서 여러가지 방법 중, 기존 Gitlab Community Edition 서버가 AWS Lightsail 로 배포되어 있었는데, 이 기회에 AWS EC2 로 빼자는 의견에 Gitlab Community Edition을 구현하기로 했다.
이 게시글에는 AWS Linux 로 Gitlab CE를 구축하는 내용을 포스팅 할 것이다.
다음 게시글은 기존에 있는 Gitlab Community Edition 서버를 이용하여 백업하여 복구하는 방법을 포스팅 할 것이다.
필자는 Kernel 5.10을 선택했다, 이유는 다른 EC2 들이 Kernel 5.10을 이용하고 있어 프로젝트 OS를 맞추려는 의도였다.
t2.medium 을 선택 했다.
(유형은 상황에 따라 Scale-up 할 수 있으니 medium으로 적당하게 설정 했다.)
크기를 160GiB 로 설정했다.
기존 Lightsail SSD 설정에 맞춰 크기를 설정했다. Repository 이기 때문에 많은 용량이 필요할 것 같아 160GiB 로 기존에 설정했던 것 같다.
나머지는 전부 기본 값으로 설정했다.
초기 설정을 위해 시스템 패키지를 최신버전으로 업데이트 했다.
sudo yum -y update
이 작업을 마치면 항상 재부팅을 하는 것을 추천 한다고 한다.
sudo reboot
재부팅 후, 서버의 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
.....
위와 같이 나오면 잘 적용된 것이다.
이제 본격적인 Amazon Linux 2에 gitlab 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
sudo yum install 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
도메인은 Route 53을 이용하여 IP를 적용했다.
참고링크:
https://techviewleo.com/install-gitlab-ce-on-amazon-linux-with-lets-encrypt/