본문 바로가기
program

난생처음 Django로 블로그 만들고 Heroku에 공개 관련 메모

by 믹스 2018. 6. 1.
반응형

Django & Heroku

간만에 필 받아서 열공한 내용 중에서 문제가 있었던 부분에 대한 메모

처음 Python Django를 알게 된 이후 언젠가는 도전해 보고 싶었었는데, 블로그를 만들고 최종적으로 Heroku에 공개까지 해보는 Django Girls Tutorial을 따라 해봤다.

문제 1. 업그레이드

처음 시작은 일본쪽 튜토리얼을 보고 시작했었는데 잘 나가다가 배포 하는 과정에서 막히기 시작하면서 시간을 꽤 잡아 먹었었다. (참고로 한국어 튜토리얼은 이쪽에서.)

git push heroku master

로컬에서의 작업을 마무리하고 배포를 위한 과정을 위해 명령어를 실행하자 문제가 발생했다.

...
...
remote: Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-build-e7m3xfsy/psycopg2/
...
...

뭔가 에러가 나와버린것. 최종 원인은 psycopg2를 업그레이드할 필요가 있었다.

#실패
pip upgrade psycopg2

#성공
pip install --upgrade psycopg2

처음에는 성공하지 못했었다. 이걸또 검색에 검색에 검색을 거쳐...install --upgrade 명령어로 업그레이드에 성공. 이런식의 같아보이는듯 다른 명령어 때문에 얼마나 고생을 한건지...ㅜ_ㅜ

pip freeze로 버전상태를 확인하고
pip freeze > requirements.txt

requirements.txt 를 업데이트 시킨후 다시 push를 하니 제대로 배포가 되었다. 만세! Stack Overflow를 시작해서 한국, 일본사이트를 이리저리 뒤지다 성공했다. 인터넷 만만세!

결국, 이 문제는 일본쪽 튜토리얼에서 사용되는 psycopg2이 하위 버전을 기준으로 진행되었기 때문이었다.

#일본
psycopg2==2.5.4

#미국, 한국
psycopg2==2.6.2

우여곡절 끝에 난생 처음 Django로 나만의 블로그를 만들어서 온라인에 오픈시키는데 성공하였고 현재의 전체적인 기능은 아래와 같다.

  • 글의 작성/수정/삭제
  • 글 작성시 배포전의 상태에서 확인가능
  • 배포전의 상태 리스트표시
  • 로그인/로그아웃
이런식으로 전체적으로 블로그에 사용되는 기능은 얼추 추가가 된것 같다. 일부러 댓글기능 튜토리얼은 패스했음. 조금씩 필요한 기능들을 반영시켜 나가야 겠다.

문제 2. 이미지 표시

튜토리얼에는 이미지 표시에 대한 튜토리얼이 없었다. <img><b>등 일반적인 html의 tag를 사용할 경우, 그대로 렌더링 되는 escape의 문제가 있어서 또다시 검색. 

<b>Sample</b>
<img src="https://docs.djangoproject.com/s/img/small-fundraising-heart.d255f6e934e5.png">

Heroku의 무료 버전의 경우, 일정시간이 지나면 등록된 이미지를 리셋시켜버리는 것 같았다. 무료로 사용하는 Heroku이고, 나같은 경우 기본적으로 이미지는 따로 Flickr 등으로 관리하고 있기 때문에 이미지를 Heroku에 올릴 필요가 없어 escape문제만 해결된다면 내가 원하는 (현시점의)기능은 구현될 것 같아 폭풍검색.

{% autoescape off %}
...
{% endautoescape %}

autoescape 를 적용하니 한방에 해결되었다.

Sample

Python, Django의 경우 국내의 (무료)호스팅 서비스를 찾는것이 쉽지 않았다. 아직 AWS를 이용해 볼 정도까지는 아니기에 정착한 곳이 Heroku 였었고, 다행히 일본쪽의 튜토리얼이 Python - Django - Heroku 를 기준으로 이루어져 있어 수월하게(?) 진행할 수 있었던 것 같다.

이번 튜토리얼을 따라하는 과정에서 미국, 일본, 한국쪽을 다 둘러보게 된 후 알게 된것은 같은 Django를 다루는 내용이지만, 온라인 배포 과정에서 미국, 한국은 PythonAnywhere를 배포처로 활용하고 있었지만, 일본만 Heroku 를 사용하고 있었다. 한국의 경우, 본가의 내용을 충실히 번역하는 것에 초점이 맞추어져 있다면 일본쪽은 배포과정에서 PythonAnywhere부분을 Heroku로 바꾸어 두었던것 같다.

반응형

댓글0