[GitLab] Cloud(Centos)에 gitlab 설치, gitlab 특정버전 설치, gitlab ssl 설정
깃랩 설치를 과장해서 오백번은 한거 같은데 왜 매번 이렇게 헤매는지 모르겠닭
다음번에는 안헤매고 한시간만에 구축하도록 알잘딱깔센하게 정리해본다.
gitlab 설치 전 준비
# OpenSSH 서버 설치
sudo yum install curl policycoreutils-python openssh-server
#RHEL8 의 경우 yum install policycoreutils-python-utils
#ssh 서비스 기동
sudo systemctl start sshd
sudo systemctl enable sshd
# 방화벽 규칙 설정
# FirewallD is not running -> systemctl start firewall-cmdd
sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-service=https
sudo firewall-cmd --reload
# Postfix 설치(gitlab에서 메일링 서비스 담당)
sudo yum install postfix
#postfix 서비스 기동
sudo systemctl start postfix
sudo systemctl enable postfix
gitlab 설치
# gitlab 리포지토리를 시스템 원본 목록에 추가
curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash
# 최신 버전 설치
sudo yum install gitlab-ce
# 특정 버전 설치
# 버전 검색
yum list gitlab-ce --showduplicates | sort -r
# 설치
sudo yum install gitlab-ce-[버전]
domain 설정
나는 도메인의 호스트네임을 활용해 gitlab url을 설정해서 dns 레코드 설정을 추가하였다
(도메인 발급받는 법은 구글에 많으니 생략)
도메인 레코드의 A(호스트)에 url과 서버의 공인 ip를 넣어 설정한다
SSL을 위한 포트 개방
이게 진짜 중요한데
gitlab은 letsencrypt를 사용하여 ssl을 제공하고
그래서 적용할 때 letsencrypt가 해당 서버에 접속해서 ssl 설정을 할 수 있도록 포트를 열어두어야 한다.
여기서 letsencrypt의 서버 ip는 매번 랜덤해서 정해진 ip로 개방하면 안되고
"80, 443 port를 모든 ip가 접근 가능하도록 설정해두어야한다"
90일 후 재갱신 시에도 마찬가지
하지만 특정 포트를 anyway로 열어두는건 보안상 찝찝하므로
ssl 설정 된 후 다시 닫아도 된다
(대신 자동 재갱신은 이용 못하고 갱신때마다 수동으로 포트 열고 갱신하고 닫아야함)
클라우드 서버를 사용하고 있다면 tcp 인바운드 설정을 0.0.0.0으로 설정하면 된다
gitlab.rb 설정
경로 : /etc/gitlab/gitlab.rb
# /etc/gitlab/gitlab.rb
# 아래와 같이 수정
external_url 'https://hostname.domain.com'
letsencrypt['enable'] = true
letsencrypt['contact_emails'] = ['admin@example.com'] #optional
# 수정 후 적용
sudo gitlab-ctl reconfigure
external_url은 위에 도메인 레코드에서 설정한 호스트명과 같은 값이다
reconfigure가 끝나면 해당 도메인으로 gitlab 서버 접속이 가능하다
gitlab 로그인
처음 gitlab 페이지를 접속하면 로그인 화면이 뜬다
gitlab 초기 비밀번호는 /etc/gitlab/initial_root_password에 있다'
해당 비밀번호를 가지고 root로 로그인하면 된다
루트 계정 비밀번호 변경
#gitlab shell로 접근
sudo gitlab-rails console -e production
#gitlab root 계정 찾기
user=User.where(id:1).first
#결과문
=> <User id:1 @root>
#root계정 비밀번호 변경 후 저장
user.password='[변경 비밀번호]'
user.password_confirmation='[재확인 변경 비밀번호]'
user.save
#결과문
=> true
#gitlab shell 나가기
exit
이제 진짜 끝이다!!!!!!