2달에 걸친 풀스택 에어비앤비 클론 코딩을 드디어 끝냈내요. 이 코스를 통해 python과 Django를 배울 때는 재밌어서 하루도 빠짐없이 코딩을 했습니다. 5월에는 천천히, 6월에는 2배 정도 빠르게 했으니 아마 열심히 하시는 분이라면 6주면 끝낼 수 있지 않을까 싶습니다. (사실 AWS와 연동하는데 일주일 동안 풀지 못한 오류가 있었는데 그거 때문에 시간을 많이 잡아먹음... 혹시라도 같은 오류가 나시는 분이 있을까 글도 올림 - [Django/AWS EB] wsgiPath 오류 및 502 Bad gateway)

 

5월과 6월 장장 2달간의 코딩

 

니꼴라스와 함께한 첫 풀스택 클론 코딩의 후기를 말해보자면 먼저 하고 싶은 말은 처음에는 어렵습니다. 처음에는 코드를 같이 써보고도 어떻게 돌아가는지 이해가 되지 않습니다. 근데 강의를 들어보면 같은 문제를 여러가지 방식으로 풀어주거나 비슷한 걸 여러 개  같이 만들어보는데 이렇게 여러 번 반복하다보면 갑자기 이해가 됩니다. 예를 들어 Django에서는 template(html)과 view와 url을 같이 쓰는데 대충 설명해보자면 template는 유저가 보는 화면을 구성하는 것이고, view는 그걸 돌리는(?) 방식이고, url는 www.naver.com 같이 주소라고 보시면 됩니다. 처음에는 이 세가지가 어떻게 연결되는지 잘 이해가 되지 않는데 여러 번 만들다 보면 이해가 됩니다.

 

내 home view

 

두 번째로 느낀 것은 코코아톡 강의나 바닐라JS강의를 들을 때는 몰랐는데 AWS에 배포를 하고 누군가가 내가 만들걸 볼 수 있게 되었을 때 굉장한 보람을 느꼈습니다. 그래서 강의 중 이 배포 부분이 가장 어렵고, 가장 보람을 느끼게 되는 부분이 아닐까 싶습니다. 

마지막으로 어느정도 난이도가 있는 강의를 들었다고 생각하지만 오히려 이 강의를 들으면서 제가 얼마나 아무것도 몰랐는지 느끼게 되었습니다. Django라는 framework가 굉장히 편리하게 만들어져 있음에도 불구하고, 이걸 정말 전문적으로 이용하기 위해서는 이제 wsgi랑 서버에 대해서도 알아야 하고, 실제 실무에서는 백엔드와 프론트엔드를 나누어 놓기도 하는데 그러기 위해서 API 특히, Django REST API(DRF)에 대해서도 알아야 하고, 그리고 이번에 만든 것은 굉장히 정적인데 이걸 멋지게 만들려면 Javascript를 이용해 사용자의 이벤트를 잡아줘야 하고, 등등.

결론적으로 이 에어비앤비 클론 코딩 강의는 코딩을 하면서 보람을 많이 느끼게 한 강의라고 생각하고, 클론 코딩 강의이기 때문에 부담없이 천천히 배울 수 있는 강의라고 생각합니다.

강의와 별개로 혼자 만들어본 My reservation
끝!

저는 이제 정말 장고를 잘 이용하기 위해서 노마드 코더에서 REST API 강의를 수강해보겠습니다ㅋㅋ

HTTP 5xx

Django 개인프로젝트를 진행하면서 AWS ElasticBeanstalk에 배포하는 것을 하던 도중 이런 오류를 만나게 되었는데 일주일 동안 아는 걸 모두 동원해서 고쳐보려해도 고치지 못했습니다. 제가 사용했던 Django 버전은 2.2버전이였고, Ubuntu 16.04, python 3.7을 사용했습니다.

배포할 때는 모두 eb init -> eb create하면 여러가지 옵션들이 나오는데 모두 default값을 사용했습니다.

그러면 현재 2020.06.27 기준 python 3.7를 Amazon Linux2 환경에서 Django 2.2버전을 돌리게 되는 것입니다. 근데 문제는 이런 상태로 deploy를 하면 뭐를 해도 로그에 wsgi에 관련된 에러가 뜨게 됩니다. path를 바꿔봐도 config를 바꿔봐도 해결이 되지 않습니다. 보안, 로드밸런서의 문제도 아닌 것 같습니다.

;;

그래서 해본 것이 Django버전을 2.1로 낮추는 것이였습니다. 그리고 나서 pipfile을 requirements.txt로 바꾸고...등등 근데 그래도 되지 않습니다. 그래서 서버의 버전도 python 3.6에 Amazon Linux로 한 단계 낮추었습니다. 그랬더니 갑자기 아무 문제 없이 돌아갑니다...

결론) 제가 추측을 해보면 python 3.7에 Amazon Linux2에서 Django 2.2버전을 돌리면 어떤 문제가 생기는 것 같습니다. 그래서 그냥 버전을 한 단계씩 낮추어 배포하면 문제 없이 돌아갑니다...

파이썬을 예전에는 그냥 jupyter notebook이랑 VS code로 썼었는데 package 오류가 나면 구글을 통해서 마구잡이로 pip를 남발하다보니 특이하게 패키지가 Appdata폴더의 Local로 들어가기도 하고, Roaming으로 들어가기도 해서 이왕 배우는거 윈도우10부터는 WSL라는 걸 지원해준다고 하니 우분투를 깔아서 도전해보기로 했다.

https://realpython.com/installing-python/

 

Python 3 Installation & Setup Guide – Real Python

In this Python installation guide you'll see step by step how to get a working Python 3 distribution set up on Windows, macOS, Linux, iOS, and Android.

realpython.com

여기를 참고해서 깔아보았다.

개인적으로 WSL과 Ubuntu, pipenv를 사용하면서 오류들을 많이 겪어서 기록해 놓아야겠다는 생각도 들었다... 먼저 pipenv를 이용해서 가상환경을 구축하려고 했는데 이 패키지 버전을 보니 2018년 말에 마지막으로 업데이트되었고, 여러 전문가들이 pipenv는 그만쓰고 Docker을 쓰라하니 이번만 pipenv를 쓰기로 했다.

 

아무튼 WSL을 통해서 우분투를 까는 것은 아래 마이크로소프트 홈페이지에서 자세히 설명해 놓았고 이대로 했을 때 오류가 나지 않았다.

https://docs.microsoft.com/en-us/windows/wsl/install-win10 

 

Install Windows Subsystem for Linux (WSL) on Windows 10

Installation instructions for the Windows Subsystem for Linux on Windows 10.

docs.microsoft.com

그리고 윈도우와 다르게 우분투를 까니까 python이 이미 깔려 있다. 근데 2.7버전과 3.5버전이라는 것. 뿐만 아니라 default로 python2.7을 쓰고 있다. 항상 3버전을 써왔고 3.5에서는 지원 안 하는 패키지들이 있으니 3.7버전으로 깔고, python3 --version 하면 3.7을 default로 만들도록 하자.( VS code에서 깔끔하고 잘 코딩을 할 수 있도록 black과 flake8을 까는데 3.5는 오류가 난다.)

apt-get install python3.7-dev

로 python3.7을 깔아주었다.

 

sudo update-alternatives --config python

를 치면 alternatives(대안)이 없다고 나온다.

 

sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.7 1

python은 python2.7로 하게 그냥 놔두고 python3만 python3.7을 1대안으로 하도록 정해 놓았다.

python3 --version 하면 이제 python3.7.x가 나온다. 굿

 

그리고 기존 python에서는 pip오류가 안 났는데 pip._internal가 오류가 나서 재설치를 해주고 pip3만 쓰기로 약속했다.

참고링크: https://qastack.kr/ubuntu/1025189/pip-is-not-working-importerror-no-module-named-pip-internal

 

Pip이 작동하지 않습니다. ImportError : 'pip._internal'이라는 모듈이 없습니다.

 

qastack.kr

그리고 나서 VS code에서 Remote-WSL을 깔고 pipenv로 가상환경을 설정하니 잘 돌아간다.

(pipenv --three 이상하게 오류 떠서 안되고, pipenv --three --python=`which python3` 이걸로 해결)

html, css를 배우는 코코아클론 강의를 다 듣고 챌린지까지 끝낸지는 꽤 오래되었고, 이제 Django를 배우는 에어비앤비 클론 강의를 듣고 있는데 그 전 강의들과는 다르게 에어비앤비 클론 강의는 개발환경을 구축하는데부터 어려움을 겪어서 기록용으로 글을 쓰려고 합니다. 그 전에 코코아 클론 후기를 마무리 짓고 싶다는 생각이 들어 이 글을 씁니다.

코코아 클론 끝
바닐라JS 끝

두 챌린지 말고도 파이썬 챌린지도 했었는데 13일차에 Flask를 이용한 코드 챌린지가 너무 어려워서 완주하지는 못했네요...

먼저 강의와 챌린지에 대한 주관적인 의견을 말해보자면 난이도 측면에서 강의는 매우 쉽고, 챌린지는 매우 어렵습니다.코코아 클론은 챌린지 시작 전에 시간이 있어서 예습을 해서 챌린지도 무난하게 끝낸 것 같은데 바닐라JS는 강의를 하나도 안 듣고, 챌린지를 시작하다보니 꽤나 어려움이 있었습니다. ( 매일 숙제가 오는데 코코아 클론 챌린지는 하루에 1시간~ 1시간 반이면 끝냈다면 바닐라JS 챌린지는 2시간~3시간은 걸렸던 것 같습니다. )

그런데 웃기게도 재미있는 건 바닐라JS 강의와 챌린지였습니다. 왜냐하면 코코아 클론 강의가 강의 완벽도도 높고, 챌린지 난이도도 그렇게 높지 않았지만 이것만으로는 뭔가 의미있는 걸 만들 수가 없어서 다 끝내고도 찝찝함이 있었는데 바닐라JS 강의를 들어면서 여러가지를 만들었는데 오히려 이 때 html과 css를 이용해서 꾸미는 것의 재미를 느꼈습니다. 하나하나 퍼즐 맞추는 것처럼 재밌었습니다. 나중에 바닐라JS 챌린지를 끝내면서 github를 이용해서 나만의 페이지를 만들었을 때는 매우 기분이 좋았습니다.

처음에 코코아클론을 9만원 주고 들어야 한다는 생각에 돈이 조금 아깝다고 생각했는데 코코아 클론을 듣고 나서 바닐라JS, 파이썬 기초를 무료로 듣다보니 돈이 하나도 아깝다는 생각이 들었습니다...ㅋㅋ

바닐라JS는 완주한지 얼마 안 되서 아직 certification이 왔네요ㅋㅋ

+ Recent posts