[GitLab] CentOS 7에 GitLab 설치 - 설치편
GitLab 사이트에도 정말 잘 설명되어 있지만 직접 설치해보면서 시행착오를 겪은 부분들을 추가로 정리하려고 한다.
- 사이트 : https://about.gitlab.com/install/
Download and install GitLab
Learn about the various GitLab installation packages and downloads for Ubuntu, Debian, Docker, Google Cloud, and many more.
about.gitlab.com
사실 CentOS 8에 설치하고 싶었는데 네이버클라우드플랫폼에서 제공되는 버전이 7.8까지만 제공되어 CentOS 7에 설치를 진행했다.
- 서버 사양은
-> 제일 저렴한 Micro 타입으로 (1 CPU, 1GB Memory, 50GB HDD 제공) GitLab 패키지 설치 40분 넘게 진행중이라 포기했다.
-> 그래서 한단계 올려서 Compact 타입으로 (1 CPU, 2GB Memory, 50GB SSD 로 셋팅) GitLab 패키지 설치 진행했더니 약 10분정도만에 설치가 끝났다... 설치 이력에 warning 도 뜨고 Script 설치도 실패했다고 하면서 접속도 안되고 서버 부하도 심하고 해서 지웠다.
-> 그래서 한단계 더 올려서 Standard 타입으로 (2 CPU, 4GB Memory, 50GB SSD 로 셋팅) GitLab 패키지 설치 진행했더니 정상적으로 완료 메시지 표시 되고 웹상에서 접속도 잘 된다.
- Remote로 접속 테스트도 하기 위해 Public IP 도 하나 신청해서 연결 했다.
위 링크로 접속하여 CentOS 7 을 선택 해준다.
해당 버튼을 클릭 하면 맨 하단에 아래와 같이 CE or EE 라고 링크가 있다
설치하고자 하는 버전 링크를 잘 들어가서 보고 설치 해야 한다.
디폴트로 접속되는 페이지는 EE 버전
CE : 무료
https://about.gitlab.com/install/?version=ce
EE : 30일 Trial 이후 유료 ( CE 기능 외에 추가적인 기능들이 더 있다고 한다. )
https://about.gitlab.com/install/
난 공짜버전인 CE 버전을 설치 해본다.
먼저 설치를 진행 하면서 필요한 부가적인 것들을 설치 및 설정 한다.
아래 박스 내용은 사이트에 나와있는 내용이다.
sudo yum install -y curl policycoreutils-python openssh-server perl sudo systemctl enable sshd sudo systemctl start sshd sudo firewall-cmd --permanent --add-service=http sudo firewall-cmd --permanent --add-service=https sudo systemctl reload firewalld |
직접 서버에서 작업을 하는게 아닌 로컬 PC에서 Remote로 접속해서 설치를 진행하려면 필요하니까 설치 한다.
난 네이버클라우드플랫폼에 서버 하나 생성해서 하는거라 기본적으로 4개중에 뭐가 설치되어 있나 확인 해봤다.
# rpm -qa curl policycoreutils-python openssh-server perl
어쨋든 설치를 진행 해본다.(버전이 낮으면 알아서 신규 버전으로 업데이트 해준다.)
# yum install -y curl policycoreutils-python openssh-server perl
나머지 명령어도 실행해준다.
ssh 서버 실행 - Remote로 서버에 접근할꺼라 실행해준다.
sshd 서비스 활성화
# systemctl enable sshd
sshd 서비스 실행
# systemctl start sshd
방화벽 설정 - 필수는 아니라서 서비스를 내려도 된다.
방화벽에 http 오픈
# firewall-cmd --permanent --add-service=http
방화벽에 https 오픈
# firewall-cmd --permanent --add-service=https
그냥 입력 하다보니 firewallD is not running 이라고 표시된다.
그래서 상태를 확인해본다.
# firewall-cmd --state
방화벽 서비스 시작 후 다시 등록 요청하니까 정상적으로 등록이 되었다.
방화벽서비스 시작
# systemctl start firewalld
http, https 접속 허용(--add 라고 입력해야 하는데 -add라고 입력해서 오류 한번 발생했다 ㅋㅋ .....)
# firewall-cmd --permanent --add-service=http
# firewall-cmd --permanent --add-service=https
방화벽 재시작
# systemctl reload firewalld
방화벽에 등록된 정보 확인
# firewall-cmd --permanent --list-all
어차피 앞단에 별도의 방화벽이 있어서 걍 중지 시켰다.(방화벽 설정은 필요할때 하면 된다.)
# systemctl stop firewalld
메일서버 설치 PostFix
메일서버를 설치하라고 나온다.
외부 SMTP 서버를 사용할 수 있다면 구지 설치 안해도 된다.(아마 이미 설치되어 있을 수도 있다.)
sudo yum install postfix sudo systemctl enable postfix sudo systemctl start postfix |
우선 설치되어 있는지 확인이나 한번 해본다
# rpm -qa postfix
이미 설치가 되어 있다... ㅎㅎ
그래도 걍 업데이트나 할 겸 쭉 진행 해본다.
설치
# yum install postfix
활성화
# yum enable postfix
서비스 시작
# yum start postfix
활성화 한 후 실행해 보니 에러가 발생한다....
Job for postfix.service failed because the control process exited with error code. See "systemctl status postfix.service" and "journalctl -xe" for details.
상세 상태를 확인해보니 Active 부분이 failed 가 떨어졌다.
# systemctl status postfix.service
설정 파일에 문제가 있는지 확인 한다.
# postfix check
아래와 같이 오류 메시지가 발생한다.
postfix: fatal: parameter inet_interfaces: no local interface found for ::1
::1은 IPv6에서 사용하는 주소로 IPv4에서는 127.0.0.1을 사용하기 때문에, 서버에서 IPv6를 사용하지 않으므로 hosts 파일의 해당부분을 주석처리 하면 된다.
hosts 파일 내용 수정
# vi /etc/hosts
-> '::1' 앞에 '#' 을 붙여줌
설정파일에 문제가 없는지 다시 체크
# postfix check
아무것도 표시 안되었으니 정상으로 보고 postfix 서비스 시작
# systemctl start postfix
프로세스 떠있는지 확인 해본다.
# ps -ef | grep postfix
GitLab 레파지토리를 추가
CE 버전
curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash |
EE 버전
curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.rpm.sh | sudo bash |
Gitlab에서 제공되는 ShellScript 실행(CE버전 설치할꺼라 해당 명령어 실행)
# curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash
GitLab 설치 시작
CE 버전
sudo EXTERNAL_URL="https://gitlab.example.com" yum install -y gitlab-ce |
EE버전
sudo EXTERNAL_URL="https://gitlab.example.com" yum install -y gitlab-ee |
역시나 난 CE 버전 설치할 꺼니까 해당 명령어 실행
EXTERNAL_URL에 입력된 값을 설치할때 참조해서 사용한다고 하여 Public IP 를 넣었다.
# EXTERNAL_URL="http://49.50.174.13" yum install -y gitlab-ce
- Micro 타입 1CPU, 1GB Memory 로 설치 시 Complete 까지 표시 되지 않고 서버가 다운 되었다.
- Compact 타입 1CPU, 2GB Memory 로 설치 시 아래와 같이 warning이 떴다.
- Standard 타입 2CPU, 4GB Memory 로 설치 시 정상적으로 성공 했다.
GitLab 접속
브라우저에서 완료 메시지 표시된거에 있는것 처럼 사이트 접속 해보니 아래와 같이 신규 비밀번호를 셋팅하는 화면이 표시된다.
http://49.50.174.13
비밀번호 셋팅 후 로그인 페이지에서 로그인 하면 된다.
ID : root
PW : 셋팅한 비밀번호
로그인 후 메인페이지
GitLab 설정 변경
GitLab 설정 중 가장 흔하게 변경할 여지가 있을꺼 같은 정리
설정 파일 오픈
# vi /etc/gitlab/gitlab.rb
접속 URL 및 포트 변경
변경할 위치로 이동 : '/external_url' 을 입력 후 엔터 (보기모드일 때 가능, 삽입 모드일 경우 esc키를 누른 후 바로 '/ + external_url' 을 타이핑 후 엔터) 를 누르면 된다.
위에 설치할 때는 'http://49.50.174.13' 까지만 입력했었고 포트를 지정하려면 아래와 같이 'http://49.50.174.13:9001' 과 같이 입력 후 저장 해주면 된다.
nginx 옵션을 통해 인증서 및 다양한 설정을 할 수 있다.
데이타 디렉토리 변경 : 디폴트는 /var/opt/gitlab/git-data
SMTP 설정
GitLab 명령어
수정한 config 파일 적용
# gitlab-ctl reconfigure
GitLab 서비스 중지
# gitlab-ctl stop
GitLab 서비스 시작
# gitlab-ctl start
GitLab 서비스 재시작
# gitlab-ctl restart
GitLab 삭제 ( 난 어차피 클라우드 서버라서 딱히 사용할 일이 없어서 실행은 안해봤지만 아래와 같이 하면 된다고 한다. )
# gitlab-ctl uninstall
# gitlab-ctl cleanse
# gitlab-ctl remove-accounts
# dpkg -P gitlab-ce || yum -y remove gitlab-ce
# rm -rf /opt/gitlab
# rm -rf /var/opt/gitlab
# rm -rf /etc/gitlab
# rm -rf /var/log/gitlab