이노캠 3주차(토)- 웹배포하기

rimhye·2023년 6월 12일
0

이노캠

목록 보기
9/39

🌟우당탕탕 첫 웹 배포

오늘은 미니 프로젝트 완료 후 쉬는 날! 이었지만... 나는 입학시험을 망했었기 때문에 재시험을 위해 게더타운에 방문했다. 입학시험을 칠때는 코드를 짜다 시간을 초과했었지만, 오늘은 달랐다. 토요일 오전 11시 내 코드는 완벽하게 작동했다. (입학시험을 통과했던 조원분이 팁을 많이 줬기 때문이다. 짱입니다 정말👍👍) 나는 여유로웠다. 이제 웹 배포만 하면 되니까!! 그렇게 행복해하던 내가 과제를 마친 시각은 몇 시였냐면
무려 오후 18시 40분이었다.

그래서 이렇게 웹 배포가 오래 걸리게 만들었던 트러블 슈팅에 대해 기록하고자 한다.

📌utf-8오류

나는 현재 윈도우 11을 쓰고 있는데 venv 설치 후 라이브러리를 설치하려고만 하면 이런 오류가 떴다.

UnicodeDecodeError: 'cp949' codec can't decode byte 0xeb in position 16: illegal multibyte sequence

이 코드가 뜨면서 라이브러리 설치가 진행 안되는 오류는 그전에 고쳤었는데 이걸 해결하는 방법은 간단하다. venv폴더에서 Lib\site-packages - pip - _internal - utils - virtualenv.py폴더에 들어가면 54번째 줄에

with open(pyvenv_cfg_file) as f:

이 있는데 이걸

 with open(pyvenv_cfg_file, encoding="utf-8") as f:

으로 바꿔주면 된다. 그러면 라이브러리 설치 후 사용이 가능하다.

참고사이트:[에러] vscode 터미널에서 pip install 오류(cp949)

이런 방법으로 하면 그 파일내 venv에서만 utf-8로 인코딩했기 때문에 다른 파일 가상환경을 만들땐 매번 encoding='utf-8'을 집어넣어야한다. 못할 짓이다. 그래서 아예 윈도우에서 설정을 바꾸는 방법을 찾아보니 아래의 방법을 쓴다.

📌윈도우에서 utf-8로 적용시키고 싶을때는?

제어판에서 “날짜, 시간 또는 숫자 형식 변경”을 선택하고 국가 또는 지역의 관리자 옵션에서 “시스템 로캘 변경(C)”을 선택하면 “세계 언어 지원을 위해 Unicode UTF-8 사용”을 선택할 수 있다. 시스템을 재시작하면 기본 코드 페이지가 65001로 변경된다. but Beta인 만큼 다른 프로그램에서 한글이 깨지는 문제가 발생할 수 있다. 따라서, 콘솔 입출력이나 디버깅의 목적에 따라 UTF-8 지원을 선택해서 사용하는 것이 좋다.

참고사이트: Tensorflow 에러 해결
윈도우즈에서 UTF-8 설정하기

📌pip install awsebcli 시 경고가 뜬다면?

나는 설치 후 이런 문구가 떴다.

ERROR: After October 2020 you may experience errors when installing or updating packages. This is because pip will change the way that it resolves dependency conflicts.
We recommend you use --use-feature=2020-resolver to test your packages with the new resolver before it becomes the default.

requests 2.26.0 requires urllib3<1.27,>=1.21.1, but you'll have urllib3 2.0.3 which is incompatible.
botocore 1.29.99 requires urllib3<1.27,>=1.25.4, but you'll have urllib3 2.0.3 which is incompatible.

이건 간단하다.

pip install tensorflow --use-feature=2020-resolver

을 입력해주면 된다. pip를 업그레이드하면서 발생하는 문제라고 한다.

📌eb init 오류

  1. eb: cannot execute: required file not found 오류

맨 처음에 뜬 오류는 이것이다. 이 오류는 eb CLI를 설치안 한 상태에서 썼기때문에 생긴 듯했다. 다음 두 사이트를 참고하여 eb CLI를 설치한 후 다음으로 넘어갈 수 있었다.

참고사이트:
AWS Elastic Beanstalk 명령줄 인터페이스(EB CLI) 설정하기
Windows에 Python, pip 및 EB CLI 설치

  1. ImportError: cannot import name 'DEFAULTCIPHERS' from 'urllib3.util.ssl' 오류
    이 오류도 pip install과 관련이 있는데 해결방법은 터미널에
pip install --upgrade pip (pip 업그레이드 하고) 
pip uninstall awsebcli (이미 설치한 awsebcli 삭제하고)
pip install awsebcli (재설치하면 된다.) 

이러고 나면 eb init를 입력했을 때 제대로 작동이 된다.

참고사이트:보안-자격증명-eb-init-명령어-에러

📌aws IAM사용자로 로그인하려면?

루트계정 대신 사용하는 IAM계정에 바로 접속하려고 하니 이름과 비번이 맞는데도 인증 정보가 정확하지 않습니다. 다시 시도하십시오, 라면서 접속이 불가능했다. 액세스키를 IAM계정으로 썼으니 이걸 쓰려면 접속을 해야하는데... 하면서 열심히 공식문서나 웹서칭을 해서 찾아냈다.

🔔해결방법
먼저 루트계정으로 입력한 후 보안 자격증명>액세스 관리>사용자>사용할 iam계정을 선택한뒤 보안자격증명으로 들어가보면 콘솔 로그인링크가 있다. 이 링크를 통해야만 로그인이 가능하다.

📌eb create 에러

eb int까지 성공적으로 마치고 나니 여기서 또 에러가 발생했다. 전문을 보면 이렇다.

Printing Status:
2023-06-12 06:03:37    INFO    createEnvironment is starting.
2023-06-12 06:03:38    INFO    Using elasticbeanstalk-ap-northeast-2-217891812597 as Amazon S3 storage bucket for environment data.
2023-06-12 06:03:58    INFO    Created security group named: sg-02cdf3f95944f694e
2023-06-12 06:04:14    INFO    Created security group named: awseb-e-wcupruxv2t-stack-AWSEBSecurityGroup-VK3Q6VRX0TJJ
2023-06-12 06:04:14    INFO    Created target group named: arn:aws:elasticloadbalancing:ap-northeast-2:217891812597:targetgroup/awseb-AWSEB-EAKIMR6ARO5H/9af99928603fafd1
2023-06-12 06:04:14    INFO    Created Auto Scaling launch configuration named: awseb-e-wcupruxv2t-stack-AWSEBAutoScalingLaunchConfiguration-5X3G287uejNr 
2023-06-12 06:04:30    INFO    Created Auto Scaling group named: awseb-e-wcupruxv2t-stack-AWSEBAutoScalingGroup-1WF5JAOEKNHWL
2023-06-12 06:04:30    INFO    Waiting for EC2 instances to launch. This may take a few minutes.
2023-06-12 06:04:45    INFO    Created Auto Scaling group policy named: arn:aws:autoscaling:ap-northeast-2:217891812597:scalingPolicy:64b2d58d-86f5-475d-acc3-321876a460f9:autoScalingGroupName/awseb-e-wcupruxv2t-stack-AWSEBAutoScalingGroup-1WF5JAOEKNHWL:policyName/awseb-e-wcupruxv2t-stack-AWSEBAutoScalingScaleDownPolicy-ZHwmPkMYsqJz
2023-06-12 06:04:45    INFO    Created Auto Scaling group policy named: arn:aws:autoscaling:ap-northeast-2:217891812597:scalingPolicy:5f880844-b709-4a04-b0ac-23171aec631d:autoScalingGroupName/awseb-e-wcupruxv2t-stack-AWSEBAutoScalingGroup-1WF5JAOEKNHWL:policyName/awseb-e-wcupruxv2t-stack-AWSEBAutoScalingScaleUpPolicy-3FDusiBmOcgQ
2023-06-12 06:04:45    INFO    Created CloudWatch alarm named: awseb-e-wcupruxv2t-stack-AWSEBCloudwatchAlarmLow-1O2GDGFGB1GSX
2023-06-12 06:04:45    INFO    Created CloudWatch alarm named: awseb-e-wcupruxv2t-stack-AWSEBCloudwatchAlarmHigh-MB4AFN4WXKRM
2023-06-12 06:05:31    INFO    Created load balancer named: arn:aws:elasticloadbalancing:ap-northeast-2:217891812597:loadbalancer/app/awseb-AWSEB-1BVA427HKUTXQ/5a003264ce4d5199
2023-06-12 06:05:34    INFO    Created Load Balancer listener named: arn:aws:elasticloadbalancing:ap-northeast-2:217891812597:listener/app/awseb-AWSEB-1BVA427HKUTXQ/5a003264ce4d5199/91d10bb2f30fc0e8
2023-06-12 06:05:43    ERROR   Instance deployment failed. For details, see 'eb-engine.log'.
2023-06-12 06:05:43    ERROR   Instance deployment failed to install application dependencies. The deployment failed.
2023-06-12 06:05:46    ERROR   [Instance: i-0a9c200f157d7d6a1] Command failed on instance. Return code: 1 Output: Engine execution has encountered an error..
2023-06-12 06:05:46    INFO    Command execution completed on all instances. Summary: [Successful: 0, Failed: 1].
2023-06-12 06:06:49    ERROR   Create environment operation is complete, but with errors. For more information, see troubleshooting documentation.        

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

뭐가 문젠지 정확히 모르겠지만 일단 한개가 실패해서 안된다는 것은 확실하다.error 가 난 곳을 확인해보면 eb-engine.log를 확인해보라고 하는데

eb logs를 터미널에 입력해주면 로그를 확인해볼 수 있다. 또 다른 방법으로는 Elastic Beanstalk>환경>(내가 만든 환경명)으로 들어가서 log탭에 들어가 log를 다운받을 수 있는데 이건 불편하니 비추!! 암튼 로그를 확인하던 중 눈에 뭔가 띄였다.

ERROR: No matching distribution found for pywin32==306

관련 에러를 서치해보니 내가 사용하는 Python버전에 따라 pywin32와 호환이 되지 않을 수도 있어 다운그레이드하라고 했다. 그래서 라이브러리를 지우고 터미널에서 pip install pywin32==225 입력한 뒤 다시 돌렸는데 이번에는

[INFO] ERROR: Could not find a version that satisfies the requirement pywin32==225 (from versions: none)
ERROR: No matching distribution found for pywin32==225

오류가 떴다. 미쳐버림 진짜. 결국엔 내가 해결한 방법은

pip uninstall pywin32
pip uninstall pypiwin32
pip freeze > requirements.txt

해서 저 파일들을 다 지우고 eb create를 했더니 성공했다. 하고 나서 더 찾아보니 버전마다 맞는 pywin 모듈이 다 다르더라;; 혹시 모르니 남겨두기!

python 3.9.16은 pip install pywin32==306
python 3.9.13은 pip install pywin32==225
python 3.8은 pip install pywin32==300

참고사이트:
pywin32모듈 에러-해결방법
No module named 'win32gui' 에러
AWS Elastic Beanstalk Using Python 2 and Python 3 in error?

아무튼 이렇게 여러 문제를 해결할 수 있었다.

✍️ 배포 후 느낀점

배포하는데에 시간을 한참 쓰고 나니 진력이 다 빠진 기분이었다. 그렇지만 트러블슈팅하는 과정에서 내가 얻어가는 과정도 많았고 무엇보다 내가 만든 웹페이지가 실사용이 가능해졌단 사실이 뿌듯했다. 오늘 겪은 모든 것들이 내 밑거름이 되어 다음엔 더 빨리 웹 배포를 할 수 있었으면 좋겠다.

profile
개발자가 되고 싶어요

0개의 댓글