요약
- AWS EC2 구성
- 고정 IP 구성 ( 탄력적 IP)
- SSH 접속 할 수 있도록 구성
- Docker 컨테이너를 이용하여 Mysql 및 redis 구성
- 수동 배포 가능하도록 구성
- 추후 어느정도 프로젝트 완성되면 자동배포 구현 예정
- 추후 어느정도 프로젝트 완성되면 로드밸런싱 적용 예정
- 기타
- AWS ec2 인스턴스 2개로 분리 ( DB용 인스턴스(t3.micro) + 실행용 인스턴스(+Redis)(t3.medium)
- AWS S3 버킷으로 프론트 코드 정적 배포
- 백앤드 처리 절차
- Local 에서 테스트 (서버는 처음부터 EC2 에 만들어 놓은 Mysql 이용)
- 서버 테스트 환경이 필요하면 JAR 빌드 후 git 업로드 후 서버에서 실행하여 테스트
AWS EC2 스펙
DB 전용 인스턴스: t3.micro
실행+Redis 전용 인스턴스: t3.medium
※ t3부터 ssl을 통하지 않고 직접적 물리엔진 접근기능 제공.
※ 또한 순간 트래픽에 대응하기 위해 서버스펙을 t3로 잡음.
※ 둘 다 고정ip 할당
Java Version
백엔드 빌드 파일 작성
- 조건 : 서버에서 컴파일 가능하나 , 복잡함 / IDE 에서 JAR 로 파일 제작 필요
- 현재는 8080 및 80번 포트만 오픈되어 있음
- 현재는 수동 배포만 가능함 / 추후 어느정도 프로젝트가 완료되면 자동배포 구현 예정.
1. jar 파일로 빌드하기 (인텔리제이)

꼭 bootjar 빌드 필요
일반 빌드시 MENIFEST 경로가 오류남..
build.gradle 가서
tasks.withType(Jar) {
duplicatesStrategy = DuplicatesStrategy.EXCLUDE
}
#20 Spring서버 배포 및 프론트 연동 문제해결
이전 게시글에서 Mysql 데이터베이스, 서버를 배포해 보았다. 이번 게시글에서는 서버를 배포하면서 겪었던 에러들과 그 해결방법에 대해 적어 보겠다. RDS 데이터베이스 관련 에러 >처음 RDS를 통
velog.io
정상적으로 빌드가 완료되면

build\libs 경로에 jar 이 있음.

windows 에서도 정상적으로 실행하는 모습을 볼수 있음. (cmd)

SSH 로그인
설정하고 접속
한번 수락
3. 계정 ubuntu 로 SSH 사용자 인증
pem 키 등록하기 (암호 없음)
확인 버튼 클릭
정상적으로 잘 접속됨.
Ubuntu 환경에 Docker 세팅 및 컨테이너 환경(install redis+ mysql) 구성
1. docker 설치에 앞서 패키지 정보 업데이트를 해준다.
2. docker 설치에 필요한 패키지를 설치한다.(mysql, redis)
1. 우분투 시스템 패키지 업데이트
sudo apt-get update
2. 필요한 패키지 설치
sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common
3. Docker의 공식 GPG키를 추가
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
4. Docker의 공식 apt 저장소를 추가
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
5. 시스템 패키지 업데이트
sudo apt-get update
6. Docker 설치
sudo apt-get install docker-ce docker-ce-cli containerd.io
7. Docker 설치 확인
sudo systemctl status docker
docker 설치 확인
8. Docker 이미지 실행해보기
sudo docker run hello-world
9. 잘 실행되었는지 확인해보기
sudo docker ps -a
10. mysql 이미지를 다운받고 실행시켜보자 (-d는 백그라운드로 실행시키는 옵션)
//아이디 : root , 비밀번호 : 맘대로 로 설정한다.
sudo docker run -p 3306:3306 -e MYSQL_ROOT_PASSWORD=맘대로 -d mysql
mysql 잘 실행되는지 확인
11. redis 이미지를 다운받고 실행시켜보자
sudo docker run -p 6379:6379 -d redis
redis와 mysql이 잘 실행되었다. 이제 AWS의 EC2 인스턴스의 보안탭으로 가서 인바운드 규칙을 넣어주자. (포트를 열어주자)
<참고 레퍼런스>
도커(docker) 컨테이너를 다루는 명령어
이번 포스팅을 통해서 도커 컨테이너를 다루는 명령어를 알아보도록 합시다. 👉 도커 엔진 버전 확인 도커 엔진의 버전을 확인해보자. 👉 도커 이미지를 컨테이너로 아래 명령어는 도커 이미
velog.io
https://velog.io/@wlsgur1533/AWS-EC2%EC%97%90-Docker%EB%A1%9C-MySQL-%EB%9D%84%EC%9A%B0%EA%B8%B0
AWS EC2에 Docker로 MySQL 띄우기
Region을 서울로 바꾼다키페어가 있으면 그대로 사용한다적은 메모리만 사용할 것이기에 그대로 둔다
velog.io
https://velog.io/@osk3856/Docker-Ubuntu-22.04-Docker-Installation
[Docker] Ubuntu 22.04 Docker 설치
Ubuntu 22.04 에 Docker 설치하기
velog.io
MYSQL 접속하기
정상 접속 확인.
docker mysql 정상 오픈 확인
AWS 서버(우분투) 백엔드 실행파일 실행하기
jar 빌드파일 받은 후 ( ftp파일질라 이용 or git clone 이용)
해당 파일 위치로 이동 (cd~ )
java -jar <원하는 파일>.jar
백엔드 백그라운드에서 실행
nohup java -jar HellBackendStudy/build/libs/hellspringboot-0.0.1-SNAPSHOT.jar > log.out 2>&1 &
engineX 도입
sudo apt install nginx
<https://velog.io/@mero/ubuntu-22.04%EC%97%90-Nginx-%EC%84%A4%EC%B9%98%ED%95%98%EA%B8%B0>
방화벽 허용
sudo ufw app list
---
Available applications:
Nginx Full
Nginx HTTP
Nginx HTTPS
OpenSSH
----
이렇게 보임
sudo ufw allow 'Nginx HTTP'
sudo ufw allow 'Nginx HTTPS'
방화벽 허가함
sudo ufw enable
최종 허가
Nginx 설치하기+Spring Boot EC2와 연결
Nginx를 통해 내부망의 Springboot와 연결해보도록 하겠습니다.
velog.io
'DevOps > AWS' 카테고리의 다른 글
[AWS] 프론트 S3 버킷 배포 (0) | 2024.02.19 |
---|---|
[AWS] 프로젝트 백그라운드로 실행해보기 (0) | 2024.01.26 |
[AWS] 프로젝트 배포하기 2 (완) (0) | 2024.01.26 |
[AWS] 프로젝트 배포하기 1 - Gradlew권한부여/JDK 세팅 (2) | 2024.01.26 |
[AWS]open SSH 이용하여 ubuntu 접속하기 (0) | 2024.01.26 |