최근 코딩과 소프트웨어 개발 관련 프로그램의 수요가 빠르게 늘고 있습니다. 그에 따라 이 분야에서 사용되는 도구들 간의 경쟁도 치열해졌습니다. 각 분야에서 가장 널리 쓰이는 도구 자리를 차지하기 위해 다양한 코딩·DevOps 프로그램들이 경쟁하고 있으며, Git도 그 중 하나입니다. 여기에 더해, 컴퓨터 앞에서 일하는 직군 사이에서 원격 근무가 보편화되면서 Git을 포함한 개발 도구를 원격 서버에서 운영하는 사례도 많아졌습니다. 직접 Git 서버를 구축하고 싶다면 이 글이 도움이 될 것입니다.
이 글에서는 Git이 무엇인지 설명하고 장단점을 살펴본 뒤, 자체 Git 서버를 운영하기 위한 요구 사항과 구축 방법을 안내합니다. 시작해 봅시다!
Git이 무엇인가요?
Git Git은 개발자가 프로젝트를 체계적으로 관리하고 효율적으로 작업할 수 있도록 설계된 DevOps 도구입니다. Git의 핵심 기능은 소스 코드의 변경 이력을 시간 순서대로 추적하는 것입니다. Git은 무료 오픈 소스 이며 꾸준히 업데이트됩니다. 덕분에 Git은 전 세계에서 가장 접근하기 쉽고 신뢰할 수 있는 DevOps 도구 중 하나로 자리 잡았습니다. Git이 설치된 모든 컴퓨터는 파일 변경 이력을 독립적으로 보유하는 완전한 저장소로 동작합니다. 약 20년에 걸친 개발과 30회 이상의 업데이트를 거쳐, Git은 현재 버전 2.40.0으로 운영되고 있으며 추가 업데이트도 예정되어 있습니다. 이제 Git의 주요 활용 사례를 살펴보며 Git 서버를 구축하는 이유를 이해해 봅시다.
Git 활용 사례
자체 Git 로컬 서버 구축에 앞서, Git의 주요 활용 사례를 간략히 살펴보고 왜 Git 서버를 운영하는지 이해해 봅시다.
저장소 복제 중
많은 개발자들이 원하는 프로그램과 파일을 추적하기 위해 서버에 Git 저장소를 만드는 방식을 선호합니다. Git은 몇 가지 기본 명령어만으로 현재 Linux 커널 저장소를 복제하고, 관심 있는 파일만 골라 훨씬 깔끔한 변경 로그를 관리할 수 있게 해줍니다. 과정이 간단하여 소규모·대규모 프로젝트 모두 손쉽게 관리할 수 있습니다. 이 방식은 "분기"라고도 불리는데, 기존 저장소에서 새로운 브랜치를 생성하는 것이 핵심이기 때문입니다.
Git 워크플로우
Git Workflow는 자체 Git 서버를 설정한 뒤 활용하게 될 또 다른 주요 기능입니다. Git 로컬 서버에서 클로닝을 통해 두 종류의 브랜치를 만들고, 하나는 웹사이트처럼 실제 프로젝트를 대표하도록 구성할 수 있습니다. 그리고 별도의 프로덕션 브랜치를 가진 Git 서버를 만들어, 모든 개발자의 변경 사항을 기록하고 배포 전에 테스트할 수 있습니다. 이러한 다단계 개발·테스트 방식은 작업 효율을 높일 뿐 아니라, 개발 과정과 변경 이력을 추적하는 것도 훨씬 쉽게 만들어 줍니다.
병합
저장소 브랜칭과 변경 로그가 기억나시나요? 이름에서 알 수 있듯, 병합(Merging)은 그 반대 작업입니다. Git에서 가장 까다로운 작업으로 꼽히는 병합은, 브랜치 노드에 쌓인 데이터를 원래 분기된 마스터 저장소로 다시 합치는 과정입니다. 프로젝트 전반에 걸친 모든 변경 사항을 하나의 저장소에 통합하여 완전한 프로젝트 이력을 만들기 위해 주로 사용됩니다. 작업 중에는 혼선을 막기 위해 브랜칭이 필요하지만, 병합은 그 반대로 프로젝트 마무리 단계나 문제 해결 시 전체 흐름을 한눈에 파악할 수 있도록 도와줍니다.
자체 Git 서버 운영: 장단점
어떤 프로그램이든 도입을 고려하는 사용자라면 장단점을 파악해야 합니다. 이 섹션에서는 Git을 직접 운영하는 경우에 해당하는 장단점을 살펴봅니다. 이 가이드가 다루는 내용이 바로 셀프 호스팅이므로, 본론으로 바로 들어가겠습니다.
셀프 호스팅 Git: 장점
제3자 개입 없음
Git을 직접 운영하면 본인과 허용한 사람만 파일에 접근할 수 있습니다. 원치 않는 제3자의 개입을 원천 차단할 수 있어 프로젝트에 집중하기가 훨씬 수월합니다. 데이터 보안 수준도 높아지고, 보안에 쏟을 계획이었던 리소스를 다른 곳에 활용할 수도 있습니다.
보안
보안 측면에서도, 모범 사례를 따르고 서드파티 도구를 적절히 활용하면 Git을 상당히 높은 수준으로 보호할 수 있습니다. 외부 서비스 대신 직접 운영하면 보안 수준이 다소 달라질 수 있지만, 자체 환경을 얼마나 안전하게 구성할지는 사실상 제한이 없습니다.
무제한 저장소
클로닝과 브랜칭을 기억하시나요? Git에서는 저장소를 만들 수 있는 개수에 제한이 없습니다. 덕분에 각 개발 브랜치마다 독립적인 저장소가 필요한 대형 프로젝트에 특히 적합합니다. 3D 에셋처럼 용량이 큰 파일을 다루거나 Unity로 작업하는 프로젝트에도 마찬가지입니다.
셀프 호스팅 Git: 단점
높은 관리 부담
직접 셀프 호스팅 플랫폼에 Git 서버를 구성하기로 했다면, 모든 브랜치와 메타데이터를 관리하는 일이 금세 골칫거리가 됩니다. 꼼꼼하게 직접 관리하거나, 숙련된 개발자에게 맡기는 수밖에 없습니다.
가파른 학습 곡선
Git을 호스팅하는 것과 Git을 완전히 익혀 로컬 서버까지 직접 운영하는 것은 전혀 다른 이야기입니다. Git은 저장소 기반 DevOps 도구 중에서도 손꼽힐 만큼 숙련도 요구치가 높습니다. 충분한 시간을 들여 직접 배우거나, 전문가에게 위임해야 합니다.
GUI 및 Windows 미지원
Windows에 Git 서버를 설치하거나 GUI 환경으로 운영하고 싶으신가요? 안타깝지만 불가능합니다. Linux 커널을 기반으로 하는 OS만 지원되며, 작업을 편리하게 해줄 GUI도 없습니다. Git 서버를 설치해 직접 운영하려면 기본적인 코딩 지식이 필요합니다.
오래된 방법
어떤 기준으로 봐도, 셀프 호스팅 서버에서 Git을 직접 운영하는 방식은 이미 다른 효율적인 방법들에 의해 대체된 구식 접근법입니다. 더 효율적인 Git 운영 방식의 대표적인 예로 GitLab가 있습니다. 직접 Git 서버를 운영하기로 결정하기 전에 먼저 살펴보세요. GitLab 또한!
Git 서버 설치 요구 사항
Git 서버를 구성하고 직접 호스팅하는 데 필요한 요구 사항을 간략히 정리해 보겠습니다. Git을 호스팅하려면 서버와 Git 인스턴스, 이렇게 두 가지만 있으면 됩니다. Git 서버 구성 과정을 진행하려면 기본적인 코딩 지식도 필요합니다.
Git 서버
서버는 본인 소유의 다른 PC를 사용하거나, 기존 호스팅 업체의 전용 서버를 이용하거나, 좀 더 직접적으로 관리하고 싶다면 클라우드 VPS (가상 사설 서버)를 활용할 수 있습니다. VPS를 사용하면 서버를 직접 관리하면서 동시에 Git 인스턴스도 운영할 수 있습니다. Git 서버를 구성하려면 서버에 Linux 배포판이 설치되어 있어야 합니다. Cloudzy는 Ubuntu, Debian, CentOS, Kali, OpenSUSE 등 10종 이상의 신뢰할 수 있는 Linux 배포판을 Linux VPS 지원합니다. 월 $4.95부터 시작하며, 가까운 위치의 안정적인 Linux 서버를 확보해 빠른 연결 품질로 Git 서버를 셀프 호스팅할 수 있습니다!
저렴한 가격으로 웹사이트 호스팅이나 원격 데스크톱에 사용할 수 있는 일반 또는 프리미엄 Linux VPS를 지금 바로 이용해 보세요. Linux KVM 기반으로 효율성을 높이고, NVMe SSD 스토리지가 탑재된 고성능 하드웨어로 빠른 속도를 제공합니다.
더 보기Git 인스턴스
Git 서버 구성 과정은 간단하며, 설치 과정의 일부로 자동으로 처리됩니다. 앞서 언급했듯이 Git은 오픈 소스이며 무료입니다. 이 점이 Git을 다른 코딩 및 개발 중심의 저장소 기반 프로그램과 차별화하는 이유입니다. 요구 사항을 확인했으니, 이제 Linux 서버에 Git 서버를 설치하는 단계별 가이드를 바로 시작하겠습니다!
Linux에 Git 서버 설치하기 (단계별 가이드)
1단계: Git 다운로드 및 설치
Git 서버 설치의 첫 번째 단계입니다. 원하는 Linux 배포판의 터미널에서 다음 명령어를 입력해 Git 다운로드를 시작하세요:
Ubuntu/Debian 기반 배포판:
sudo apt install git
Arch 기반 배포판:
sudo pacman -S git
RHEL 기반 배포판:
sudo dnf install git
이 명령어를 실행하면 Linux 서버에 Git이 다운로드 및 설치됩니다. 완료될 때까지 기다리세요.
2단계: Git 서버 등록 및 구성
다른 데스크탑에 로컬 서버가 있다면 부팅하고, VPS를 사용 중이라면 SSH 또는 RDP로 Linux 서버에 원격 접속하세요. 이제 Git 서버를 원격으로 실행할 수 있도록 구성하겠습니다. 다음 명령어로 Git 계정을 생성하는 것부터 시작합니다:
ssh username@address
sudo useradd git
그런 다음 아래 명령어를 입력해 새로 만든 계정으로 전환하세요:
su git
이 단계는 주로 Git 로컬 서버의 보안을 강화하기 위한 것입니다. 이 계정을 통해 서버 관리자 권한을 갖게 됩니다. 향후 사용자를 그룹으로 나누고 권한과 접근 수준을 미리 설정해 안전하게 관리할 수 있습니다.
3단계: SSH 디렉터리 생성 및 서버에 Git 저장소 만들기
Git 서버 설치 과정의 다음 단계는 전용 SSH 디렉터리를 만들어 공개 키 를 저장하고, 보안 레이어와 접근 수준이 설정된 Git 저장소를 서버에 생성하는 것입니다. 아래 명령어를 입력하세요:
ssh git@address
mkdir .ssh
chmod 700 .ssh/
touch .ssh/authorized_keys
이 명령어로 다른 사용자의 접근을 제한한 뒤, 다음 명령어를 입력해 SSH 키가 authorized_keys 폴더에 안전하게 저장되도록 하세요. 이 폴더에는 본인만 접근할 수 있습니다. (SSH 폴더가 없는 경우에만 실행하세요) id_rsa.pub 파일):
cd .ssh
ssh-keygen -t rsa
cat id_rsa.pub
마지막으로, Git 로컬 서버에 보안 연결을 설정하기 위해 생성한 SSH 공개 키를 복사하세요:
cd .ssh
vi authorized_keys
4단계: 마스터 디렉터리 만들기
Linux 서버에 새 디렉터리를 만들어 Git이 앞으로의 프로젝트에서 사용할 모든 저장소를 저장해야 합니다. Git 저장소 관리에 대한 자세한 내용도 확인할 수 있습니다. 아래 명령어를 입력하세요:
mkdir directory_name
5단계: 프로젝트 추가하기!
Git 서버를 성공적으로 만들었습니다! Git 서버 설치와 설정이 모두 완료되었습니다. 이제 아래 명령어로 프로젝트를 추가하면 됩니다:
cd parent_directory
mkdir new_project.git
그런 다음 아래 명령어를 입력해 로컬 컴퓨터에 원격 origin을 추가하세요:
git init --bare
git remote add origin name git@address:new_project.git
마지막으로, 모든 설정이 정상적으로 작동하는지 확인하기 위해 Git push를 실행하세요:
touch testfile
git add testfile
git commit -m "test file"
git push name master
git clone git@address:new_project.git
축하합니다! Git 호스팅 설정과 서버에 Git 저장소 생성이 모두 완료되었습니다.
자주 묻는 질문
서버 없이 Git을 호스팅할 수 있나요?
아니요. 서버의 형태와 관계없이 서버 역할을 할 하드웨어가 필요합니다. GitHub를 클라우드 서버로 활용하거나, 당사의 VPS 상품을 이용하거나, 다른 서드파티 호스팅 서비스를 서버로 활용할 수 있습니다.
Git 서버를 GUI로 설치하는 방법이 있나요?
네. Git 자체는 GUI를 지원하지 않지만, GUI가 포함된 독립 실행형 버전인 "Git GUI"가 제공되므로 GUI가 필요한 사용자도 활용할 수 있습니다.
Git은 유료 플랜이 있나요?
아니요. Git은 원래 개발자와 배포자의 방침에 따라 무료 오픈소스 프로그램으로 유지되고 있으며, 앞으로도 그럴 것입니다. 프로그램 개발에 자유롭게 활용할 수 있으며, 기본적으로 무료입니다.
Git 서버를 직접 운영해야 하는 이유는 무엇인가요?
저장소 수가 적은 소규모 프로젝트라면 자체 호스팅이 훨씬 더 안전하고 프라이버시를 지키기 쉽습니다. 이것이 가장 큰 이유입니다. 다만 프로젝트 규모가 커지고 저장소가 늘어날수록 자체 호스팅의 효율은 점점 낮아집니다.