본문 바로가기

Technical/Development

[Git Tip] AWS EC2 VM을 이용한 Git 서버설정과 git 기본 사용법


git(깃) 서버를 Amazon EC2 인스턴스에 설치하고, Repo를 운영 관리하는 기초과정 정리


* 준비해야 할 것들

 - 서버: AWS EC2 t2.micro, ubuntu 14.4, 접속주소: ec2-xx.amazonaws.com

 - 클라이언트: Ubuntu 14.4 PC, EC2 vm ssh 접속을 위한 보안 키파일(여기서는 AWSKP_as1.pem)


EC2 vm측, git 서버 설치 과정


* 필수 패키지 설치

root@aws-ubt14-as01:~# apt-get install git-core

root@aws-ubt14-as01:~# apt-get install openssh-server


* linux 계정(=gituser) 추가, 권한 설정 및 key pair 생성

* 이 방법은 git 계정을 공용으로 사용하는 경우로 사용자 개별 설정은 불가(사용자별 권한 설정 등 세부적인 관리가 필요할 경우 gitolite 와 같은 관리 패키지 사용 필요)

root@aws-ubt14-as01:~# adduser --home /home/gituser --shell /bin/bash gituser

root@aws-ubt14-as01:~# visudo <== 아래 line 추가

...

gituser ALL=(ALL) ALL

...

root@aws-ubt14-as01:~# su - gituser


* 생성된 Key pair의 공용(public)키 부분을 .ssh/authorized_keys 에 추가

gituser@aws-ubt14-as01:~ssh-keygen -b 1024 -f gituser -t dsa

gituser@aws-ubt14-as01:~cat gituser.pub >> .ssh/authorized_keys


gituser@aws-ubt14-as01:~chmod 600 .ssh/authorized_keys

gituser@aws-ubt14-as01:~sudo chown -R gituser.gituser .ssh/

gituser@aws-ubt14-as01:~$ mkdir repos; cd repos


* Remote client에서 사용할 작업디렉토리 생성, repo 설정

* 새로운 repo 가 필요해질 때마다 별도로 작업해 주어야 함

gituser@aws-ubt14-as01:~/repos$ mkdir ec2new.git; cd ec2new.git

gituser@aws-ubt14-as01:~/repos/testprj.git$ git init --bare --shared



Remote client(개발자 PC)측 git 설정


* 기존 ec2new 프로젝트를 Local PC에서 git 서버에 push(업로드&동기화)하는 과정까지...

* EC2 vm에서 생성한 key pair의 개인(private)키 파일을 local 로 복사해 와서 저장

* ssh-add 로 키 파일이 자동 적용되게 한 후, EC2 vm 의 gituser 계정에 ssh 로그인이 가능한지 확인

bryan@bryan-XenPC:~$ scp -i AWSKP_as1.pem root@ec2-xxx.amazonaws.com:/home/gituser/gituser ./gituser.pem

bryan@bryan-XenPC:~$ ssh-add /home/bryan/gituser.pem

bryan@bryan-XenPC:~$ ssh gituser@ec2-xxx.amazonaws.com


* 작업 디렉토리(프로젝트: ec2new) 가 있다고 가정

bryan@bryan-XenPC:~/git-test/ec2new$ ls -l

합계 12

-rw-rw-r-- 1 bryan bryan  6  7월 22 20:39 README

-rw-rw-r-- 1 bryan bryan 31  7월 22 20:39 a.c

-rw-rw-r-- 1 bryan bryan 51  7월 22 22:33 b.cpp


* 현재 디렉토리를 git repo 등록(초기화)

bryan@bryan-XenPC:~/git-test/ec2new$ git init


* git repo에 현재 디렉토리의 모든 파일 추가(tracking 가능=staging상태=index에 등록)

bryan@bryan-XenPC:~/git-test/ec2new$ git  add .


* a.c 파일을 수정하였다면 수정 사실을 git에 알린다(관리 대상으로 등록 의미)

bryan@bryan-XenPC:~/git-test/ec2new$ git  add a.c


* Commit 이전까지는 Staging 단계, commit 이되면 HEAD에 기록(= local에 commit)됨

* 즉, git에서 commit 은 local 에서의 최종 저장 단계

bryan@bryan-XenPC:~/git-test/ec2new$ git commit -m "1st commit"

[master 346b586] Modified a.c

 1 file changed, 1 insertion(+)


* Remote repo 주소를 git에게 알림

bryan@bryan-XenPC:~/git-test/ec2new$ git remote add ec2new ssh://gituser@ec2-xxx.amazonaws.com/home/gituser/repos/ec2new.git


* Remote repo 확인

bryan@bryan-XenPC:~/git-test/ec2new$ git remote -v

ec2new ssh://gituser@ec2-xxx.amazonaws.com/home/gituser/repos/ec2new.git (fetch)

ec2new ssh://gituser@ec2-xxx.amazonaws.com/home/gituser/repos/ec2new.git (push)


* Remote repo 에 업로드(최종 기록)

bryan@bryan-XenPC:~/git-test/ec2new$ git push ec2new master

Counting objects: 5, done.

Delta compression using up to 4 threads.

Compressing objects: 100% (2/2), done.

Writing objects: 100% (3/3), 341 bytes | 0 bytes/s, done.

Total 3 (delta 0), reused 0 (delta 0)

To ssh://gituser@ec2-xxx.amazonaws.com/home/gituser/repos/ec2new.git

   eaacfc7..346b586  master -> master

[관련 글]

2015/07/24 - [Technical/Development] - [Git Tip] Git에 대한 궁금증들


- Barracuda -