Deploying a SpringBoot-React project on AWS EC2

SSAFY์—์„œ EC2 ์ธ์Šคํ„ด์Šค๋ฅผ 1๊ฐœ ์ค˜์„œ (AWS Console ๋„ ์—†์Œ....) ์ง€๋‚œ ๋ฒˆ๊ณผ ์œ ์‚ฌํ•œ ๋ฐฉ์‹์œผ๋กœ ๋ฐฐํฌ ํ–ˆ๋‹ค

  • 80 ๋ฒˆ ํฌํŠธ - React.js frontend serve

  • 8000 ๋ฒˆ ํฌํŠธ - SpringBoot backend serve

Frontend ๋ฐฐํฌ

  • Frontend๋Š” Django-Vue ํ”„๋กœ์ ํŠธ ๋ฐฐํฌ ์‹œ ํ–ˆ๋˜ ๋ฐฉ์‹๊ณผ ๋™์ผํ•˜๋ฏ€๋กœ ์ด ๋งํฌ์—์„œ 1~9 ๋ฒˆ์„ ์ง„ํ–‰ํ•˜๋ฉด ๋œ๋‹ค

    • ๋ฌผ๋ก  ํ•„์š”ํ•œ ํŒจํ‚ค์ง€ ์„ค์น˜ ์‹œ, ํ•ด๋‹น ํ”„๋กœ์ ํŠธ์™€ ๊ด€๋ จ ์—†๋Š” ํŒŒ์ด์ฌ ์„ค์น˜ ๋“ฑ์€ ๊ฑด๋„ˆ ๋›ฐ์ž!

Backend ๋ฐฐํฌ

1. Java ์„ค์น˜

1-1. Install

sudo apt-get install openjdk-11-jdk
  • ์ด ๋ช…๋ น์–ด๋กœ Java runtime environment๋ฅผ ๊ฐ–๊ณ ์žˆ๋Š” openjdk-11-jre package ๊นŒ์ง€ ์„ค์น˜๋œ๋‹ค!

1-2. version ํ™•์ธ

$ java -version
openjdk version "11.0.8" 2020-07-14
OpenJDK Runtime Environment (build 11.0.8+10-post-Ubuntu-0ubuntu118.04.1)
OpenJDK 64-Bit Server VM (build 11.0.8+10-post-Ubuntu-0ubuntu118.04.1, mixed mode, sharing)

2. Maven ์„ค์น˜

2-1. Install Maven

sudo apt-get install maven

2-2. Install maven-wrapper

mvn -N io.takari:maven:wrapper

2-3. Build

mvnw ๊ฐ€ ๋ณด์ด๋Š” ์œ„์น˜๋กœ ๋“ค์–ด๊ฐ€์„œ ์•„๋ž˜์˜ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•œ๋‹ค

./mvnw clean package
  • ์ด ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜๋ฉด, ํ˜„์žฌ ๋””๋ ‰ํ† ๋ฆฌ์— ์žˆ๋Š” mvnw ํŒŒ์ผ์˜ ์ด์ „ ๊ธฐ๋ก๋“ค์„ clean ํ•˜๊ณ  ์ƒˆ๋กœ package๋กœ ๋นŒ๋“œํ•œ๋‹ค

    • ์‹œ๊ฐ„ ์˜ค๋ž˜ ๊ฑธ๋ฆฐ๋‹ค! ์ฐธ๊ณ !

  • BUILD SUCCESS message๊ฐ€ ๋œจ๋ฉด ์„ฑ๊ณตํ•œ ๊ฒƒ!

3. .jar ํŒŒ์ผ ์‹คํ–‰

3-1. Execute

target directory ์•ˆ์œผ๋กœ ๋“ค์–ด๊ฐ€์„œ ์•„๋ž˜์˜ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•œ๋‹ค

nohup java -jar [์ƒ์„ฑ๋œ jar ํŒŒ์ผ ์ด๋ฆ„] &
  • nohup

    • Linux, Unix์—์„œ shell script ํŒŒ์ผ (*.sh)์„ demon ํ˜•ํƒœ๋กœ ์‹คํ–‰์‹œํ‚ค๋Š” ํ”„๋กœ๊ทธ๋žจ

      • terminal session์ด ๋Š๊ฒจ๋„ ๊ณ„์† ๋™์ž‘ํ•˜๊ฒŒ ํ•จ

  • ๋ช…๋ น์–ด ๋’ค์— &๋ฅผ ๋ถ™์ด๋ฉด ํ˜„์žฌ์˜ ๋ช…๋ น๊ณผ ๋‹ค๋ฅธ ๋ช…๋ น์„ ๋ถ„๋ฆฌํ•œ๋‹ค๋Š” ์˜๋ฏธ!

    • jar ํŒŒ์ผ๋กœ ์„œ๋ฒ„๋ฅผ ์‹คํ–‰ํ•˜๊ณ ๋„ ๋‹ค๋ฅธ ๋ช…๋ น์–ด๋“ค์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค

    • background ์—์„œ jar ํŒŒ์ผ์ด ์‹คํ–‰๋œ๋‹ค!

4. mysql ์™ธ๋ถ€ ์ ‘์† ํ—ˆ์šฉ ๊ถŒํ•œ ๋ถ€์—ฌ

mysql> CREATE USER 'root'@'[์„œ๋ฒ„ ์ฃผ์†Œ]' IDENTIFIED BY '[root ๊ณ„์ • ๋น„๋ฐ€๋ฒˆํ˜ธ]';

mysql> GRANT ALL PRIVILEGES ON . TO 'root'@'[์„œ๋ฒ„ ์ฃผ์†Œ]' WITH GRANT OPTION;

mysql> FLUSH PRIVILEGES;

+

์žฌ๋ฐฐํฌ

์ง€๋‚œ๋ฒˆ ๋ฐฐํฌ ๊ธฐ๋ก์—์„œ๋„ ์ ์—ˆ์ง€๋งŒ ๋งค์šฐ ๋น„ํšจ์œจ์ ์ด๋‹ค!!! CI/CD ์ ์šฉํ•  ์˜ˆ์ •!!!

-> ์ ์šฉ ํ–ˆ๋‹ค!

backend ์ˆ˜์ • ์‹œ

1. ์ž‘๋™์ค‘์ธ ํฌํŠธ ํ™•์ธ

$ lsof -i :8000
COMMAND  PID   USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
java    3972 ubuntu   22u  IPv6 325640      0t0  TCP *:8000 (LISTEN)

2. ํฌํŠธ ์ข…๋ฃŒ์‹œํ‚ค๊ธฐ

sudo kill -9 [์œ„์—์„œ ํ™•์ธํ•œ pid๋ฒˆํ˜ธ]

3. git์œผ๋กœ ํ”„๋กœ์ ํŠธ Pull ๋ฐ›๊ธฐ

git pull origin master

4. build

./mvnw clean package

5. run

java -jar [์ƒ์„ฑ๋œ jar ํŒŒ์ผ ์ด๋ฆ„] &

frontend ์ˆ˜์ • ์‹œ

git pull origin master

cd frontend

npm run build

sudo service nginx restart

Last updated

Was this helpful?