![[Django] 무료 호스팅 헤로쿠(heroku)로 배포 실습하기](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb9I06q%2Fbtrb6UvIGu7%2FSqqbZ1uhmKf8IH03K4TKwK%2Fimg.png)
안녕하세요!
이번 시간에는 무료 호스팅인 헤로쿠(heroku)로 배포하는 실습을 진행하겠습니다.
# 월 1000시간 / 500MB 제한 무료
개발 환경
Language: python 3.9.4
IDE: PaCharm community
HOST: heroku
헤로쿠로 배포하기에 앞서 이전 포스팅 SECRET_KEY 분리를 먼저 하시고 배포하시길 권장드립니다.
https://eveningdev.tistory.com/51
[Django] 시크릿 키(SECRET_KEY) 분리 실습하기
안녕하세요! 이번 시간에는 장고(Django)에서 배포하기 위해 SECRET_KEY를 분리하는 실습을 진행하려고 합니다. 개발 환경 Language: python 3.9.4 IDE: PaCharm community File: secret.json " SECRET_KEY " 란?..
eveningdev.tistory.com
헤로쿠(heroku) 회원가입
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
회원가입은 heroku 홈페이지에서 진행하실 수 있습니다.
헤로쿠(heroku) CLI 설치
터미널에서 헤로쿠 명령어를 사용하기 위해서 CLI 설치가 필요합니다.
OS에 맞게 설치해주세요!
https://devcenter.heroku.com/articles/heroku-cli
The Heroku CLI | Heroku Dev Center
Last updated April 27, 2021 The Heroku Command Line Interface (CLI) makes it easy to create and manage your Heroku apps directly from the terminal. It’s an essential part of using Heroku. Download and install The Heroku CLI requires Git, the popular vers
devcenter.heroku.com
가장 첫 번째로 SECRET_KEY를 분리
두 번째로 기본 값이 DEBUG = True -> (os.environ.get('DEBUG', 'True') != 'False')로 고치기
세 번째로 ALLOWED_HOSTS = ['*'] 설정

다음으로 Heroku 용 파일을 작성해야 합니다.
Procfile 이라는 파일을 생성합니다.

web: gunicorn 프로젝트명.wsgi --log-file -
# 기본 값
web: gunicorn 프로젝트명.wsgi --timeout 3000
# 배포하실 때 크롤링을 사용하셔야 한다면 timeout 시간을 늘려주셔야 합니다.
# Heroku에서 Default 값이 30이기 때문에 30초가 지나면 timeout 에러를 발생시키기 때문입니다.
runtime.txt 파일을 추가로 생성합니다.


파이썬 버전을 적어주세요
파이썬 버전이 몇인지 모르겠다면 python --version을 통해 확인합니다.
필요한 Dependency 설치
$ pip install gunicorn whitenoise dj-database-url psycopg2-binary
settings.py 수정
'whitenoise.middleware.WhiteNoiseMiddleware',
다음 내용을 MIDDLEWARE SecurityMiddleware 바로 아래에 추가합니다.

다음 내용을 settings.py 파일 가장 하단에 추가합니다.
import dj_database_url
db_from_env = dj_database_url.config(conn_max_age=500)
DATABASES['default'].update(db_from_env)

배포하기 전에 requirements.txt를 생성합니다.
$ pip freeze > requirements.txt
배포 단계
이제 배포 준비를 마쳤으니 git 명령어로 헤로쿠에 올립니다.
$ git init
$ git add .
$ git commit -m "heroku"
$ heroku login # press key
heroku login을 입력하시고 아무 키를 누르면 heroku 로그인 화면으로 이동합니다.

heroku에 로그인해주세요!
$ heroku create # heroku에 push 하기 위해 생성합니다.
# 일반적인 경우
$ git push heroku master
# 에러가 발생한 경우
$ git push heroku HEAD:master
heroku에 push까지 완료하시면 배포가 완료되었습니다.
마이그레이션 및 슈퍼유저를 생성합니다.
$ heroku run python manage.py migrate
$ heroku run python manage.py createsuperuser
$ 아이디 입력
$ 이메일 입력
$ 비밀번호 입력
배포가 완료되었습니다.
배포된 것을 확인해봐야겠죠?
$ heroku open
헤로쿠로 배포가 된 것을 확인할 수 있습니다.

추가 사항
헤로쿠(heroku)는 기본적으로 postgres 라는 데이터베이스를 사용합니다.
또한 앱을 선택한 후 환경 변수 및 빌드 팩을 설정할 수 있습니다.

이번 시간에는 헤로쿠(heroku)를 이용하여 배포하는 실습을 진행했습니다.
고생하셨습니다!
'Framework > Django' 카테고리의 다른 글
[Django] 무료 호스팅 파이썬애니웨어(pythonanywhere)로 배포 실습하기 (0) | 2021.08.15 |
---|---|
[Django] 시크릿 키(SECRET_KEY) 분리 실습하기 (0) | 2021.08.15 |
[Django] Django 파일 업로드에 대해 알아보고 File Upload 기능 실습하기 (4) | 2021.07.01 |
[Django] 리눅스(우분투)에 장고와 아파치 설치 및 연동하기-(3)(MariaDB 연동) (1) | 2021.06.30 |
[Django] 리눅스(우분투)에 장고와 아파치 설치 및 연동하기-(2)(정적 파일, 에러 확인) (0) | 2021.06.30 |
클라우드, 개발, 자격증, 취업 정보 등 IT 정보 공간
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!