Day 15

EC2์—์„œ ํ”„๋กœ์ ํŠธ Clone ๋ฐ›๊ธฐ

๊นƒํ—ˆ๋ธŒ์—์„œ ์ฝ”๋“œ๋ฅผ ๋ฐ›์•„์˜ฌ ์ˆ˜ ์žˆ๋„๋ก EC2์— ๊นƒ์„ ์„ค์น˜

sudo yum install git

์„ค์น˜ํ•˜๋ฉด git โ€”version์œผ๋กœ ์„ค์น˜ ์ƒํƒœ๋ฅผ ํ™•์ธ ํ•œ ๋’ค์—

git clone์œผ๋กœ ํ”„๋กœ์ ํŠธ๋ฅผ ์ €์žฅํ•  ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์ƒ์„ฑํ•˜์ž

mkdir ~/app && mkdir ~/app/step1

์ƒ์„ฑ ํ›„

cd app/step1

์ด๋™ ํ›„ ํ”„๋กœ์ ํŠธ๋ฅผ ๋‹ค์šด๋ฐ›์ž

git clone ๊นƒ์ฃผ์†Œ

๋‹ค์šด ๋ฐ›๊ณ ๋‚˜์„œ

./gradlew test

๋กœ ํ…Œ์ŠคํŠธ๊ฐ€ ์ž˜ ๋˜๋Š”์ง€ ํ™•์ธ์„ ํ•ด๋ด์•ผํ•˜๋Š”๋ฐ.... ์ด๊ฒŒ ์•ˆ๋˜๋„น

์ด๊ฒŒ๋ญ Permission denied๊ฐ€ ์•ˆ๋˜๋ฉด

chmod +x ./gradlew

๋ญ ์ด๋ ‡๊ฒŒ ํ•ด์„œ ํ•ด๋ณด๋ผ๋Š”๋ฐ ์ผ๋‹จ ํ…Œ์ŠคํŠธ๊ฐ€ ์•ˆ๋Œ...

์•ˆ๋˜๋Š”๋Œ€๋กœ ์ผ๋‹จ์€ ์ง„ํ–‰ํ•ด๋ณด์ž

๋ฐฐํฌ ์ŠคํŠธ๋ฆฝํŠธ ๋งŒ๋“ค๊ธฐ

๋ฐฐํฌ : ์ž‘์„ฑํ•œ ์ฝ”๋“œ๋ฅผ ์‹ค์ œ ์„œ๋ฒ„์— ๋ฐ˜์˜ํ•˜๋Š” ๊ฒƒ

  • git clone ํ˜น์€ git pull์„ ํ†ตํ•ด ์ƒˆ ๋ฒ„์ „์˜ ํ”„๋กœ์ ํŠธ๋ฅผ ๋ฐ›์Œ

  • gradle์ด๋‚˜ maven์„ ํ†ตํ•ด ํ”„๋กœ์ ํŠธ ํ…Œ์ŠคํŠธ์™€ ๋นŒ๋“œ

  • EC2 ์„œ๋ฒ„์—์„œ ํ•ด๋‹น ํ”„๋กœ์ ํŠธ ์‹คํ–‰ ๋ฐ ์žฌ ์‹คํ–‰

์ด 3๊ฐ€์ง€์˜ ๊ณผ์ •์„ ๋ชจ๋‘ ํฌ๊ด„ํ•˜๋Š” ์˜๋ฏธ

์ด๋Ÿฌํ•œ ๊ณผ์ • ๋“ค์„ ๋ฐฐํฌํ•  ๋•Œ๋งˆ๋‹ค ๊ฐœ๋ฐœ์ž๊ฐ€ ํ•˜๋‚˜ํ•˜๋‚˜ ๋ช…๋ น์–ด๋กœ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์€

๋น„ํšจ์œจ์ 

๊ทธ๋ž˜์„œ ์ด๊ฒƒ์„ ์‰˜ ์Šคํฌ๋ฆฝํŠธ๋กœ ์ž‘์„ฑํ•ด์„œ ์Šคํฌ๋ฆฝํŠธ๋งŒ ์‹คํ–‰ํ•˜๋Š” ๊ณผ์ •์œผ๋กœ ์ง„ํ–‰ํ•  ๊ฒƒ

์‰ก ์Šคํฌ๋ฆฝํŠธ๋ž€ .sh ํŒŒ์ผ ํ™•์žฅ์ž๋ฅผ ๊ฐ€์ง€๋Š” ํŒŒ์ผ

vim์„ ์‚ฌ์šฉ

vim ~/app/step1/deploy.sh

์ด๊ฑธ๋กœ ํŒŒ์ผ์„ ์ƒ์„ฑ

vim์˜ ๊ฐ„๋‹จํ•œ ํŠœํ† ๋ฆฌ์–ผ - http://bit.ly/2Q3BpvZ

#!/bin/bash
REPOSITORY=/home/ec2-user/app/step1
PROJECT_NAME=freelec-springboot2-webservice

cd $REPOSITORY/$PROJECT_NAME/

echo "> Git Pull"

git pull

echo "> ํ”„๋กœ์ ํŠธ Build ์‹œ์ž‘"

./gradlew build

echo "> step1 ๋””๋ ‰ํ† ๋ฆฌ๋กœ ์ด๋™"

cd $REPOSITORY

echo "> Build ํŒŒ์ผ ๋ณต์‚ฌ"

cp $REPOSITROY/$PROJECT_NAME/build/libs/*.jar $REPOSITORY/

echo "> ํ˜„์žฌ ๊ตฌ๋™์ค‘์ธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ pid ํ™•์ธ"

CURRENT_PID=${pgrep -f ${PROJECT_NAME}.*.jar}

echo "ํ˜„์žฌ ๊ตฌ๋™ ์ค‘์ธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ pid: $CURRENT_PID"

if[-z "$CURRENT_PID"]; then
	echo ">ํ˜„์žฌ ๊ตฌ๋™ ์ค‘์ธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์—†์œผ๋ฏ€๋กœ ์ข…๋ฃŒํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค."
else
	echo "> kill -15 $CURRENT_PID"
	kill -15 $CURRENT_PID
	sleep 5
fi

echo "> ์ƒˆ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฐฐํฌ"

JAR_NAME=${ls -tr $REPOSITORY/ | grep jar | tail -n 1}

echo "> JAR Name: $JAR_NAME"

nohup java -jar $REPOSITORY/$JAR_NAME 2>&1 &
  • REPOSITORY=/home/ec2-user/app/step1

    • ํ”„๋กœ์ ํŠธ ๋””๋ ‰ํ† ๋ฆฌ ์ฃผ์†Œ๋Š” ์Šคํฌ๋ฆฝํŠธ ๋‚ด์—์„œ ์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š” ๊ฐ’์ด๊ธฐ ๋•Œ๋ฌธ์— ์ด๋ฅผ ๋ณ€์ˆ˜๋กœ ์ง€์ •

    • ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ PROJECT_NAME=freelec-springboot2-webservice๋„ ๋™์ผํ•˜๊ฒŒ ๋ณ€์ˆ˜๋กœ ์ €์žฅ

    • ์‰˜์—์„œ๋Š” ํƒ€์ž… ์—†์ด ์„ ์–ธํ•˜์—ฌ ์ €์žฅ

    • ์‰˜์—์„œ๋Š” $ ๋ณ€์ˆ˜๋ช…์œผ๋กœ ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ

  • cd $REPOSITORY/$PROJECT_NAME/

    • ์ œ์ผ ์ฒ˜์Œ git clone ๋ฐ›์•˜๋˜ ๋””๋ ‰ํ† ๋ฆฌ๋กœ ์ด๋™

    • ๋ฐ”๋กœ ์œ„์˜ ์‰˜ ๋ณ€์ˆ˜ ์„ค๋ช…์„ ๋”ฐ๋ผ์„œ /home/ec2-user/app/step1/jojo-spring-boot ์ฃผ์†Œ๋กœ ์ด๋™

  • git pull

    • ๋””๋ ‰ํ† ๋ฆฌ๋กœ ์ด๋™ํ•œ ํ›„, master ๋ธŒ๋žœ์น˜์˜ ์ตœ์‹  ๋‚ด์šฉ์„ ๋ฐ›์Œ

  • ./gradlew build

    • ํ”„๋กœ์ ํŠธ ๋‚ด๋ถ€์˜ gradlew๋กœ build๋ฅผ ์ˆ˜ํ–‰

  • cp ./build/libs/*.jar $REPOSITORY

    • build์˜ ๊ฒฐ๊ณผ๋ฌผ์ธ jarํŒŒ์ผ์„ ๋ณต์‚ฌํ•ด jar ํŒŒ์ผ์„ ๋ชจ์•„๋‘” ์œ„์น˜๋กœ ๋ณต์‚ฌ

  • CURRENT_PID=$(pgrep -f springboot-webservice)

    • ๊ธฐ์กด์— ์ˆ˜ํ–‰ ์ค‘์ด๋˜ ์Šคํ”„๋ง ๋ถ€ํŠธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ข…๋ฃŒ

    • pgrep์€ process id๋งŒ ์ถ”์ถœํ•˜๋Š” ๋ช…๋ น์–ด

    • -f ์˜ต์…ฅ์€ ํ”„๋กœ์„ธ์Šค ์ด๋ฆ„์œผ๋กœ ์ฐพ๋Š”๋‹ค

  • if ~else ~fi

    • ํ˜„์žฌ ๊ตฌ๋™์ค‘์ธ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์žˆ๋Š”์ง€ ์—†๋Š”์ง€ ํŒ๋‹จํ•ด์„œ ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰

    • process id ๊ฐ’์„ ๋ณด๊ณ  ํ”„๋กœ์„ธ์Šค๊ฐ€ ์žˆ์œผ๋ฉด ํ•ด๋‹น ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ข…๋ฃŒ

  • JAR_NAME=$(ls -tr $REPOSITORY/ | grep jar | tail -n 1)

    • ์ƒˆ๋กœ ์‹คํ–‰ํ•  jar ํŒŒ์ผ๋ช…์„ ์ฐพ๋Š”๋‹ค

    • ์—ฌ๋Ÿฌ jar ํŒŒ์ผ์ด ์ƒ๊ธฐ๊ธฐ ๋–„๋ฌธ์— tail -n๋กœ ๊ฐ€์žฅ ๋‚˜์ค‘์˜ jarํŒŒ์ผ์„ ๋ณ€์ˆ˜์— ์ €์žฅ

  • nohup java -jar $REPOSITORY/$JAR_NAME 2>&1 &

    • ์ฐพ์€ jar ํŒŒ์ผ๋ช…์œผ๋กœ ํ•ด๋‹น jar ํŒŒ์ผ์„ nohup์œผ๋กœ ์‹คํ–‰

    • ์Šคํ”„๋ง ๋ถ€ํŠธ์˜ ์žฅ์ ์œผ๋กœ ํŠน๋ณ„ํžˆ ์™ธ์žฅ ํ†ฐ์บฃ์„ ์„ค์น˜ํ•  ํ•„์š”๊ฐ€ ์—†์Œ

    • ๋‚ด์žฅ ํ†ฐ์บฃ์„ ์‚ฌ์šฉํ•ด์„œ jar ํŒŒ์ผ๋งŒ ์žˆ์œผ๋ฉด ๋ฐ”๋กœ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„œ๋ฒ„๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Œ

    • ์ผ๋ฐ˜์ ์œผ๋กœ ์ž๋ฐ”๋ฅผ ์‹คํ–‰ํ•  ๋•Œ๋Š” java -jar๋ผ๋Š” ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์ง€๋งŒ, ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์‚ฌ์šฉ์ž๊ฐ€ ํ„ฐ๋ฏธ๋„ ์ ‘์†์„ ๋Š์„ ๋•Œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๋„ ๊ฐ™์ด ์ข…๋ฃŒ๋จ

    • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์‹คํ–‰์ž๊ฐ€ ํ„ฐ๋ฏธ๋„์„ ์ข…๋ฃŒํ•ด๋„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ๊ณ„์† ๊ตฌ๋™๋  ์ˆ˜ ์žˆ๋„๋ก nohup ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉ

์™€... ์—๋Ÿฌ๊ฐ€ ๊ณ„์† ๋‚˜์„œ ์ฐพ๋Š” ๋„์ค‘์—, ์‰˜ ์Šคํฌ๋ฆฝํŠธ์—์„œ ์กฐ๊ฑด๋ฌธ์„ ์‚ฌ์šฉํ•  ๋•Œ, if - else - fi ๋ฌธ์„ ์‚ฌ์šฉ์‹œ,

  • if ๋„๊ณ  [ ๋„๊ณ  ์กฐ๊ฑด๋ฌธ ๋„๊ณ  ] ๊ทธ๋ฆฌ๊ณ  then์ด๋ ‡๊ฒŒ ์ง„ํ–‰ํ•ด์•ผํ•œ๋‹ค!!!!!!!

๋‚ด ํ”„๋กœ์ ํŠธ์—๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ๋‹ค๊ณ  ํŒ๋‹จ๋˜์„œ ๊ทธ๋ƒฅ ์ง„ํ–‰ํ•˜๋Š” ํ”„๋กœ์ ํŠธ ํŒŒ์ผ ๋ง๊ณ  jojo๋‹˜ ๋ธ”๋กœ๊ทธ์—์„œ ํ”„๋กœ์ ํŠธ๋ฅผ ๋‹ค์šด๋ฐ›์•„์„œ ์ง„ํ–‰ํ•ด๋ด„...

๋งŒ์•ฝ ๊ธฐํšŒ๊ฐ€ ๋˜๋ฉด ๋ฐ‘์˜ ๋ธ”๋กœ๊ทธ๋ฅผ ๋ณด๋ฉด์„œ ๋ณ€๊ฒฝํ•ด๋ณด์ž!~

์ตœ์‹  ์ฝ”๋“œ๋กœ ๋ณ€๊ฒฝํ•˜๊ธฐ : https://jojoldu.tistory.com/539

Last updated

Was this helpful?