본문 바로가기
Django Project

헤로쿠로 앱 배포하기(2)

by nijex 2022. 10. 9.

저번 포스팅에서 헤로쿠에 가입하고 기본 세팅에 대해 적었으니, 이번 포스팅에서는 본격적으로 이미 제작한 장고 프로젝트를 배포한 과정에 대해 적어보겠다.

 

 

1. 헤로쿠 무료 db 등록

 

헤로쿠에서 무료로 제공해주는 db를 이용하기 위해서는 먼저 결게 카드 등록부터 해주어야 한다.

로그인 후 Manage Account - Billing으로 가자

Account · Billing | Heroku

 

Heroku

 

dashboard.heroku.com

Add credit card를 누른 후 해외결제 가능한 카드를 등록해주면 된다. 등록을 완료했더니 바로 0.16달러가 등록한 카드로 해외결제되고 취소되었다.

 

카드 등록을 완료했으면 이제 DB를 등록해주자.

[Resources] - [Add-ons] - [Find more add-ons] - ClearDB MySQL 순서로 선택해주면 된다

*** 참고로 clearDB는 한글 지원이 안 된다. 나는 이 사실을 나중에 알아 대신 JawsDB를 이용하였다. ***

 

이미 카드 등록을 완료하였다면, 아래의 Submit Order Form을 클릭하는 것만으로 DB 등록이 완료된다.

 

DB를 등록하였으면, 프로젝트 앱에서 해당 DB를 연결하기 위한 값들을 확인하자.

[Settings] - [Config Vars] - [Reveal Configs Vars] 순서로 들어가주면 된다.

들어가면 해당db의 url을 확인할 수 있는데, 아래와 같은 형식이라 생각해주면 된다.

mysql://[user name]:[user password]@[host name]/[database name]?reconnect=true

(대괄호는 구분의 편의상 사용한 것이다)

 

 

 

2. 배포를 위한 장고 세팅

 

이제 헤로쿠에서 준비는 끝났으니, 로컬 환경으로 돌아와 배포를 위한 환경 설정을 해주면 된다.

 

- 환경변수 설정

외부에 공개되어서는 안 되는 민감정보의 경우 환경변수 설정을 해주어야 한다.

헤로쿠에서 환경변수 설정하는 첫 번째 방법은 헤로쿠 CLI의 환경변수 관련한 명령어를 입력하는 것이다

// 환경변수와 관련한 모든 정보 확인
heroku config 
// 환경변수 저장
heroku config:set 환경변수_키=환경변수_값
// 환경변수 삭제
heroku config:unset 환경변수_키

환경변수를 설정하는 또다른 방법으로는 헤로쿠 웹의 프로젝트에서 직접 설정하는 것이다.

DB 정보 확인하였던 곳에서 다른 환경변수를 추가하거나 수정, 삭제 할 수 있다.

[Settings] - [Config Vars] - [Reveal Config Vars]

- settings.py 수정

DEBUG = (os.environ.get('DEBUG', 'True') != 'False')

ALLOWED_HOSTS = ['*']

 

 

- procfile 파일 생성

manage.py 파일이 있는 위치에 procfile이라는 파일을 생성한 후, 아래와 같은 내용을 추가해주자.

(gunicorn이라는 WSGI HTTP 서버를 이용해 웹서비스할 것임을 헤로쿠에게 알려주는 내용이다)

프로젝트이름은 자신의 프로젝트에 맞게 변경해주면 되고, 두 번째 줄의 timeout의 숫자도 필요에 따라 변경해주면 된다. 설정하지 않을 경우 Heroku의 디폴트 값인 30초가 적용된다.

나는 timeout 설정이 필요 없어, 실제로는 첫 번째 줄만 작성하였다.

 

- 필요 모듈 설치 및 세팅 추가

헤로쿠에서 장고를 사용하기 위한 모듈을 설치하자. (가상환경 활성화된 상태인지 확인)

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

 

해당 내용과 관련하여 settings.py에 수정 내용 반영해주자.

먼저, Middleware 추가해주고

MIDDLEWARE = [
    ...
    'whitenoise.middleware.WhiteNoiseMiddleware',
]

파일 가장 하단에 다음의 내용도 추가해주자.

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

 

- requirements.txt 생성

터미널 창에 아래의 명령어를 입력해 requrements.txt파일도 생성해주자.

pip freeze > requirements.txt

 

 

 

3. 배포

 

이제 배포를 위한 모든 준비가 끝났으니, 터미널 창에 CLI 명령어만 입력하면 된다.

 

일단 git의 remote에 헤로쿠를 추가해준다.

(git remote -v 명령어를 입력하여 잘 추가되었는지 확인할 수 있다.)

heroku git:remote -a 프로젝트이름

 

이제 프로젝트와 관련한 모든 사항을 heroku로 보내주면 끝!

(추후에 수정사항이 있는 경우에도 아래의 코드를 입력하여 수정 내용을 반영할 수 있다)

git add .
git commit -m 'commit message'
git push heroku master

 

확인

heroku open

 

댓글