<순서>
(1) 깃허브 액션 +.sh 쉘 스크립트로 백엔드 자동 aws 배포
<인증키 새로 생성하고 깃허브 actions secret에 등록하기>
<백엔드 소스코드에 deploy.sh 라는 쉘 스크립트 작성 후 deploy.yml에 스크립트 실행 명령어 입력>
(2) aws와 도메인(가비아) 연결(아직 http)
<네임서버 설정>
<사람들이 aible.site(루트 도메인), www/api(서브 도메인)를 입력하면 aws 서버 IP(43.202.0.119)를 가리키도록 레코드 세팅>
<도메인 라우팅으로 ngnix가 분기 : aible.site(프론트) / api.aible.site(백엔드) >
(3) https 인증서 발급받기
---------------------------------------------------------------------------------------
(1) 깃허브 액션 +.sh 쉘 스크립트로 백엔드 자동 aws 배포
<인증키 새로 생성하고 깃허브 actions secret에 등록하기>
@ 깃허브 -> vive_pptgen_be 레포지토리 -> Actions

@ aws lightsail 서버 접속(ip : 43.202.0.119) -> vive_pptgen
로컬 터미널) cd ./Desktop/DeployProject
ssh ec2-user@43.202.0.119 -i ./Vive_LightsailDefaultKey-ap-northeast-2.pem
@ 인증키 새로 생성
ssh-keygen -t rsa -b 4096 -C "github-deploy"
key 이름 : github-deploy
pw : 엔터
cat github-deploy.pub # 공개키 확인
cat github-deploy # 비공개키 확인
# 방금 생성한 pub 인증키를 authorized_keys(인증된 키 리스트) 에 추가.
cat ./github-deploy.pub >> ~/.ssh/authorized_keys
@ 깃허브 settings 가서 actions -> secret keys 등록하기
# vive_pptgen_be 레포지토리 -> Settings -> Secrets and variables -> Actions
New repository secret 클릭 후 3개 등록(SERVER_HOST/ SERVER_USER/SERVER_KEY)

# 첫번째 "New repository secret" 클릭
Name : SERVER_HOST
Secret * : 43.202.0.119

# 두번째 "New repository secret" 클릭
Name : SERVER_USER
Secret * : ec2-user
# 세번째 "New repository secret" 클릭
Name : SERVER_KEY
secret : (cat github-deploy) Private key 복사 붙여넣기
-----BEGIN OPENSSH PRIVATE KEY-----
b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAACFwAAAAdzc2gtcn
27sIK5in++OrgpKDwsVgSSzK6j1IGhSV80ZwCOM+jgPsm9u/a8fxGm9v5Tc5iclLJ9o+wJ
...중간 생략...
MAAAdICgitgAoIrYAAAAAHc3NoLXJzYQAAAgEAxWxYnea1n0yrvV6w60ssN5J2uPnKYYQz
fxGm9v5Tc5iclLJ9o+wJMdjvyxPw/n7hEnAatbnzcy9EZH8pyXnPDFSNe3zxo//b1jCDCK
LFnhI9QFElvfAAAADWdpdGh1Yi1kZXBsb3kBAgMEBQ==
-----END OPENSSH PRIVATE KEY-----
----------------------------</인증키 새로 생성하고 깃허브 actions secret에 등록하기 완료>-------------------------
<백엔드 소스코드에 deploy.sh 라는 쉘 스크립트 작성 후 deploy.yml에 스크립트 실행 명령어 입력>
@ 백엔드 소스코드에 deploy.yml 파일 만들고 secrets 이름 등록하기
# 백엔드 코드 vive_pptgen/pptgen_be 소스코드 VSCODE에서 열기
-> 폴더 생성 .github/workflows/deploy.yml
deploy.yml 파일 수정 -> "with:" 내용에서 secrets 키 이름 수정
with:
host: ${{ secrets.SERVER_HOST }}
username: ${{ secrets.SERVER_USER }}
key: ${{ secrets.SERVER_KEY }}
script: |
exit 0

# fork로 깃허브에 코드 변경 반영(push)
pptgen_be -> local changes -> add deploy script "commit" 버튼 클릭
push
# 깃허브 -> vive_pptgen_be 레포지토리 -> Actions 가보면

@ deploy.sh 라는 쉘 스크립트 작성 후 deploy.yml에 스크립트 실행 명령어 입력
# deploy.sh 파일 생성 : aws 서버에서 이 쉘 스크립트 내용을 순서대로 실행하면 서버를 껐다 키는 역할

# deploy.yml 파일 수정

script: |
cd ~/vive_pptgen_be
git pull
chmod +x deploy.sh
./deploy.sh
exit 0
서버에 들어가서 백엔드 폴더로 이동
소스코드를 새로 받아오기(git pull)
deploy.sh에 '실행 권한(execute)'을 추가
deploy.sh 쉘 스크립트를 실행
스크립트 종료
# fork에서 local changes -> "deploy.yml 수정2" commit -> push
# 깃허브 actions로 이동 -> "deploy.yml 수정2" 클릭 -> deploy 클릭

@ 자동 배포 test) main 코드에서 일부 수정해서 잘 되는지 확인(루트 엔드포인트에서 ! -> !!! 로 수정)
"... API is runing!!!"

fork commit "test"
후 push
# 깃허브 actions 가보면
test 가 새로 생성되고 있음.

# api url(43.202.0.119) 가보면

-> !!! 가 3개가 된 것 확인!
------------
</백엔드 소스코드에 deploy.sh 라는 쉘 스크립트 작성 후 deploy.yml에 스크립트 실행 명령어 입력 완료>
------------
(2)_aws와 도메인(가비아) 연결(아직 http)
<네임서버 설정>
@ 가비아(gabia.com)에서 네임서버 확인하기
# 네이버 로그인
aible.site -> 관리
# 네임서버 설정 확인

@ aws route53 에서 도메인 네임서버 확인 후 가비아에서 네임서버 교체하기
# aws console root 로그인
# 검색 route53 (아마존의 가비아 개념: 도메인 등록 및 관리)
호스팅 영역 -> "호스팅 영역 생성" 버튼 클릭
도메인 이름 : aible.site
"호스팅 영역 생성" 버튼 클릭
# aws에서 제공하는 네임서버 확인

# 가비아 네임서버 설정에 가서 aws에서 제공하는 네임서버 4개로 교체

소유자 인증 -> 이메일 인증 -> 적용 버튼 클릭
# 적용된 화면

# 네임서버 확인
로컬 터미널) nslookup -type=ns aible.site

@ 사람들이 aible.site 주소를 입력하면 aws 서버 IP(43.202.0.119)를 가리키도록 레코드 세팅
--------------------------------- </네임서버 설정 완료> ---------------------------------
<사람들이 aible.site(루트 도메인), www/api(서브 도메인)를 입력하면 aws 서버 IP(43.202.0.119)를 가리키도록 레코드 세팅>
# aws route53에서 "레코드 생성" 버튼 클릭

# 첫번째 레코드 생성
레코드 이름 : www.aible.site
레코드 유형 : A
값 : aws 서버 ip주소(여기서는 43.202.0.119)


"레코드 생성" 버튼 클릭
# 생성된 레코드 모습

# 두번째 레코드 생성 : www 없이
레코드 이름 : (빈칸)aible.site
레코드 유형 : A
값 : aws 서버 ip주소(여기서는 43.202.0.119)

# 세번째 레코드 생성
레코드 이름 : api.aible.site
레코드 유형 : A
값 : aws 서버 ip주소(여기서는 43.202.0.119)

---------------
</사람들이 aible.site(루트 도메인), www/api(서브 도메인)를 입력하면 aws 서버 IP(43.202.0.119)를 가리키도록 레코드 세팅 완료>
---------------
<도메인 라우팅으로 ngnix가 분기 : aible.site(프론트) / api.aible.site(백엔드) >
서버 터미널) sudo vim /etc/nginx/nginx.conf
i -> be, fe 모두 서버 server_name 수정

sudo systemctl restart nginx
# url 도메인 따라서 ngnix가 분기(fe, be)한 모습
(fe) aible.site

(be) api.aible.site

# 프론트엔드 .env 파일 수정 -> URL 수정
REACT_APP_FASTAPI_URL = https://api.aible.site/chat
REACT_APP_PPT_FASTAPI_URL = https://api.aible.site/generate-ppt

# main 파일 수정 -> CORS 에 white list URL 추가

fork 에서 local changes -> commit -> push
@ fe -> build 다시 수행
cd C:\Users\runia\Desktop\vive_pptgen\pptgen_fe
npm run build
# filezilla -> 사이트 vive -> vive_pptgen_fe 폴더에서 -> build 폴더 새로 교체
(3) https 인증서 발급받기
@ 현재 상황 : http 는 "주의 요함"이라는 멘트가 뜸 -> https 인증서를 발급받아 보자.

@ 필요한 패키지 설치
서버 터미널) sudo yum install certbot
sudo yum install python3-certbot-nginx
@ www.aible.site에 https 인증서 받기
# 해당 url에 인증서 받기
sudo certbot --nginx -d www.aible.site
Enter email address (used for urgent renewal and security notices)
(Enter 'c' to cancel): runiarang@gmail.com
# 인증서 확인
sudo certbot certificates

@ aws lightsail 로 이동
2GB 짜리 -> Networking -> HTTPS(443) 추가

8080은 삭제(도메인이 생겼으니 필요없음)
@ CORS 설정
# main.py 가서 white list에 https 추가

# 사이트 정보 보기 -> 인증서 유효기간 확인

@ 두번째 api.aible.site에 인증서 추가
sudo certbot --nginx -d api.aible.site
# fe 코드 .env 파일 수정 : URL 수정(http -> https)

-> 프런트엔드(React)가 호출할 백엔드(FastAPI) API 주소를 환경변수로 정해둔 것(chat 엔드포인트, generate-ppt 엔드포인트)
@ fe -> build 다시 수행
cd C:\Users\runia\Desktop\vive_pptgen\pptgen_fe
npm run build
# filezilla -> 사이트 vive -> vive_pptgen_fe 폴더에서 -> build 폴더 새로 교체
https://api.aible.site 접속해보면 -> https 잘 적용된 것 확인

@ 인증서 갱신(2달 후에 갱신 대상)
sudo certbot renew --cert-name www.aible.site
sudo certbot renew --cert-name api.aible.site
EOD.
'AWS' 카테고리의 다른 글
| [AWS 배포-5] aive 홈페이지 html 파일 aws lightsail 배포 및 도메인 연결 (1) | 2025.09.04 |
|---|---|
| [AWS 배포-3] 3. 바이브코딩 ppt 생성기 AWS Lightsail 배포하기 (2) | 2025.08.20 |
| [AWS 배포-2] 2. react 프론트엔드 코드 AWS Lightsail 배포 (0) | 2025.08.14 |
| [AWS 배포-1] 1. pptgen 백엔드 코드 깃허브 올리고 aws lightsail 배포까지 (3) | 2025.08.08 |
| AWS 서비스 종료(AWS Service termination) (0) | 2020.06.25 |