본문 바로가기

기타

GitLab CE 설치하기

 

 

 

 

 

기본 환경

Host
  VMware® Workstation 14 Player 14.0.0 build-6661328
OS

  Ubuntu 16.04.6 LTS
Application 
  - Docker : 19.03.5, build 633a0ea838
  - docker-compose : 1.11.2, build dfed245
  - git : 2.7.4

GitLab CE

GitLab은 서버에 설치해서 사용할 수 있는 git 클라이언트 어플리케이션입니다. 상용버전인 gitlab-EE (Enterprise Edition) 와 무료버전인 gitlab-CE (Community Edition)을 제공하고 있습니다.

gitlab CE를 도커로 설치하는 법에 대해서 정리해 보겠습니다.

GitLab에서는 공식적으로 도커이미지를 제공하고 있기때문에 바로 pull 해서 사용가능합니다.

 

GitLab Docker images | GitLab

GitLab Docker images The GitLab Docker images are monolithic images of GitLab running all the necessary services in a single container. Note: The Docker images do not include a mail transport agent (MTA). The recommended solution is to add an MTA, such as

docs.gitlab.com

 

Docker Hub

 

hub.docker.com

설치하기(Docker)

설치하는 방법을 1) docker command 로 설치하는 방법 과 2) docker-compose 파일로 설치하는 방법이 있습니다.

1) docker command 로 설치

# Gitlab Docker image 다운로드 및 서비스 시작 
# Gitlab service 포트 80 
# Gitlab root 관리자 비밀번호 root_git 
# 사용자 환경에 맞는 IP로

docker run --detach \
--publish 80:80 \
--publish 443:443 \
--publish 22:22 \
--name gitlab \
--restart always \
--env GITLAB_OMNIBUS_CONFIG="external_url 'http://<사용자 환경에 맞는 IP>';" \
--env GITLAB_ROOT_PASSWORD="root_git" \ 
--env GITLAB_TIMEZONE="Asia/Seoul" \
--volume /srv/gitlab/config:/etc/gitlab \ 
--volume /srv/gitlab/logs:/var/log/gitlab \ 
--volume /srv/gitlab/data:/var/opt/gitlab \ 
gitlab/gitlab-ce:latest

 

(gitlab)01. gitlab-ce 실행

2) docker-compose 파일 작성

#docker-compose.gitlab 파일 작성
sudo vi /opt/gopath/src/gitlab/docker-compose.gitlab.yml

 

gitlab:
 image: 'gitlab/gitlab-ce:latest'
 restart: always
 hostname: '<사용자 IP>'
 environment:
  GITLAB_OMNIBUS_CONFIG: |
   external_url 'http://<사용자 IP>'
  GITLAB_ROOT_PASSWORD: root_git
  GITLAB_TIMEZONE: Asia/Seoul
 ports:
  - '9090:80'
  - '443:443'
  - '22:22'
 volumes:
  - '/srv/gitlab/config:/etc/gitlab'
  - '/srv/gitlab/logs:/var/log/gitlab'
  - '/srv/gitlab/data:/var/opt/gitlab'

 

#docker-compose로 컨테이너 실행
docker-compose -f /opt/gopath/src/gitlab/docker-compose.gitlab.yml up -d

 

실행확인

(gitlab)01. gitlab-ce 실행 확인

Nginx를 사용하여 프록시 서버 세팅(선택)

Nginx와 같은 웹 서버를 왜 사용할까요?

  • 클라이언트의 요청 처리를 분산시킬 수 있는 로드 밸런스를 사용함으로써 효율적인 처리를 합니다.
  • 정적파일을 다이렉트로 제공해주기 때문에 백엔드 서버에 부담을 주지 않습니다.
  • 클라이언트는 Ngnix 포트로만 백엔드 서버에 접근할 수 있어 보안에 도움이 됩니다.

우선 nginx를 설치합니다.

 

#nginx 설치(proxy 설정을 위해서..)
sudo apt-get install nginx-full

 

그런 다음 nginx의 conf.d폴더에 gitlab.conf 파일을 하나 만들고 서버를 추가하도록 하겠습니다. conf.d폴더의 위치는 /etc/nginx/conf.d 입니다.

Nginx의 디렉터리 의미를 간단하게 알아봅시다

  • /etc/nginx: 해당 디렉터리는 Nginx를 설정하는 디렉터리입니다. 모든 설정을 이 디렉터리 안에서 합니다.
  • /etc/nginx/nginx.conf: Ngnix의 메인 설정 파일로 Nginx의 글로벌 설정을 수정 할 수 있습니다.
  • /etc/nginx/sites-available: 해당 디렉터리에서 프록시 설정 및 어떻게 요청을 처리해야 할지에 대해 설정 할 수 있습니다.
  • /etc/nginx/sites-enabled: 해당 디렉터리는 sites-available 디렉터리에서 연결된 파일들이 존재하는 곳 입니다.이 곳에 디렉터리와 연결이 되어 있어야 nginx가 프록시 설정을 적용합니다.
  • /etc/nginx/snippets: sites-available 디렉터리에 있는 파일들에 공통적으로 포함될 수 있는 설정들을 정의할 수 있는 디렉터리 입니다.
#proxy 세팅
sudo vi /etc/nginx/conf.d/gitlab.conf

 

conf.d폴더에 gitlab.conf 라는 파일을 생성한 뒤 아래의 설정을 입력합니다.

 

server {
        listen       80 default_server;
        listen       [::]:80 default_server;
        server_name  <사용IP>;

        # Load configuration files for the default server block.

        location / {
		proxy_pass http://localhost:9090;
		proxy_set_header Host $host;
    		proxy_set_header X-Real-IP $remote_addr;
    		proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }

}

 

이 파일의 코드가 가지는 의미를 해석해보면 클라이언트가 <사용IP>:80/ 주소로 요청하면 현재 서버에서 실행되고 있는 http://127.0.0.1:9090 으로 클라이언트의 요청을 대신 보내준다는 의미 입니다.

 

#nginx 재시작
systemctl restart nginx

 

만약 nginx 구동에 오류가 발생할 경우에는 다음과 같이 처리합니다. (포트 문제 발생)

 

sudo vi /etc/nginx/sites-enabled/default

 

default 파일의 17, 18번째 줄을 주석 처리합니다.

 

#listen 80 default_server;
#listen [::]:80 default_server;

GitLab Web 접속

접속 URL : http://<사용 IP>:9090 (프록시 서버를 사용하였으면 포트 없이 접속 가능)

접속 ID/PW : root/root_git

참고

Nginx

https://velog.io/@jeff0720/2018-11-18-2111-%EC%9E%91%EC%84%B1%EB%90%A8-iojomvsf0n

 

Nginx를 사용하여 프록시 서버 만들기

서론 안녕하세요, 영훈입니다. 회사에 입사한 후 인프라에 중요성에 대해서 깨닳게된 후 꾸준히 공부하고 있습니다. 오늘은 제가 공부한 Nginx의 개념에 대해서 간단히 정리한 후 Nginx 설치 및 사�

velog.io