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