elasticbeanstalk을 사용하여 배포 시 진행 순서

DevNoteKeeper·2023년 5월 18일
1
post-thumbnail

elasticbeanstalk을 사용하여 배포 진행하시는 분들 중 중간에 잘 못 진행하여 다양한 오류를 만나시는 분들이 있어 정리하게 되었습니다.

<진행 순서>

1. 먼저 배포 진행하려는 index.html 파일과 app.py에 오류가 없는지 확인해주세요.
해당 코드에 오류가 없어야 배포 후에도 제대로 작동됩니다.

2.아래 명령어를 한줄 씩 입력하여 venv 삭제 및 재 설치 해주세요.

python -m venv venv

rm -rf venv

3. 아래 코드 중 하나를 입력하여 venv를 활성화 시켜주세요.

./venv/Scripts/activate

source venv/Scripts/activate

4. 현재 열려있는 모든 터미널을 닫아주세요.
터미널이 두개 이상 열려있을 경우 중간에 다른 터미널을 열어 혼동하게 되는 경우가 간혹 발생합니다. 오류를 만날 수 있는 경우의 수를 줄이기 위해 하나만 연 상태에서 진행해주세요.

5.아래 명령어를 입력하여 app.py에 사용된 모듈을 재설치 해주세요.
이 과정에서 불필요하게 설치되어있던 모듈이 삭제되고, 필요한 모듈만 설치되게 됩니다.
그리고 아래 명령어는 스파르타코딩클럽 웹개발 종합반에 맞춰진 것이기 때문에 개인적으로 배포 진행 시에 추가적으로 설치한 모듈이 있다면 포함하여 설치해주세요!

pip install pymongo flask dnspython

6. 아래 명령어를 통해 배포에 사용되는 deploy 폴더를 만들어주세요.

mkdir deploy

7. 아래 명령어를 통해 배포에 사용될 index.html, app.py 파일을 deploy 폴더에 복사해주세요.

cp app.py deploy/application.py

cp -r templates deploy/templates

8. 아래 명령어를 통해 application.py에 어떤 모듈이 적용되어야하는지 써 있는 파일을 만들어 주세요.

pip freeze > deploy/requirements.txt

9. deploy 폴더를 열어 아래 사진처럼 templates > index.html, application.py, requirements.txt 파일이 있는지 확인해주세요.

10. application.py 파일을 열어 아래 처럼 변경해주세요. 변경 후에는 Ctrl+s를 눌러 저장해주세요.
맥 사용자의 경우 port가 5000이 아닌 5001로 되어있을 수 있습니다.

변경 전
app = app = Flask(__name__)

변경 후
application = app = Flask(__name__)
변경 전
app.run('0.0.0.0', port=5000, debug=True)

변경 후
app.run()

11. 실제 배포 진행을 위해 아래 명령어를 입력하여 deploy 폴더로 이동해주세요.

cd deploy

12. 아래 명령어를 입력하여 eb 사용이 가능하도록 해주세요.

pip install awsebcli

13. 아래 명령어를 입력하여 배포 시작해주세요.

eb init

14. 이후 나오는 선택지는 아래 나와있는 것과 동일하게 해주세요! 항상 동일한 번호로 선택지가 나온다는 보장이 없으니 선택지와 동일하게 쓰여져 있는 번호를 확인 후 입력해주세요.

질문 : Select a default region
선택지 : ap-northeast-2 : Asia Pacific (Seoul)

질문 : You have not yet set up your credentials or your credentials are incorrect You must provide your credentials.
(재배포 진행하시는 분들은 해당 질문이 나오지 않습니다.)

선택지 : 
(aws-access-id) > aws 만들 때 저장해둔 액세스 키 ID
(aws-secret-key) > aws 만들 때 저장해둔 보안 액세스 키

질문 : Select an aplication to use
선택지 : [Create new Application]

질문 : Enter Application Name
선택지 : 엔터 눌러 주시면 넘어갑니다.

질문 : It appears you are using Python. Is this correct?
선택지 : y

질문 : Select a platform branch.
선택지 : Python 3.8 running on 64 bit Amazon Linux2

질문 : 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 passphrase (empty for no passphrase)
선택지 : 엔터 눌러 주시면 넘어갑니다.

질문 : Enter same passphrase again
선택지 : 엔터 눌러 주시면 넘어갑니다.

15. 위에 나온대로 모든 질문에 올바르게 입력하셨다면 아래 명령어 입력하여 실제 배포 진행해주시면 됩니다.
한번 배포 진행하셨던 분들의 경우 동일 이름으로 배포하실 경우 오류가 발생할 수 있어 myweb2와 같이 다른 이름으로 배포해주셔야합니다.

eb create myweb

16. 기다리시면 아래 내용이 길게 나오게 되는데 마지막에 아래 내용과 동일하게 나온다면 배포 성공한 것입니다.

Successfully launched environment: myweb

</진행 순서>

오류 발생 시

물론 위와 같이 동일하게 진행하더라도 오류가 발생하는 분들이 있을 수 있습니다.

터미널에 뜬 오류가 있는 경우 어떤 오류인지 확인하시고 아래 링크를 참고하여 다시 진행해주시면 됩니다!

오류
ImportError: cannot import name 'DEFAULTCIPHERS' from 'urllib3.util.ssl'

오류
ServiceError - Create environment operation is complete, but with errors. For more information, see troubleshooting documentation.

그러나 터미널에 뜬 오류가 없지만 elasticbeanstalk 들어갔을 때 server가 뜨는 경우 아래 링크를 참고하여 logs를 확인하시고 다시 오류 해결해주시면됩니다.

logs 확인방법

profile
강의에서 주로 질문하는 내용에 대한 답변과 각종 오류 해결방법에 대해 알려드립니다.

0개의 댓글