DevOps/AWS

[AWS] 백엔드 서버 작업사항

보보트레인 2024. 2. 19. 13:36

요약

  1. AWS EC2 구성
    1. 고정 IP 구성 ( 탄력적 IP)
    2. SSH 접속 할 수 있도록 구성
    3. Docker 컨테이너를 이용하여 Mysql 및 redis 구성
    4. 수동 배포 가능하도록 구성
      1. 추후 어느정도 프로젝트 완성되면 자동배포 구현 예정
      2. 추후 어느정도 프로젝트 완성되면 로드밸런싱 적용 예정
  2. 기타
    1. AWS ec2 인스턴스 2개로 분리 ( DB용 인스턴스(t3.micro) + 실행용 인스턴스(+Redis)(t3.medium)
    2. AWS S3 버킷으로 프론트 코드 정적 배포 
  3. 백앤드 처리 절차
    1. Local 에서 테스트 (서버는 처음부터 EC2 에 만들어 놓은 Mysql 이용)
    2. 서버 테스트 환경이 필요하면 JAR 빌드 후 git 업로드 후 서버에서 실행하여 테스트

AWS EC2 스펙

DB 전용 인스턴스: t3.micro

실행+Redis 전용 인스턴스: t3.medium

 

※ t3부터 ssl을 통하지 않고 직접적 물리엔진 접근기능 제공.

※ 또한 순간 트래픽에 대응하기 위해 서버스펙을 t3로 잡음.

※ 둘 다 고정ip 할당


Java Version 

자바 17 사용


 백엔드 빌드 파일 작성

  • 조건 : 서버에서 컴파일 가능하나 , 복잡함 / IDE 에서 JAR 로 파일 제작 필요
  • 현재는 8080 및 80번 포트만 오픈되어 있음
  • 현재는 수동 배포만 가능함 / 추후 어느정도 프로젝트가 완료되면 자동배포 구현 예정.

 1. jar 파일로 빌드하기 (인텔리제이)

꼭 bootjar 빌드 필요

일반 빌드시 MENIFEST 경로가 오류남..

 

<참고> bootjar 빌드 오류시
 
build.gradle 가서
tasks.withType(Jar) {
    duplicatesStrategy = DuplicatesStrategy.EXCLUDE
}


https://velog.io/@phraqe/Sekkison21-Spring%EC%84%9C%EB%B2%84-%EB%B0%B0%ED%8F%AC-%EB%B0%8F-%ED%94%84%EB%A1%A0%ED%8A%B8-%EC%97%B0%EB%8F%99-%EB%AC%B8%EC%A0%9C%ED%95%B4%EA%B2%B0

 

#20 Spring서버 배포 및 프론트 연동 문제해결

이전 게시글에서 Mysql 데이터베이스, 서버를 배포해 보았다. 이번 게시글에서는 서버를 배포하면서 겪었던 에러들과 그 해결방법에 대해 적어 보겠다. RDS 데이터베이스 관련 에러 >처음 RDS를 통

velog.io

 

정상적으로 빌드가 완료되면

 

build\libs 경로에 jar 이 있음.

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

 


SSH 로그인

압축 풀어서 사용

 

1. 메인키 발급
 
mainkey.zip(예시)

 

2. 엑스쉘 사용
JavaScript
복사
접속 주소 (엘라스틱 ip(고정 ip 할당함) ) 3.34.232.88

 

설정하고 접속

 

한번 수락

 

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 인스턴스의 보안탭으로 가서 인바운드 규칙을 넣어주자. (포트를 열어주자)

 

<참고 레퍼런스>

 

https://velog.io/@busybean3/%EB%8F%84%EC%BB%A4docker-%EC%BB%A8%ED%85%8C%EC%9D%B4%EB%84%88%EB%A5%BC-%EB%8B%A4%EB%A3%A8%EB%8A%94-%EB%AA%85%EB%A0%B9%EC%96%B4

 

도커(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
최종 허가

https://velog.io/@tank3a/nginx-%EC%84%A4%EC%B9%98%ED%95%98%EA%B8%B0Spring-Boot-EC2%EC%99%80-%EC%97%B0%EA%B2%B0

 

Nginx 설치하기+Spring Boot EC2와 연결

Nginx를 통해 내부망의 Springboot와 연결해보도록 하겠습니다.

velog.io

 


 

반응형