heroku를 사용해 django 프로젝트 배포하기

git이 설치되어있다고 가정한다.

1. heroku 회원가입

2. 헤로쿠 사용을 위한 패키지 다운

virtualenv 활성화 상태에서 패키지 다운로드

1
$ pip install dj-database-url gunicorn whitenoise

3. requirements.txt 파일 생성

1
$ pip freeze > requirements.txt

생성된 requirements.txt 맨 아래에 아래 내용 추가

1
$ psycopg2==2.7.1

4. Procfile 파일 생성

헤로쿠에게 웹 사이트를 시작시키기 위해 실행되어야할 명령어의 순서를 알려주기 위해 procfile 파일 생성 (확장자 x, cmd에서 vi나 nano로 생성)

1
web: gunicorn <mysite>.wsgi --log-file -

웹 애플리케이션을 배포할 때 gunicorn <mysite>.wsgi 명령을 실행하는 것을 의미
(gunicorn은 강력한 버전의 runserver 명령어)

5. runtime.txt 파일 생성

헤로쿠에게 어떤 버전의 파이썬을 사용하는지 알려줌.

1
2
# djangoproject/runtime.txt
python-3.6.5 # 프로젝트 파이썬 버전

5. settings.py 설정

로컬 컴퓨터 설정 파일 local_settigns.py생성

1
2
3
4
5
6
7
8
9
10
11
12
13
# local_settings.py

import os
BASE_DIR = os.path.dirname(os.path.dirname(__file__))

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
}

DEBUG = True

이 파일은 로컬에서 프로젝트를 돌릴 때 사용을 하기 위함인 것 같다.

6. 헤로쿠 배포를 위한 settings.py 설정

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# settings.py
import dj_database_url

...

DEBUG = False

ALLOWED_HOSTS = ['127.0.0.1', '.herokuapp.com']

...

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': 'lowell',
        'USER': 'name',
        'PASSWORD': '',
        'HOST': 'localhost',
        'PORT': '',
    }
}
...

db_from_env = dj_database_url.config(conn_max_age=500)
DATABASES['default'].update(db_from_env)

7. wsgi.py 설정

프로젝트의 wsgi.py 파일의 끝에 다음 라인 추가

1
2
3
4
# wsgi.py
...
from whitenoise.django import DjangoWhiteNoise
application = DjangoWhiteNoise(application)

8. gitignore 파일 생성

1
2
3
4
5
*.pyc
db.sqlite3
myvenv
__pycache__
local_settings.py # 로컬 환경을 위한 파일이기 때문에 등록

9. heroku 로그인

아까 만들었던 계정으로 로긘하깅

1
$ heroku login

10. git 저장소 생성,커밋

현재 장고 프로젝트 루트 디렉토리에 git 저장소를 생성부터 커밋

1
2
3
4
5
$ git init
$ git add . 
$ git status 

$ git commit -m "additional files and changes for Heroku"

11. 애플리케이션 이름 설정

1
$ heroku create <appname>

이 이름은 도메인이 된다. <appname>.herokuapp.com

12. 이제 배포하면 된다.

1
$ git push heroku master

13. 애플리케이션 접속

헤로쿠에 웹 프로세스를 시작하라고 말한다.

1
$ heroku ps:scale web=1

앱에 들어가보장. 아래 명령어를 입력하면 브라우저가 뜰 것이당.

1
$ heroku open

14. migrate , createsuperuser

1
2
3
$ heroku run python manage.py migrate

$ heroku run python manage.py createsuperuser

오류 발생시

오류가 생겼다면 다음 블로그를 참조해보자.

오류해결

refer

https://tutorial-extensions.djangogirls.org/ko/heroku/

http://ggilrong.tistory.com/entry/heroku%EC%97%90-django-%EC%95%B1%EB%B0%B0%ED%8F%AC%ED%95%98%EA%B8%B0

http://morningbird.tistory.com/23