[AWS] - Spring Boot 프로젝트 배포(2)

개발 환경

💻 OS : M1 Mac Ventura 13.1 / EC2 Amazon Linux

🍃 Spring : Spring Boot 2.7.7

🏭 Env : Gabia(가비아), Nginx, Certbot/SSL

Gabia

도메인 구매

앞으로 DNS를 사용할 것이기 때문에, 가비아에 들어가 도메인을 구매하자!

image

  • 본인이 원하는 도메인을 검색한 뒤, 신청
  • 구매 과정에서 따로 건들이는 것 없이 구매!

image

도메인 설정

  • 메인화면 우측 상단에 있는 My가비아 버튼 클릭
  • 방금 구매한 도메인의 관리 버튼 클릭

image

  • DNS 정보 탭에 들어가서 DNS 관리 버튼 클릭

image

  • 방금 구매한 도메인의 가장 우측 설정 버튼 클릭

image

  • 사진과 같이 레코드 수정을 눌러 편집
  • www, @ 총 2개의 호스트를 각각 지정해준뒤, TTL은 3600으로 지정해준다.
  • 값/위치는 EC2의 퍼블릭 IPv4(탄력적 IP)를 입력해주면 된다.

적용까지 최대 10분이 걸릴 수 있으며, 신청한 도메인으로 접속 시 EC2에 배포되어 있는 서버에 접속할 수 있게 된다.

Nginx

Amazon Linux(EC2)ssh로 접근해서 아래 과정을 진행!

Nginx 설치

image
sudo amazon-linux-extras install -y nginx1

nginx -v

config 파일 수정

image
sudo vi /etc/nginx/nginx.conf

여기서 server_name 부분에 가비아에서 구매한 도메인을 입력해준다.

Certbot/SSL

https 보안을 사용하기 위해서는 SSL 인증서가 필요하다.
아래 과정을 통해 SSL 인증서를 발급 받고, 적용해보도록 하자!

sudo wget -r --no-parent -A 'epel-release-*.rpm' http://dl.fedoraproject.org/pub/epel/7/x86_64/Packages/e/

sudo rpm -Uvh dl.fedoraproject.org/pub/epel/7/x86_64/Packages/e/epel-release-*.rpm

sudo yum-config-manager --enable epel*

sudo yum install -y certbot python2-certbot-apache

sudo yum install certbot-nginx

네트워크에 문제가 있지 않은 이상 위 내용에서 에러가 날 일은 없을 것이다.

sudo certbot --nginx

모든 설치가 완료되면, 위 명령어를 통해 인증서를 발급!

  • 처음에 나오는 email 입력은 필수로 기억
  • 모두 Y를 입력해 동의해주도록 한다!
    • 홍보성 이메일 수신 여부는 N을 해도 상관 없음!

Proxy

sudo vi /etc/nginx/nginx.conf
  • conf 파일을 수정하기 위해 위 명령어 입력
location / {
       proxy_pass http://localhost:8080; # 자신의 springboot app이사용하는 포트
       proxy_set_header Host $host;
       proxy_set_header X-Real-IP $remote_addr;
       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
       proxy_set_header X-Forwarded-Proto $scheme;
}

위의 내용을 총 두 곳에 등록할 것이다.

image
image
# nginx에 문제가 없는지 테스트
sudo nginx -t

# nginx 서비스 재시작
sudo service nginx restart

댓글남기기