<순서>

(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.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

+ Recent posts