AWS EC2 ์„œ๋ฒ„ ๊ตฌ์ถ•(Git)

3513 ๋‹จ์–ด EC2๋ฐฐํฌGitAWS

AWS EC2 ์„œ๋ฒ„ ๊ตฌ์ถ•(Git)



๊ฐœ์š”



์„œ๋ฒ„์— ๋ฐฐํฌํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ์ •๋ง ๋งŽ์ด ์žˆ์ง€๋งŒ, ์šฐ์„  Git์„ ์‚ฌ์šฉํ•œ ๊ฐ„๋‹จํ•œ ํ˜•ํƒœ๋กœ ๋ฐฐํฌํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์†Œ๊ฐœํ•ฉ๋‹ˆ๋‹ค.
๊ทธ๊ฑด ๊ทธ๋ ‡๊ณ ,์ด ๋ฐฉ๋ฒ•์€ AWS์— ์ „ํ˜€ ์˜์กดํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. (์ข‹๊ฑฐ๋‚˜ ๋‚˜์˜๋‹ค w)

์ ˆ์ฐจ



1. Git ์„ค์น˜



Git์„ ์„œ๋ฒ„์— ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.
$ sudo yum install -y git

$ git version
git version 2.23.4

2. ํ‚ค ํŽ˜์–ด ์ž‘์„ฑ ๋ฐ Github์— ๋“ฑ๋ก



2-1. ๋น„๋ฐ€ํ‚ค๋ฅผ ๋‘๋Š” ์žฅ์†Œ๋กœ ์ด๋™


cd ~/.ssh

2-2. ๋น„๋ฐ€ํ‚ค ์ž‘์„ฑ


ssh-keygen -t rsa -b 4096

์—ฌ๋Ÿฌ๊ฐ€์ง€ ๋“ฃ์Šต๋‹ˆ๋‹ค๋งŒ, ์ „๋ถ€ Enter ๋กœ OK์ž…๋‹ˆ๋‹ค.

๋น„๋ฐ€ํ‚ค์˜ ๊ถŒํ•œ๋„ ์ œํ•œํ•ด ๋‘ก์‹œ๋‹ค.
chmod 600 id_rsa

2-3. ๊ณต๊ฐœํ‚ค์˜ ๋‚ด์šฉ์„ ๋ณต์‚ฌ


cat ~/.ssh/id_rsa.pub

2-4. Github ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์— ๊ณต๊ฐœ ํ‚ค ๋“ฑ๋ก



Github์— ์•ก์„ธ์Šคํ•˜์—ฌ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋ฅผ ์—ฝ๋‹ˆ๋‹ค.
๋ฉ”๋‰ด์—์„œ "Setting"์„ ์„ ํƒํ•˜์‹ญ์‹œ์˜ค.

Add deploy key๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.



2-3.์—์„œ ๋ณต์‚ฌํ•œ ๊ณต๊ฐœํ‚ค์˜ ๋‚ด์šฉ์„ ๋ถ™์—ฌ๋„ฃ์Šต๋‹ˆ๋‹ค.
"Title"์€ ์•Œ๊ธฐ ์‰ฌ์šด ์ด๋ฆ„์„ ์ง€์ •ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.



2-5. ์„œ๋ฒ„์—์„œ ์—ฐ๊ฒฐ ํ™•์ธ


ssh -T git@github.com
You've successfully authenticated ๋ผ๋Š” ๋ฉ”์‹œ์ง€๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์œผ๋ฉด OK์ž…๋‹ˆ๋‹ค.

3. ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ๋ณต์ œ


# ใƒ†ใ‚นใƒˆใƒ‡ใ‚ฃใƒฌใ‚ฏใƒˆใƒชใ‚’ไฝœๆˆใ—ใฆใ€ๆจฉ้™ใจๆ‰€ๆœ‰่€…ใ‚’ๅค‰ๆ›ดใ—ใพใ™ใ€‚
sudo mkdir /test
sudo chmod -R 775 /test
sudo chown -R ec2-user:ec2-user /test
cd /test

git init
git clone git@github.com:test/test-repository.git

๋ค



๋งค๋ฒˆ ์ˆ˜๋™์œผ๋กœ SSH ์—ฐ๊ฒฐํ•˜๊ณ  ๋ฐฐํฌํ•˜๋Š” ๊ฒƒ์€ ๊ท€์ฐฎ์€ ๊ฑฐ๊ธฐ ๋‹น์‹ ์—๊ฒŒ

์‰˜ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ค€๋น„ํ•˜์—ฌ ์‰˜ ์‹คํ–‰๋งŒ์œผ๋กœ ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.

๊ตฌ์„ฑ



๋กœ์ปฌ ํ™˜๊ฒฝ์— ๋‹ค์Œ์˜ 2 ๊ฐœ์˜ ์‰˜ ํŒŒ์ผ์„ ์ค€๋น„ํ•ฉ๋‹ˆ๋‹ค.deploy.sh๋Š” ๋กœ์ปฌ์—์„œ ์‹คํ–‰๋˜๋Š” ์‰˜ ํŒŒ์ผ์ด๊ณ  exec.sh๋Š” ์›๊ฒฉ ์„œ๋ฒ„์—์„œ ์‹คํ–‰๋˜๋Š” ์‰˜ ํŒŒ์ผ์ž…๋‹ˆ๋‹ค.
.
โ”œโ”€โ”€ deploy.sh
โ””โ”€โ”€ exec.sh

๋กœ pใ‰ y. sh



SSH ์—ฐ๊ฒฐํ•˜์—ฌ ๋Œ€์ƒ์—์„œ exec.sh๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

deploy.sh
#!/bin/sh

HOST=XXX.XXX.XXX.XXX
USER=ec2-user
PRIVATE_KEY="~/.ssh/private.pem"

ssh -i ${PRIVATE_KEY} ${USER}@${HOST} < exec.sh

์˜ˆ c. sh



์›๊ฒฉ ์„œ๋ฒ„์—์„œ ์‹คํ–‰ํ•˜๊ณ  ์‹ถ์€ ๊ฒƒ์„ ์ž‘์„ฑํ•˜์‹ญ์‹œ์˜ค.
์ด๋ฒˆ์€ git pull๋งŒ ์‹ค์‹œํ•˜๋„๋ก ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

exec.sh
# git pull
cd /test/test-repository
git checkout master
git pull origin master

์‹คํ–‰



๋กœ์ปฌ์—์„œ deploy.sh๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ๋งŒํ•˜๋ฉด๋ฉ๋‹ˆ๋‹ค.
sh deploy.sh

์ข‹์€ ์›นํŽ˜์ด์ง€ ์ฆ๊ฒจ์ฐพ๊ธฐ