전심전력

평소에는 AWS Elastic Beanstalk를 이용하는 편인데, 가끔 EC2 인스턴스를 만들어 사용하게 되는 때가 있다.

EB에서는 aws.push라는 편리한 기능을 제공하기 때문에 별로 신경 쓸일이 없었는데, EC2에서는 디플로이가 참 불편하다고 생각되었다. 그래서 찾은 방법이 git을 이용하여 디플로이하는 방법이다.

이것은 Setup git deploy for aws ec2 ubuntu instance

위 링크를 (필요한 부분만)번역한것이므로 헷갈리시는 분은 링크를 참고 바란다.


AWS 우분투 인스턴스에 GIT을 이용한 디플로이 설정하기


GIT 디플로이 세팅


1. 퍼블릭 키를 ec2 인스턴스로 복사

cat ~/.ssh/id_rsa.pub | ssh -i ~/.ssh/your_pemfile.pem ubuntu@your_ip_addr "cat>> .ssh/authorized_keys"


2. 리모트 서버( ec2 인스턴스에서) :  bare git repository를 생성한다.

$ cd ~
$ mkdir ProjectDir.git && cd ProjectDir.git
$ git init --bare

3. 리모트 서버: post-receive-hook을 만든다.

$ cat > hooks/post-receive
#!/bin/sh
GIT_WORK_TREE=/home/ubuntu/www/yourdomain.com
export GIT_WORK_TREE
git checkout -f
$ chmod +x hooks/post-receive



4. 로컬(당신의 컴퓨터에서): 리포지토리를 초기화 한후 remote를 추가한다.

git init
git remote add ec2 ssh://ubuntu@your_ip_addr/home/ubuntu/ProjectDir.git
git push ec2 +master:refs/heads/master

주의: +master:refs/heads/master 푸시는 처음 한번만 사용한다.


앞으로 인스턴스의 리포지토리에 푸시를 할때는 다음과 같이 사용한다.

$ git push ec2 master