Heroku로 배포하기 본문

etc

Heroku로 배포하기

미니모아 2019. 7. 31. 01:49
반응형

 

멋사 중앙 강의  듣고 정리한 내용 

-- 

 

 

1) settings.py 수정

필수로 수정해야되는 건 SECRET_KEY와 DEBUG

  • DEBUG
  • 개발시 페이지가 없다던지, url이 잘못되었다던지 친절하게 설명해주는 DEBUG 기능을 꺼야합니다. 이 기능이 켜져있는 상태에서 배포된다면, 프로그래밍에 조예가 깊은 다른 분들이 들어와서 내 프로덕트를 수정해줄지 모릅니다.
  • SECRET_KEY
  • CRSF 보안 등을 위해 사용되는 큰 숫자의 랜덤값입니다. 이게 털리면 서버가 비밀리에 간직해야되는 모든 정보의 암호화가 무용지물이 된다고 생각해도 좋습니다.

그렇다고 한다. 아래와 같이 수정 

 

SECRET_KEY = os.environ.get('DJANGO_SECRET_KEY', 'cg#p$g+j9tax!#a3cup@1$8obt2_+&k3q+pmu)5%asj6yjpkag')
DEBUG = bool( os.environ.get('DJANGO_DEBUG', True) )

 

*

ALLOWED_HOSTS = []로 되어있다면 ALLOWED_HOSTS = ['*'] 로 수정해준다.

 

보안과 성능을 위한 추가 작업 참고 

https://docs.djangoproject.com/en/2.0/howto/deployment/checklist/

 

Deployment checklist | Django documentation | Django

Django The web framework for perfectionists with deadlines.

docs.djangoproject.com

2) HEROKU 설치하기 

https://www.heroku.com/

회원가입하고 로그인 하기 

 

Cloud Application Platform | Heroku

Heroku is a platform as a service (PaaS) that enables developers to build, run, and operate applications entirely in the cloud.

www.heroku.com

https://devcenter.heroku.com/articles/getting-started-with-python

배포 연습할 수 있는 가이드 (일단은 넘어감)

 

Getting Started on Heroku with Python | Heroku Dev Center

This tutorial will have you deploying a Python app (a simple Django app) in minutes. Hang on for a few more minutes to learn how it all works, so you can make the most out of Heroku. The Heroku CLI requires Git, the popular version control system. If you d

devcenter.heroku.com

https://devcenter.heroku.com/articles/getting-started-with-python#set-up

 

Getting Started on Heroku with Python | Heroku Dev Center

This tutorial will have you deploying a Python app (a simple Django app) in minutes. Hang on for a few more minutes to learn how it all works, so you can make the most out of Heroku. The Heroku CLI requires Git, the popular version control system. If you d

devcenter.heroku.com

운영 체제에 맞게 Heroku CLI 라는 것을 설치

 

3) Github repository에 저장하기 

 

그전에 manage.py가 있는 경로에 .gitignore파일을 만든다. 

gitignore.io 에서 django관련 ignore파일 명단을 받을수 있음

 

그 후에 

 

git init 

git add .

git commit -m "first commit"

git remote add origin [Github repository주소]

git push -u origin master

 

 

4) heroku에 올리기 위한 작업 

 

  [1] Procfile 작성 : manage.py 가 있는 경로

     

 web: gunicorn 프로젝트명.wsgi --log-file -

 

  [2] gunicorn 설치 

    

  pip install gunicorn

 

  [3] database 설정 :  sqlite가 기본으로 설정되어있었지만 heroku에서는 사용할 수 없음.

                            heroku는 postgresql 기본 옵션     

 pip install dj-database-url
 pip install psycopg2-binary

   settings.py 맨 마지막에 아래와 같이 추가 

 # Heroku: Update database configuration from $DATABASE_URL.
import dj_database_url db_from_env = dj_database_url.config(conn_max_age=500)         
DATABASES['default'].update(db_from_env)

  [4] static file을 위한 설정 

      

pip install whitenoise

      settings.py에 MIDDLEWARE에 아래 내용 추가    

   'whitenoise.middleware.WhiteNoiseMiddleware',

 

   [5] 파이썬 관련 라이브러리 설치  

pip freeze > requirements.txt

여기 설치한 내용을 호스팅할 서버에서도 설치해야 되기 때문에 관련 목록을 리스트업 해줌. 이렇게 리스트업해두면 heroku가 알아서 설치한다고함,

 

   [6] runtime.txt 만들어서 파이썬 버전 알려주기 

       manage.py가 있는 경로에 runtime.txt 라는 파일을 만들어서 아래와 같이 파이썬 버전을 적어 준다. 

python-3.7.2

 

       * 파이썬 버전 확인은 python --version 하면 됨

 

 

 

순서대로 진행했다면 위와 같은 폴더 구조여야 함

 

5) (드디어) heroku 만들기 

heroku login 

 

나오는 창에서 login 눌러서 로그인

heroku create
  • heroku 에 push하기전에 위 수정 사항을 전부 commit 했는지 꼭 확인합시다! git add, git commit을 모두 마친 상태에서 마지막으로 heroku에 push해야 합니다
git push heroku master
heroku run python manage.py migrate
heroku open

 

db가 달라졌기때문에 우리가 만들었던 superuser나 다른 블로그 글들도 모두 날라갔습니다. (local에 있는 sqlite안에 있습니다.) heroku에 있는 db에 다가는 새로 넣어줘야합니다.

heroku run python manage.py createsuperuser

 

 

ALLOWED_HOSTS 비어 있을 때 나오는 화면 

ALLOWED_HOSTS = ['*']로 수정해주면 해결됨 

 

 

배포시 오류가 나는 경우 

1. 오타

2.github 명령어 치다가 저장소 꼬임 

3. gitignore 파일 만들기전에 commit, push 해버린 경우 

 

 

반응형

'etc' 카테고리의 다른 글

shell 사용  (0) 2020.03.23
[멋쟁이사자처럼] 중앙과제 3  (0) 2019.07.31
git hub  (0) 2019.07.30
[멋쟁이사자처럼] 중앙과제 1  (0) 2019.07.30
git 기초 이해하기  (0) 2019.05.16
Comments