코딩공부/Python Django

python django heroku 배포하기

integerJI 2020. 1. 2. 12:13

1. Settings.py 수정하기

보안과 외부 접속 설정을 위하여 SECRET_KEY와 DEBUG, ALLOWED_HOSTS를 수정해야 합니다.

SECRET_KEY = os.environ.get('DJANGO_SECRET_KEY', '기존의 시크릿키')
DEBUG = bool( os.environ.get('DJANGO_DEBUG', True) )
ALLOWED_HOSTS = ['*']

 

2. .gitignore파일 만들기

github에 올리기 전에 올리면 안 되는 내용을 필터링해줍니다.. gitignore파일을 manage.py파일과 같은 위치에 만들어주어야 합니다.

### Django ###
*.log
*.pot
*.pyc
__pycache__/
local_settings.py
db.sqlite3
media

 

3. heroku에 올릴 준비하기

3-1. Procfile파일 만들기

 

heroku에 올리기 위하여 필요한 파일입니다. 이 파일 또한 manage.py, .gitignore 파일이 있는 위치에 만들어 줍시다.

 

안에는 아래의 내용과 처음 startproject 하였던 프로젝트 명을 적어주면 됩니다.

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

 

3-2. 여라가지의 라이브러리 설치

 

heroku를 사용하기 위하여 아래의 라이브러리를 설치하여 줍니다.

pip install gunicorn
pip install dj-database-url

dj-database-url을 설치하였다면 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)

pip install psycopg2-binary
pip install whitenoise

whitenoise도 마찬가지로 settings.py에 알려주어야 합니다.

 

settings.py에서 MIDDLEWEAR 맨 위에 다음 코드를 넣어줍시다.

'whitenoise.middleware.WhiteNoiseMiddleware',

 

3-3. 라이브러리 리스트 만들기

 

지금까지 설치한 라이브러리들을 뽑아내 heroku에게도 알려줍니다. 아래의 명령어를 입력하면 지금까지 pip install 하였던 라이브러리들이 requirements.txt에 들어가게 됩니다.

pip freeze > requirements.txt

 

3-4. runtime.txt 파일 만들기

 

runtime.txt 파일을 manage.py와 같은 위치에 만들어 안에 python 버전이 무엇인지 적어줍시다. 그래야 heroku와 충돌을 막을 수 있습니다.

python --version

해당 명령어로 자신의 python이 몇 버전인지 확인할 수 있습니다.

 

python-3.7.2

이때 주의할 점은 version을 입력하여 나온값을 그대로 붙여 넣으면 안 된다는 점입니다.

 

대소문자와 "-" 에 주의해 주세요

4. github push하기

자신의 github에 파일들을 모두 올려주어야 합니다. 새로운 repositories를 설정하여 올려줍시다.

 

git init
git add .
git commit -m "first commit"
git remote add origin "github 주소가 들어갈 자리입니다."
git push -u origin master

github로 돌아가서 파일들이 잘 올라갔는지 확인합니다.

 

 

5. heroku 올리기

5-1. 회원가입 및 heroku 설치

 

heroku에 회원가입을 한 뒤 Heroku CLI를 설치하여야 합니다. 새로 설치를 한다면 컴퓨터를 한번 재부팅을 해주시기 바랍니다.

 

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

 

5-2. 로그인 및 create

heroku login

해당 명령어로 로그인을 하여 vscode와 연결하여 줍니다.

heroku create 서버이름

create를 해줍시다.

 

create 뒤에 오는 이름으로 서버가 만들어졌습니다.

 

만약 이미 heroku 서버가 존재 한다면??

heroku git:remote -a AppName

으로 설정해 주시면 됩니다.

 

5-3. heroku push

 

이제 서버에 올려줍시다. 서버에 올리기 전에 주의해야 할 점은 github에 최종 파일들이 모두 등록이 되어있어야 합니다. 꼭 git push를 하고 서버를 만들어 올리시기 바랍니다.

git push heroku master

 

저는 문제없이 한 번에 올라갔습니다. 만약 오류가 뜬다면 remote를 잘 읽어보시기 바랍니다...

 

5-4. database 등록

heroku run python manage.py migrate

heroku 서버로 옮겼기 때문에 database를 등록하여 줍니다.

 

또한 superuser도 새로 설정해주어야 합니다.

 

heroku run python manage.py createsuperuser

 

이제는

 

heroku run python manage.py collectstatic

 

를 사용하여 static 파일을 모아줍니다. (기본 설정된 파일들 amdin 등등)

 

 

6. 끝

heroku open

open 명령어로 지금까지 만든 project가 heroku에 잘 올라갔는지 확인하면 됩니다. 

 

database가 초기화되었기 때문에 데이터는 새롭게 등록해주어야 합니다.

 

이제 누구나 제가 만든 홈페이지로 들어올 수 있게 되었습니다!