스파르타 웹 수업 5주차 기록이다.
5주차에는 미니 프로젝트를 2개 만들어보고 하나는 AWS(아마존 웹 서비스)에 올려서 모두가 볼 수 있게 배포해보는 작업을 했다.
아래와 같이 만들어보자.
미니프로젝트1 - 버킷리스트(완성본):
http://spartacodingclub.shop/web/bucket
미니프로젝트2 - 팬명록(완성본):
http://spartacodingclub.shop/web/homework
위 프로젝트를 AWS에 올려서 배포하는게 이번프로젝트의 주 수업이었다.
Amazon Elastic Beanstalk
배포는 Amazon Elastic Beanstalk를 이용했다.
Amazon Elastic Beanstalk:
https://ap-northeast-2.console.aws.amazon.com/elasticbeanstalk/home?region=ap-northeast-2#/welcome
AWS에 가입하고 들어간 뒤 보안 자격증명에서 엑세스 키를 만들어준다.->
액세스키 아이디와 보안 액세스 키 아이디를 메모장 같은곳에 저장해두자!->
이제 배포할 VSCode 터미널로 와서 준비하자
다음 순서로 따라 입력해주자.
mkdir deploy - deploy라는 폴더를 하나 만듭니다!
cp [app.py](<http://app.py>) deploy/application.py - app.py라는 파일을 deploy 폴더에 application.py라는 이름으로 바꿔서 복제합니다!
cp -r templates deploy/templates - templates라는 폴더를 deploy 폴더 안에 통째로 복제합니다!
pip freeze > deploy/requirements.txt - 내가 pip 명령어로 설치한 라이브러리들의 목록을 deploy 폴더 안에 requirements.txt 파일에 기록합니다!
cd deploy - deploy 폴더 안으로 들어갑니다!(폴더 더블클릭과 똑같은 기능이네요!)
application.py ← app.py에서 이름을 바꿔줘야해요!
바꾼 application파일을 조금 수정해 줘야합니다.
from flask import Flask, render_template, request, jsonify
application = app = Flask(__name__) # 이렇게 변경해주기
from pymongo import MongoClient
client = MongoClient("내 URL")
db = client.sparta
@app.route('/')
def home():
return render_template('index.html')
@app.route("/guestbook", methods=["POST"])
def guestbook_post():
name_receive = request.form["name_give"]
comment_receive = request.form["comment_give"]
doc = {
'name': name_receive,
'comment': comment_receive
}
db.guestbook.insert_one(doc)
return jsonify({'msg':'응원 완료!'})
@app.route("/guestbook", methods=["GET"])
def guestbook_get():
comment_list = list(db.guestbook.find({},{'_id':False}))
return jsonify({'comments':comment_list})
if __name__ == '__main__':
app.run() # app.run도 ()내부 지워주기
그 뒤 터미널을 열고 pip install awsebcli 입력하고 엔터!
난 위와 같이 입력했을 때 pep517휠을 찾을 수 없다고 pynacl오류가 났었다.
python -m pip install --upgrade pip
python -m pip install --no-use-pep517 pynacl
난 위와같은 명령어를 입력해 오류를 해결했었다.
pip업그레이드만 해도 해결된다 하니 다음엔 그렇게 해봐야겠다.
다음은
eb init 입력!
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
위와 같이 나오는데 차례로 입력해줍니다.
그리고 AWS로 돌아가서 조금 기다리면 배포가 완료가 됩니다.
수정하기
일단 app.py로 이동해서 코드를 수정하고 flask서버를 이용해 테스트해보고 수정을 한다.
수정이 완료되면 그대로 복사해서 deploy폴더 내의 파일들에 붙여넣어 수정해주고(app.run과 위 flask서버 두번째 줄 수정한것은 바뀌지 않도록 주의한다.)
터미널에서 cd deploy를 이용해 deploy폴더로 들어간다.
그 뒤 터미널에 eb deploy myweb을 입력
그 뒤 조금 기다리면 AWS에서 수정이 완료된다.