본문 바로가기

데비안 리눅스 설치 가이드/GIt

웹개발을 위한 GIt 서버와 Eclipse의 셋팅 방법

반응형

Subversion을 사용하다가, 프로젝트를 시작하면서 git으로 변경해보자는 다른 팀원의 말을 따라, 새로운 버전 관리 시스템을 구축하기로 했다.

각 개발자마다 개발한 코드를 관리하기 위해 서버에 git을 설치하고, 각자 개발자 PC에 git을 설치하도록했다.

개발자가 개발/수정한 코드를 서버에 전송하여 중앙에서 Merge 및 버전 관리 중앙 컨트롤이 되도록 구성했기 때문에 여기까지는 Subversion과 동일한 구성이다.

따라서, Subversion을 사용했던 사람은 대략적인 구조가 비슷하다는 것을 느꼇을 것이다. (Stage라던가, Commit하는 방식은 틀리지만.. 이건 버전 관리 차원의 관점이고, 전체적인 실제 사용자가 사용하는 관점에서는 Subversion과 비슷하다.)


윈도우에서 개발한 코드가 서버로 전송되면 서버가 해당 코드 버전을 Merge하고, Merge한 결과를 바로 Apache2가 서비스하는 디렉토리에 해당 파일을 반영하여, 실시간으로 외부에서 웹브라우저로 접속시, 최신 웹사이트를 볼 수 있도록 하는 것 까지를 Git 구성의 목표로 잡고 설명을 진행하겠다.









내가 사용 하려는 Web 개발을 위한 버전 관리 Git의 구조는 대략 이런 구성이 된다.





설치 - Server (Linux)



개발한 소스를 중앙에서 관리 및 웹서버에 바로 반영하기 위해 중앙 서버(여기서는 Debian)에 git을 설치한다.

설치는 간단하게 한 줄이면 된다.

apt-get install git



설정 - Server (Linux) 



git을 처음 설치하면 모든 Repository에 기본적으로 적용이 되는 Global 설정 값을 셋팅해야 한다.

각각의 Repository에 특정한 설정값을 셋팅해주지 않으면 나머지 설정은 Global에 설정된 값을 따르게 된다.

여기서는 공통적으로 설정 할 값은 Name, Email, Encoding의 값이다.



1. git 기초 설정 환경

git의 환경 설정은 2가지 방법으로 할 수 있다.

첫 번째 방법은 직접 파일 수정을 통한 방법이며, 두 번째는 명령어를 통한 설정이다.

개인적으로는 명령어를 통한 설정이 좋은 듯 싶다.



1-1. 파일을 통한 설정

파일은 root 디렉토리에 .gitconfig로 존재한다.

사용자마다 홈디렉토리에 .gitconfig로도 존재한다.


cd /root

vi .gitconfig




1-2. 명령어를 통한 설정

git이라는 명령어를 통해 config를 수정 할 수 있다.


git config [명령어]


여기서 명령어는 여러가지가 있지만 간략하게 요약하면 아래와 같은 예시로 사용하면 된다.

--global 옵션은 사용자마다 홈 디렉토리에 .gitconfig 파일이 있을 수 있는데, 이곳에 모두 적용한다는 뜻이다.


git config --global user.name "John"  // 유저명 설정

git config --global user.email "john@test.com"  // 유저 메일 설정

git config --global core.editor emacs  // 기본 에디터 설정



옵션 삭제시


git config --global --unset  user.name // 유저명 삭제



설치하고나서, 유저명이나, 유저메일등은 명령어를 참고하여 수정하도록 하자.




2. 설정 확인

설정이 잘 되었는지 확인하기 위해 아래의 명령어를 통해 확인하자.


git config --list 





3. 프로젝트 만들기

웹사이트 제작시, 블로그, 홈페이지, wiki등 여러가지를 만들 수 있는데, 이런 여러가지를 각각의 프로젝트로 택하여 만들다는 가정하에 설명을 하도록 하겠다.

예를 들어 blog를 만들때 프로젝트명을 blog라고 짓고 버전 관리를 위한 디렉토리를 만들어야 한다.

git 버전 관리를 위한 디렉토리 생성에서 2가지 방법이 있는데, 여기서는 최초로 프로젝트를 시작할 때 하는 방법이다.



3-1 디렉토리 생성

디렉토리 생성시 .git을 붙인다. (왜 디렉토리명에 .git을 붙이는 이유는 모르겠으나......)

여기서는 blog라는 프로젝트명을 디렉토리명으로 결정하고 아래와 같이 디렉토리를 만든다.

(git 관리를 편하게 하기위해 상위 디렉토리를 repository라는 식으로 만들고 하위 디렉토리에 프로젝트별로 생성하면 좋다.)


mkdir repository    // 상위 디렉토리를 만들고 싶다면...

cd repository

mkdir blog.git

cd blog.git 



3-2 repository 초기화

blog에 .git을 붙여 디렉토리를 생성했으니, 이제 코드 관리를 위해 초기화를 해줘야 한다.

만든 blog.git 디렉토리에 들어가 초기화 명령어를  통해 초기화를 해주는데 옵션으로 --bare가 붙는다. 

--bare 옵션은 다른 사람들이 접근 가능하도록 서버측에서 만들때 사용하는 옵션이다.

즉, 개인적으로 쓸 repository라면 --bare 옵션은 사용하지 않으며, 중앙에서 여러 소스를 Merge를 해야하는 서버인 경우에는 --bare라는 옵션을 붙여준다.


git init --bare




git을 초기화 한 이후 아래처럼 생성된 디렉토리 목록이 보이면 정상이다.





4. 자동으로 웹서버에 반영하기

현재 디렉토리 구조는 이런 상황이다.

웹서버가 서비스하는 디렉토리 : /var/www/blog

blog 프로젝트 버전 관리 디렉토리 : /home/repository/blog.git




개발하려는 웹서버 내부 구성




개발자가 코드를 commit하면 해당 코드가 서버에서 Merge가 되고나서, merge된 코드는 자동으로 웹서버가 운영하는 디렉토리에 checkout을 함으로써 개발자가 commit할때마다 웹서버에 바로바로 반영되도록 한다. 


이 설정은 git을 초기화한 후 생긴 hooks라는 디렉토리에 들어가서 파일을 만듬으로서 자동으로 checkout이 가능하도록 해준다.



vi post-receive



post-recevie의 내용

GIT_WORK_TREE에 주는 경로는 해당 apache2에서 서비스하는 경로를 적어주면 된다. 그리고 git 명령어인 checkout과 강제로 덮어쓰도록 옵션 -f를 주도록 한다.



#!/bin/bash

GIT_WORK_TREE=/var/www/blog git checkout -f 



post-reveive의 파일을 저장 후에 권한을 주기 위해 chmod 명령어를 사용한다.


chmod 755 post-receive



이것으로 개발자가 commit만 하면 자동으로 apache가 운영하는 사이트까지 자동으로 반영될 것이다.





초기 설정 (Eclipse)


Standard 버전의 eclipse를 받으면 Git 플러그인은 이미 설치되어 있는 상태다.

이제, 서버에 있는 blog repository를 Clone으로 가져와서 작업을 하면 된다.

여기서는 서버의 repository를 가져오는 방법과 가져온 파일을 프로젝트로 전환하여 Eclipse에서 사용 할 수 있도록 적절하게 설정하는 방법을 다루겠다.


window > show view > other > git > git repositories를 선택해서 창을 연다.


  



연 창을 보면 clone a git repository 메뉴가 있다. 선택하면 아래와 같은 창이 나타나는데 아래 그림을 참고하여, 적절하게 변경하면 된다.


URI : 서버(remote)에서 가져오는 것이므로 Host와 Repository path만 입력하면 된다.

Host : 서버 IP

Repository path : 프로젝트를 만들었던 경로

User : Linex 유저명

Password : Linux 유저의 비밀번호



 


저장 할 디렉토리를 적절하게 선택한다. 여기서 프로젝트들을 저장할 상위디렉토리만 지정하면 하위에 프로젝트명으로 디렉토리가 생성된다.




서버에서 가져온 repository를 프로젝트로 등록하도록 한다. (등록하지 않으면 파일 내 텍스트 검색 등 개발하는데 불편하기 때문이다.)



위 그림처럼 blog라는 repository를 선택하여 오른쪽 클릭하면 Import Projects라는 메뉴가 보인다.

이제 아래 그림처럼 Import as general project를 선택해서 가져오면 된다.




이제 웹개발을 하고나서, 수정된 파일을 commit하면 자동으로 웹서버까지 반영된다.

반응형