[Git] Centos7에서 Git Server 구축해보자!

 

개발자로서 취업을 한지 어느덧 한 달이 지났다. 한 달째가 되면서 진행했던 내용들을 일부분 블로그에 남겨 놓았지만 퇴근하고 시간이 없다는 핑계로 가볍거나 단순 해결 법만 적어놓고 글을 마무리했다.
글을 써서 기록을 남겨놓아야 하는 매뉴얼이 필요한 얘들을 항상 주말로 미루었다.

이제 숙제를 푼다는 마음으로 서버에 Git을 설치하는 매뉴얼을 작성하게 됐다.

 

Centos7에 Git을 설치하게 되는 계기는 3주 차였던 거 같다.

새로운 프로젝트에 들어가게 되면서 사용법이 익숙해진 Svn을 멈추고 Git도 알아야 한다는 마음에 팀장님이 Git을 사용하도록 목표를 설정해주셨다. 그렇게 새로운 프로젝트의 개발서버에 Git 구축을 내가 한다고 했다.

 

Git이란 무엇인가

 

개발을 하면서 팀원들 간에 소스코드의 최신판을 관리하기가 어렵다. 그래서 프로젝트에서 빈번하게 발생하는 이러한 문제를 해결하기 위해 등장한 도구가 바로 형상 관리 도구(Configuration Management Tool)인데, 리누스 토발즈가 리눅스 커널 프로젝트를 위한 버전 관리 시스템으로 개발하였으며, SVN과 같은 형상관리 도구이다.

 

Git 서버

Git을 설치해보자 먼저 Centos7에 접속한 상태로 진행하게 된다.

 

//yum을 통해 git을 설치한다.
# yum install git 
//git의 버전을 확인한다.
# git --version

정상적으로 진행하면 Git의 버전을 확인할 수 있다. 현재 1.8.3.1이다.

 

//git디렉토리를 생성한다 (project는 변경될수 있다. 하지만 추후에 붙는 모든 명령어에서 변경되어야함)
# mkdir -p /opt/git/project.git
//생성한 디렉토리를 git환경으로 초기화한다.
# git init --bare /opt/git/project.git/

 

 

-p는 상위 디렉터리도 함께 생성하는 옵션이다.
진행하게 되면서 폴더구조가 헷갈리다면 WinScp나 FileZilla를 통해서 보면서 진행해도 된다 추후에 어차피 필요하다.

 

# useradd git
# echo 'git:비밀번호입력' | chpasswd
# chown -R git:git /opt/git/

 

 

git 계정을 생성하고 비밀번호를 변경한다. 그리고  "/opt/git/" 디렉터리의 소유자를 git으로 변경한다.

(chown에서 -R 옵션은 하위 디렉터리까지 소유자를 변경한다는 의미이다.) 

 

//git 홈으로 이동한다.
# cd /home/git/
// .ssh 폴더를 생성
# mkdir .ssh

 

Windows 클라이언트

 

Git-bash 설치

https://git-scm.com/

 

Git

 

git-scm.com

해당 경로에서 Git-bash를 설치한다.

 

원격 저장소와 통신하려면 서버에 공유키(public key)를 등록해야 한다. 등록 하기 이전에 먼저 key를 생성해 보자

git-bash를 실행하고 ssh key 저장 디렉터리로 이동한다.

최초 진행 시 해당 디렉터리가 없다고 할 수 있다. 괜찮다 ssh-keygen을 진행하면 생긴다.

(public key가 이미 있으면 진행하지 않아도 됨)

 

ssh-keygen명령어를 입력한다.

무엇을 입력하라고 나오면 그냥 엔터로 진행하면 된다.

최초에 없던. ssh파일에 이동이 되고 안에 id_rsa와 id_rsa.pub이 존재한다.
pwd경로를 기억해둬야 한다.

 

 

SFTP를 이용해 public key를 서버로 이동시켜야 한다.
filezila 또는 winscp를 사용하자
filezila가 없다면 아래 경로에서 다운로드하면 된다.

https://filezilla-project.org/

 

FileZilla - The free FTP solution

Overview Welcome to the homepage of FileZilla®, the free FTP solution. The FileZilla Client not only supports FTP, but also FTP over TLS (FTPS) and SFTP. It is open source software distributed free of charge under the terms of the GNU General Public Licen

filezilla-project.org

winscp는 아래 경로에서 다운로드하면 된다.

winscp.net/eng/download.php

 

WinSCP :: Official Site :: Download

WinSCP 5.17 Download WinSCP 5.17 is a major application update. New features and enhancements include: Improvements to sessions and workspace management, so that WinSCP can now easily restore tabs that were open when it was last closed. Hardware-accelerate

winscp.net

생성해두었던 public key를 서버에 "/home/git/.ssh" 디렉터리로 이동시킨다.

 

 

Winscp에서 .ssh폴더가 안보 일수 있는데 옵션 -> 설정 -> 패널 -> 숨김 파일 표시 체크를 진행하면 보인다.

 

다시 서버로 돌아와서

//이동한다
# cd /home/git/.ssh
//authorized_keys에 append한다.
# cat id_rsa.pub >> authorized_keys

Winscp에서 확인해보면 authorized_keys가 생성되어있다.

진행한 id_rsa.pub은 삭제하면 되고 추후 다른 PC의 접속이 요구되면 다른 PC에서도 ssh-keygen 생성 후
id_rsa.pub등록을 동일하게 진행하면 된다. authorized_keys에 쌓이게 된다.

 

Windows에서 프로젝트를 받기 위해 디렉터리를 미리 생성시켜둔다.
저는 D:git을 만들어뒀습니다.

# git clone ssh://git@IP주소:/opt/git/project.git

clone 후 해당 디렉토리에 .git안에 정보가 담긴 파일을 확인할 수 있습니다.
이제 해당 폴더를 통해 프로젝트나 파일을 관리할 수 있고 Github Desktop이나 사용하는 IDE에 git플러그인을 통해
해당 폴더를 연결하면 사용할 수 있습니다.

 

마무리

현재 프로젝트에는 이렇게 구축이 되어있고 구성원이 늘어날 때마다 id_rsa_pub을 추가시켜줘야 하는 문제가 있다.
지금은 인원이 적어서 일일이 적용시켜줄 수 있지만 서버에 다양한 프로젝트가 추가되면서 인원이 증가되면 인증 문제를 해결해야 한다. 이렇게 구축되고 현재 사용 중이지만 아직도 Git에 대해 다 모르는 거 같아서 더 배워야 할 거 같다.

 

출처 : bamdule.tistory.com/54