1. Git이란?
소프트웨어 개발자들은 형상관리 도구로 Git을 많이 사용하는 듯하다. 리눅스를 만드신 리눅스 토발즈 선생님께서 규모 협업 프로젝트에서 형상관리는 중요하다는 것을 생각하고 Git이라는 형상관리 도구를 만드셨다. 처음 일을 시작하면서 형상관리라는 말을 들었을 때 무슨 도면을 관리하는 것인 줄 알았더니 꼭 그런 것만은 아니았다. 형상관리는 제품 개발 과정에서 생산되고 수정되는 각종 문서나 자료의 변경 이력과 배포 이력을 추적 관리하는 것을 말하는 것이었다.
예를 들어 주문자에게 위탁을 받아 제품을 생산한다고 하자. 주문자가 처음에 10가지 성능 요구조건을 요구하다가 만들다 보니 이것도 필요하겠는데? 이건 별로 필요 없겠는데? 하면 성능 요구조건이 점점 늘어나거나 변경되는 일이 발생한다. 이런 경우 규격서를 수정하고 합의하에 재발행할 수 있는데 일에 치이다 보면 언제 무슨 이유로 수정이 되었는지 까먹게 된다. 심지어는 어떤 개발자는 A버전 규격서를 가지고 개발하고 어떤 개발자는 B버전 규격서를 놓고 만들다 보면 나중에 인터페이스가 안 맞아서 개판이 되는 것이다. 따라서 변경 이력을 추적하고, 관리하고, 참여 인력 누구나 접근할 수 있도록 하는 것은 중요하다.
본인의 경우 얼마 전 유한요소 모델을 업데이트하기로 하여 일주일간 작업해서 배포했더니 "그거 최신 버전 아닌데?"라는 말을 듣고 당황한 적이 있다. 내가 관리하는 버전보다 더 높은 버전이 다른 저장소에 있는 것이었다.
오픈소스 프로젝트 같은 경우는 참여인력이 수천명이다 보니 이런 형상관리가 더욱 중요한 모양이다. 주로 GitHub와 같은 플랫폼을 많이 이용하는 것으로 보인다. GitHub은 공개 프로젝트는 무료로 서비스를 제공하고 비공개 프로젝트는 비용을 지불해야 한다. 그러니 공개 프로젝트인 오픈소스 프로젝트는 GitHub을 이용하면 최적이다. 반면 GitLab은 비공개 프로젝트도 커뮤니티 버전은 무료로 서비스를 제공하기 때문에 사용자가 늘어나는 추세인 듯하다. 하지만 본인의 회사는.. 업무망과 인터넷망이 분리되어 있다. 이런 분리 망이 보안에서 장점이 있기도 하지만 웹에서 서비스되고 있는 여러 저장소를 쓰기가 곤란한 점, 그리고 사내에 형상관리 시스템이 전무하여 Git을 쓰고 싶어도 원격 저장소를 쓰기가 어렵다는 점이 문제다. 하지만 GitLab은 이런 경우에 인트라넷망에도 직접 설치해서 사용할 수 있다고 하니 설치를 해봐야겠다.
그러나 GitLab은 공식적으로 리눅스만 지원한다. 따라서 Windows 10에는 설치가 안된다. 방법을 찾아보니 안된다는 말만 잔뜩 있어서 잠시 절망했으나 Windows 10에서 WSL2(Windows Subsystem for Linux 2) 기반으로 Docker를 사용할 수 있다는 것을 알았다. 특히 Windows 10 Home은 Hyper-V가 지원되지 않으나 Windows 빌드 18362.1049 이상에서는 Windows Home에서도 WSL2를 사용할 수 있다. 따라서 윈도 업데이트를 충실히한 사람이면 Home 버전에서도 리눅스나 Docker를 이용하는데 문제가 없을 것이다.
GitLab을 이용하기 위해서 WSL2를 활성하하고 Ubuntu를 설치한 뒤 여기에 GitLab을 설치하는 방법이 있겠으나 그냥 WSL2 기반의 Docker를 설치하고 GitLab 이미지를 당겨와서 설치하는 것이 더 편한 것 같다. 하지만 인터넷이 되지 않는 인트라넷망에서는 Windows Store를 쓸 수도 없고 도커 이미지를 당겨올 수도 없는데 어떻게 설치를 할 것인가? 지금부터 차근차근 진행해 본다.
2. WSL2 활성화
기본적으로 아래 링크에 있는 내용을 따른다.
Windows 10에 WSL 설치 | Microsoft Docs
2.1. 윈도 버전 체크
먼저 Windwos key + R을 누르면 나타는 실행창에 "winver"를 입력해 빌드 버전이 18362.1049 이상인지 확인한다. 그 이하라면 윈도 업데이트를 해야 한다.
2.2. WSL2 활성화
Windwos Powershell을 관리자 모드로 실행한다. 당신이 관리자여도 관리자 모드로 실행하지 않으면 명령어가 안 먹는다.
아래 명령어를 powershell에 입력해 WSL2를 활성화 한다.
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
2.3. 가상 머신 기능 활성화
아래 명어를 powershell에 입력해 가상 머신을 활성화한다.
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
2.4. Linux Kernel Update 설치
아래 주소에서 Linux Kernel Update를 다운로드하고 설치한다. 이상한 거 아니니 걱정 노. 아래 링크는 위에 링크된 마이크로소프트 사의 WSL2 설치 매뉴얼에 있는 링크이다.
https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi
2.5. WSL2를 기본 버전으로 설정
Powershell에서 다음 명령어를 통해 WSL2를 기본 버전으로 설정한다.
wsl --set-default-version 2
wsl2와의 차이점은 어디서 알아보세요~ 같은 문구가 나오는데 설정은 된 것이니 무시하자.
3. Docker 설치
이제 Docker를 설치해야 한다. 아래 링크에서 도커 최신 버전을 받자.
Install Docker Desktop on Windows | Docker Documentation
3.1. Docker 설치
그냥 설치하면 된다. 설치할 때 WSL2 backend를 꼭 체크하도록 한다.
설치가 끝나면 윈도우 로그아웃을 했다가 다시 로그인한다.
Powershell에서 아래 명령어를 입력해 도커 버전을 확인할 수 있다.
docker version
도커 상태는 아래 명령어로 확인할 수 있다.
wsl --list -v
NAME STATE VERSION
*docker-desktop Running 2
docker-desktop-data Running 2
3.2. Docker data 이동
본인은 Docker data를 미러링이 되고 있는 스카시 드라이브로 이동했다. 아래 명령어를 통해 도커 데이터를 내보낼 수 있다. 명령어를 수행하면서 도커가 갑자기 종료되었다고 나올 텐데 어차피 안 쓰고 있었으니까 무시한다.
D:\>mkdir Docker
D:\>cd Docker
D:\Docker> wsl --export docker-desktop ./docker-desktop.tar
D:\Docker> wsl --export docker-desktop-data ./docker-desktop-data.tar
아래 명령어로 도커에서 등록 해제한다.
wsl --unregister docker-desktop
wsl --unregister docker-desktop-data
다시 Docker data가 들어갈 디렉터리를 만든다.
D:\Docker> mkdir \docker-desktop
D:\Docker> mkdir \docker-desktop-data
아래 명령어로 도커를 재등록한다.
wsl --import docker-desktop D:\Docker\docker-desktop ./docker-desktop.tar
wsl --import docker-desktop-data D:\Docker\docker-desktop-data ./docker-desktop-data.tar
도커를 재시작하면 준비 완료.
4. GitLab 설치
4.1 GitLab 받아오기
도커에서 GitLab을 설치하는 방법은 쉽다. 아래 명령어로 GitLab 최신 버전 이미지를 pull 해서 설치하면 그만이다.
docker pull gitlab/gitlab-ce:latest
그런데 우리는 뭐다? 인터넷이 안된다.. 그럼 GitLab 저장소로 가서 코드를 받으면 될까? 도커에서는 안된다. 일단 인터넷이 되는 PC에 위에 설명한 것처럼 도커를 다시 설치해준다. 귀찮더라도 한다.
도커 설치가 끝나면 위 명령어로 GitLab-CE를 pull 해온다. 아래 명령어로 이미지가 잘 들어와 있는지 확인할 수 있다.
D:> docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
gitlab/gitlab-ce latest 63c235db5c43 1 days ago 2.15GB
이제 아래 명령어로 받아온 이미지를 다시 내보내기 한다. -o는 저장할 위치를 지정하는 프리픽스다. -o 대신에 >를 쓰는 경우가 있는데 이것은 지금 내보내기 한 OS에서 다시 불러다 쓸 경우에 쓰는 것이다. 한번 해보면 저장된 용량이 다르다는 것을 알 수 있다. 아무튼 우리는 다른 PC에 설치할 거니까 -o를 쓴다.
docker save gitlab/gitlab-ce -o ./gitlab-ce.tar
용량이 2GB가 넘으니까 시간이 좀 걸린다. 인내심을 가지고 gitlab-ce.tar이 잘 생성될 때까지 기다리자.
저장이 완료되었으면 이 파일을 인터넷이 안 되는 PC로 옮긴다.
그리고 아래 명령어를 이용해 도커에 올린다.
docker load -i ./gitlab-ce.tar
4.2. GitLab 설치
다음 명령어로 GitLab에서 쓸 볼륨을 세 개 만들어 준다.
docker volume create gitlab-data-vol
docker volume create gitlab-log-vol
docker volume create gitlab-config-vol
그리고 다음 명령어로 설치를 시작한다.
docker run --detach
--publish 443:443 --publish 80:80 --publish 22:22
--name gitlab
--restart always
--volume gitlab-config-vol:/etc/gitlab
--volume gitlab-log-vol:/var/log/gitlab
--volume gitlab-data-vol:/var/opt/gitlab
gitlab/gitlab-ce:latest
보기 좋게 줄 바꿈을 해놨지만 여러분이 쓸 때는 그냥 한 줄에 다 쓰면 된다. 아래처럼.
docker run --detach --publish 443:443 --publish 80:80 --publish 22:22 --name gitlab --restart always --volume gitlab-config-vol:/etc/gitlab --volume gitlab-log-vol:/var/log/gitlab --volume gitlab-data-vol:/var/opt/gitlab gitlab/gitlab-ce:latest
아래 명령어로 설치가 잘 끝났는지 확인한다.
docker ps -a
4.3. 외부 접속 설정
아래 명령어로 컨테이너에 접근해 bash를 연다. 아니면 도커를 열고 컨테이너에 마우스를 오리면 옆에 CLI 커맨드 창 버튼이 나타난다. 이것을 통해 접근해도 된다.
docker exec -it gitlab /bin/bash
vi 에디터로 gitlab.rb 파일을 연다.
vi /etc/gitlab/gitlab.rb
거의 맨 위에 쯤에 external_url이라는 것이 있다. 이 위치를 PC의 컴퓨터 이름으로 바꾼다. 인터넷이 되는 곳이면 ip를 쓰던지 도메인을 쓰던지 알아서 하면 된다.
# url and port of http(s) access
external_url 'http://111.111.111.111/'
# ssh access address, ssh port has another configuration item
gitlab_rails['gitlab_ssh_host'] = '111.111.111.111'
vi에서 수정을 시작할 때는 insert 키를 누르던지 키보드에서 i키를 누르면 수정 모드로 들어간다. 수정이 끝나면 esc키를 누르자. 수정 모드에서 빠져나올 수 있다. 그리고 :을 입력하면 화면 아래로 커서가 이동하면서 명령 대기를 한다. 여기에 wq라고 입력하면 엔터를 치면 저장하고 빠져나온다.
4.4. 나머지 설정
나머지 설정은 해도 그만 안 해도 그만. 메일을 연동하면 구성원들에게 알림이 가니까 좋다. 그러나 사내망 네트워크 담당자가 아니면 어렵겠지. LDAP도 연결하면 좋다. 물론 이것도 사내망 담당자가 아니면 어려울 것이다. GitLab을 설정하는 자세한 방법들은 다른 곳에 더 잘 설명된 곳이 많으니 생략한다.
최근댓글