안녕하세요!
이번 시간에는 무료 호스팅인 헤로쿠(heroku)로 배포하는 실습을 진행하겠습니다.
# 월 1000시간 / 500MB 제한 무료
개발 환경
Language: python 3.9.4
IDE: PaCharm community
HOST: heroku
헤로쿠로 배포하기에 앞서 이전 포스팅 SECRET_KEY 분리를 먼저 하시고 배포하시길 권장드립니다.
https://eveningdev.tistory.com/51
헤로쿠(heroku) 회원가입
회원가입은 heroku 홈페이지에서 진행하실 수 있습니다.
헤로쿠(heroku) CLI 설치
터미널에서 헤로쿠 명령어를 사용하기 위해서 CLI 설치가 필요합니다.
OS에 맞게 설치해주세요!
https://devcenter.heroku.com/articles/heroku-cli
가장 첫 번째로 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 정보 공간
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!