🦄 클라우드 서버에 배포하기(AWS)
AWS는 아마존에서 제공하는 서비스로, 클라우드(인터넷)상에서 컴퓨터(서버)를 빌려주어 웹 서비스를 배포할 수 있도록 해주는 서비스다.
지난 향수 협업 프로젝트에서는 람다 서버를 이용했다고 들었다. 람다 서버는 요청이 들어올 때만 서버가 가동되는 시스템이었던 것으로 기억한다. 첫 요청 시 서버가 가동되는데 시간이 조금 더 걸리기 때문에 처음 로딩 시간이 비교적 길어지는 단점이 있었지만(프론트 입장에서 경험한 바로는 7s정도 소요..?), 사용자의 요청이 들어올 때에만 서버를 가동시키기 때문에 그 만큼 비용상으로 좀 더 절약될 수 있다는 장점이 있었던 걸로 기억한다. 각 서버의 종류마다 장단점이 있는 것 같다.
이번에는 쉽고 빠르게 배포가 가능한 AWS Elastic Beanstalk를 이용하여 배포하는 과정을 정리해 보려고 한다.
01 내 프로젝트 서버에 올리기
로컬 서버에서 => AWS 클라우드 서버에 웹 서비스 배포하기
- AWS : Amazon Web Service => 우리가 배포할 수 있도록 클라우드(인터넷) 상에서 컴퓨터(서버)를 빌려주는 곳
=> Amazon이 위 이미지와 같이 구축해놓은 데이터센터의 컴퓨터 한 개를 빌려서 배포하는 것을 말한다.
- AWS Elastic Beanstalk : AWS는 각종 다양한 배포에 관련 서비스를 제공한다. 굉장히 복잡한 과정(서버를 사고, 업로드하고, 실행 시키고 ...)을 거쳐야 하는데, Beanstalk을 이용하면 쉽고 빠르게 배포가 가능하다.
1) 로컬 서버 => 클라우드 서버로
2) 컴퓨터 구매
3) 업로드 => 내 프로젝트 업로드하고 실행해 놓으면 끝
02 AWS Elastic Beanstalk으로 배포하기
- AWS Elastic Beanstalk
https://ap-northeast-2.console.aws.amazon.com/elasticbeanstalk/home?region=ap-northeast-2#/welcome
1. 로그인 => 프로필 => 보안 자격 증명(ctrl+클릭하면 새창으로뜸)
2. 액세스 키 만들기 클릭 => 키 생성 => 액세스 키와 비밀 액세스 키 메모장에 적어놓기(루트사용자는..경고뜸)
3. 배포 명령어 모음
- 터미널 준비하기 -
# 순서대로 입력
mkdir deploy
cp app.py deploy/application.py
cp -r templates deploy/templates
pip freeze > deploy/requirements.txt
cd deploy
# 파일 다 끄고 application.py 코드수정
- appication.py 세팅하기 -
application = app = Flask(__name__)
app.run()
# 순서대로 설치
- 패키지 설치하기 -
pip install awsebcli
- 보안 자격증명 -
eb init
- 초기 설정 -
eb create myweb
- 코드 수정 & 업데이트 -
eb deploy myweb
*VScode - clear하고 시작
1. 폴더생성
$ mkdir deploy
2. app.py파일을 deploy 밑에있는 application.py로 복사해라
$ cp app.py deploy/application.py
3. templates 폴더를 통째로 복사해라
$ cp -r templates deploy/templates
4. requirements.txt파일에 우리가 여태까지 설치한 라이브러리들 적어달라(환경 그대로 복사)
$ pip freeze > deploy/requirements.txt
5. deploy
$ cd deploy
- clear
6. 모든 파일 다 끄고, apllication.py 파일 코드 수정
=> apllication.py 두번째 줄 수정
=> app.run 수정 마지막 줄 수정
application = app = Flask(__name__) #두번째 줄
app.run() #마지막 줄
=> deploy됨
- 지금까지 한 것 => 우리 프로젝트를 배포 폴더에 그대로 복사 한 것
=> requirments.txt는 venv같이 지금까지 설치한 라이브러리들을 복사해 놓음
7. awsebcli로 AWS Elastic Beanstalk 배포하기
- awsebcli 패키지 설치하기
pip install awsebcli
```
Select a default region : 10 (seoul)
AWS Access Key ID [None]: 발급된 액세스 키 ID (복사 붙여넣기)
AWS Secret Access Key [None]: 발급된 비밀 액세스 키 (복사 붙여넣기)
Enter Application Name (default is "deploy") : enter
It appears you are using Python. Is this correct? : Y
Select a platform branch (default is 1) : enter
Do you want use Codecommit? : N
---
Cannot setup CodeCommit because there is no Source Control setup, continuing with initialization
Do you want to set up SSH for your instances? : Y
Select a keypair : [Create new Keypair]
Type a keypair name : enter
Enter passphrase : enter
Enter same passphrase again : enter
```
=> 지금까지 한 것이 컴퓨터 한 대를 산 것, 이제부터 업로드하고 실행시킬 것
8. Eb create : 초기설정
eb create myweb
- 기다리는 동안 배포 환경 접속하기
환경 => 상태가 OK 되면 성공 => URL을 Ctrl+클릭하기 => 새창에서 열림
=> 배포성공!!
내가 만든 팬명록 🙌
9. 코드 수정 & 업데이트
- 수정 후에 배포에 반영시키는 방법 =>내 컴퓨터에서 돌려보고, 괜찮을 시 배포
1) venv 활성화 시키기
2) 내 app.py 서버 실행 => 코드 수정 후 괜찮으면
3) deploy 파일에서 복사된 파일에 => 코드가 변경된 부분 => 해당 부분 변경 또는 전체 복붙
4) 업로드 => deploy폴더로 이동 후 배포
cd deploy
eb deploy myweb
❗5) 주의!!!! 과금!! => 1년동안 과금 안됨, 1년 지나면 과금되니 => 삭제하기
- eb create를 할 때마다 서버를 구매한다! eb create를 자주 하면 안됨 => 여러개일 시 과금 됨
=> 확인방법 => 어플리케이션이 한 개만 있어야 한다.=> 만약 여러개 만들 경우 => 작업란에서 어플리케이션 삭제하여 한개로 유지해 줘야 한다.
'항해99 > 프로젝트' 카테고리의 다른 글
[WIL-025] 토이 프로젝트 - WLW : WeLuvWine 와인 사이트 프로젝트 (1) | 2023.05.15 |
---|---|
[TIL-024] 토이 프로젝트 협업 셋팅 (0) | 2023.05.06 |
[Flask] 팬명록 프로젝트(서버, DB) (0) | 2023.02.15 |
[Flask] 버킷리스트 프로젝트(서버, DB) (0) | 2023.02.15 |
[Flask] 스파르타피디아 프로젝트(서버, 크롤링, DB) (0) | 2023.02.15 |