본문 바로가기

Project/2024WebFinalProject

AWS EC2 SpringBoot + React.js 배포(12/13)

 

1. AWS EC2 접속 후 인스턴스 생성

 

 

2. 보안 그룹 인바운드 규칙에 DB(MYSQL/Aurora:3306), Front(3000), Back(8090) 추가

 

 

3. SSH(MobaXterm)접속, session 추가 후 public IPv4 복사 후 붙여넣고 인스턴스 생성하면서 나온 pem 키 넣어주기

 

접속 후 ubuntu 입력

-> AWS EC2 서버 접속 완료

 

 

 

4. 패키지, docker, git, mariadb, node.js 설치

 

5. spring boot gradle task>build>buildWar 해서 war 파일 받기(project/build/libs에 있음)

기존의 localhost를 aws public IPv4로 변경

 

백엔드

 

프론트

 

 

4. 디렉토리 생성 후 git clone 받기, 디렉토리에 war 파일 넣기

 

 

 

 

5. war 파일 있는 곳에 dockerFile 생성

 

 

 

 

6. 이미지 빌드 후 컨테이너 생성, 실행하면 springboot 프로젝트가 실행됨

(데이터베이스도 생성해야 함)

 

 

7. react 에서 npm run build 로 build 폴더 생성

 

8. serve 설치 후 serve를 통해 실행

 

9. 이제 AWS EC2의 public IPv4 도메인을 통해 실행 가능하다.(고정된 IP 아님)]

 

- firebase 알람 사용 시 프론트 AWS 배포 불가

백엔드만 테스트

 

참고 문서

더보기

***** AWS 배포 *****

[AWS EC2]
1. 인스턴스 생성 & pem 키 받기
Ubuntu20.4
2. 보안그룹 추가
 DB(MYSQL/Aurora:3306),
 Front(3000),
 Back(8080)

[MobaXtern 를 통해 EC2에 접속하여 설정]
** .pem 키 사용
---------------------------------------------------------------------------------------------------------------------------
1) 필요한 패키지 설치
---------------------------------------------------------------------------------------------------------------------------
sudo apt update
sudo apt install apt-transport-https
sudo apt install ca-certificates
sudo apt install curl
sudo apt install software-properties-common
>>apt-transport-https : 패키지 관리자가 https를 통해 데이터 및 패키지에 접근할 수 있도록 한다
>>ca-certificates : certificate authority에서 발생되는 디지털 서명
>>curl : 특정 웹사이트에서 데이터를 다운로다 받을때 사용
>>software-properties-common : *PPA를 추가하거나 제거할 때 사용
>>PPA(Personal Package Archive) : 개인 패키지 저장소

>> sudo 루트 권한으로 실행
---------------------------------------------------------------------------------------------------------------------------
2) docker 설치
---------------------------------------------------------------------------------------------------------------------------
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
>> docker의 공식 PGP 키를 추가
>> PGP(Pretty Good Privacy) : 컴퓨터 파일을 암호화하고 복호화하는 프로그램
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic stable"
>>  Docker의 공식 apt 저장소를 추가(bionic : ubuntu 배포판 이름)
>> 여기까지 : apt list 에 도커를 다운로드 받을 수 있는 경로가 추가됨
sudo apt update
>> 시스템 패키지 업데이트
** sudo apt-cache policy docker-ce ** 생략가능 : 확인작업임
>> apt-cache : 우분투에서 소프트웨어나 라이브러리를 터미널에서 검색한다. ex) apt-cache search검색어
>> policy : 내가 어떤 저장소를 설치했는지 보여준다. 저장소 설치여부를 확인할때 유용!
sudo apt install docker-ce
>> 도커 설치 : 설치가 되면 자동으로 system service에 등록이 되기때문에 항상 실행할 수 있다.
sudo docker version
sudo systemctl status docker
>> 도커 실행 확인
>> systemctl : 리눅스에서 서비스를 등록,삭제,활성화,비활성화,시작,중지,재시작,상태확인, 서비스 확인할 수 있는 명령어
>> (mask/unmask,enable/disable,start/stop/restart,status,list-units/list-units-files)
********** docker 명령어들 **********
sudo docker pull hello-world   # 도커 허브 사이트에서 이미지 파일을 가져온다
sudo docker images  # 내 시스템에 있는 이미지 목록을 확인한다
sudo docker run hello-world  # 컨테이너를 띄운다
sudo docker ps -a  # 컨테이너 목록을 확인한다
sudo docker rm 컨테이너ID  # 컨테이너를 삭제한다
sudo docker rmi 이미지ID  # 이미지를 삭제한다
sudo docker start 컨테이너이름
sudo docker restart 컨테이너이름
sudo docker stop 컨테이너이름
---------------------------------------------------------------------------------------------------------------------------
2) git 설치
---------------------------------------------------------------------------------------------------------------------------
sudo apt install git
git --version
---------------------------------------------------------------------------------------------------------------------------
3) mariadb 설치
---------------------------------------------------------------------------------------------------------------------------
sudo docker pull mariadb
>> mariadb 이미지 가져오기
sudo docker run -p 3306:3306 --name mariadb -e MARIADB_ROOT_PASSWORD=**** -d mariadb
>> 도커 이미지로 컨테이너 생성(이름 mariadb로 바꿔주기)
>> sudo docker run -p 3306:3306 --name 컨테이너이름 -e MARIADB_ROOT_PASSWORD=비밀번호 -d mariadb
>> -e : 환경변수, -d : 백그라운드 실행
sudo docker exec -it mariadb mariadb -uroot -p
>> MariaDB에 접속하기
>> sudo docker exec -it {컨테이너 이름} mariadb -uroot -p
>> -it : 컨테이너의 쉘과 직접 상호작용하면서 연속으로 명령어를 실행
>> exec -it : 실행중인 컨테이너에 터미널로 들어감
---------------------------------------------------------------------------------------------------------------------------
3) nodejs 16.x 설치
---------------------------------------------------------------------------------------------------------------------------
curl -s https://deb.nodesource.com/setup_16.x | sudo bash
>> NodeJS 16을 설치하는데 필요한 PPA 소스를 추가
>> PPA : 개발자가 소스코드를 업로드하면 자동으로 패키지화되어 사용자가 직접 다운로드 받아 설치를 해볼 수 있게 해주는 소프트웨어 저장소
sudo apt install nodejs -y
>> 이제 PPA 소스가 추가되었으므로 Ubuntu 20.04 설치에 NodeJS 16을 설치
---------------------------------------------------------------------------------------------------------------------------

[spring upload]
***********************************************************
<PC>
1) ip 변경
(database ip,  소셜로그인 redirect_uri, corseAllowOrign)
2) upload 폴더 설정
3) bootwar 로 war 생성
4) github 에 올리기
***********************************************************
<linux : aws>
1) volumn 생성(파일 업로드용)
sudo docker volume create upload  # upload:생성할 볼륨 이름
sudo docker volume ls
sudo docker volume inspect upload  # 좀더 상세한 정보 확인
2) 다운로드받을 디렉토리 생성 & 이동
mkdir ~/app && mkdir ~/app/test
cd ~/app/test
mkdir back
cd back  # github 사용 안 하고 하기
# springboot에서 buildTask>build>buildWar하면
# C:\ldy\springboot-workspace\bankback\build\libs 위치에 war파일 생김
# back에 해당 war파일 올리기
3) git에서 내려받기
git clone https://github.com/oxywom/webserver.git
4) Dockerfile 생성 위치로 이동
cd webserver
5) Dockerfile 생성 (webserver-1.0.0.war가 있는 폴어에 생성)
vi Dockerfile
==========================
FROM openjdk:11-jdk as builder
VOLUME ["/upload"]
ARG JAR_FILE=./bankback-0.0.1-SNAPSHOT.war
COPY ${JAR_FILE} bankback.war
ENV TZ=Asia/Seoul
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
ENTRYPOINT ["java","-jar","bankback.war"]
==========================
>> FROM : 이미지를 생성할 때 사용할 기반 이미지를 지정
>> VOLUME : 호스트의 디렉토리를 컨테이너에 연결
>> RUN : 이미지를 생성할 때 실행할 코드를 지정
>>
esc -> :wq! # 저장하고 나가겠다.
6) 이미지 빌드(Dockerfile 순서로 이미지 생성, Dockerfile이 있는 위치에서 실행)
sudo docker build -t bankback-img .
>> sudo docker build -t 이미지이름 .(점)
>> -t (--tag) : 이미지 이름 지정), (.) : Dockerfile 위치
7) 컨테이너 생성 & 실행
sudo docker run -v upload:/upload -p 8080:8080 --name bankback-con bankback-img 
>> sudo docker run -v upload:/upload -p 8080:8080 --name 컨테이너이름 이미지이름
>> sudo docker run -p 8090:8090 webserver # -v 폴더 지정 -p 포트 지정 --name 컨테이너 생성

***********************************************************
[react upload]
***********************************************************
<PC>
1) react build 생성
npm run build
2) build 폴더 github 에 올리기
***********************************************************
<linux : aws>
1) 폴더 만들어서 git에서 build 내려받기
cd ~/app/test
git clone https://github.com/oxywom/webreact.git
2) react app 실행을 위한 serve 설치
sudo npm install -g serve
3) serve를 통해 build 실행(react app 실행)
npx serve -s build 
(build 폴더가 있는 디렉토리에서 . build 밖)
***********************************************************

'Project > 2024WebFinalProject' 카테고리의 다른 글

cafeconnect 재실행 및 수정  (2) 2025.06.21
최종 결과물(12.17)  (1) 2024.12.09
웹 실시간 알림(Firebase)(11/25~11/27)  (1) 2024.11.25
Back-end 개발(11/18~12/11)  (1) 2024.11.18
퍼블리싱(react.js)(11.08~11.18)  (2) 2024.11.08