pip install gunicorn whitenoise
whitenoise의 경우 settings.py의 미들웨어 부분에 추가한다.MIDDLEWARE = [
'whitenoise.middleware.WhiteNoiseMiddleware'
# ...
]
gunicorn: python WSGI. 웹 서버와 장고 사이에서 request를 처리해주는 역할이다.
whitenoise: 배포 시 settings.py에서 DEBUG를 false로 설정하게 되는데, 이렇게 하면 기존에 사용하던 static 파일들의 경로를 찾지 못한다. 이를 해결하기 위한 패키지이다.
pip freeze > requirements.txt
manage.py와 같은 위치에 Procfile을 생성한다. 내용은 아래와 같이 작성하는데, heroku 서버에 "웹 사이트를 시작하려면 이걸 실행해" 라고 알려주는 것이다.
web: gunicorn 프로젝트명.wsgi --log-file -
내가 파이썬 어떤 버전을 사용하고 있는지 헤로쿠에게 알려주기 위한 파일이다. Procfile과 같은 위치에 생성한다.
python-3.9.6
settings.py가 있는 앱 폴더의 wsgi.py에 아래와 같이 작성한다.
STATIC_ROOT
: 배포 시 static 파일들을 모을 위치STATIC_URL
: 원래 작성되어 있음. static 파일을 참조하는 경로STATICFILES_DIRS
: 현재 프로젝트에서 static 파일들의 경로# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/1.9/howto/static-files/
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
STATIC_URL = '/static/'
# Extra places for collectstatic to find static files.
STATICFILES_DIRS = (
os.path.join(BASE_DIR, 'static'),
)
settings.py에 있는 시크릿 키를 포함하여 필요한 시크릿 키를 heroku 서버에서도 알 수 있도록 등록한다.
코드를 깃헙에 올리고 해당하는 레파지토리의 해당 브랜치를 가져와서 배포를 시작한다. Deployment method에서 Github을 선택하면 깃헙 로그인 후 레파지토리를 선택할 수 있었던 걸로 기억한다. 깃헙과 연결한 뒤 나는 에러를 하나씩 수정하면서 테스트하기 위해 Manual deploy를 했다.
Deploy Branch를 클릭하면 터미널에서 뭔가 진행되는 것을 줄줄이 보여주는데 에러가 발생하면 맨 아랫줄에서 바로 바로 확인이 가능하다. 이 에러 메세지를 보면서 하나씩 에러를 고치면 되는데, 나는 pypiwin32
와 관련한 에러를 해결하는 데에 오래 걸렸다. 혹시 이 문제가 발생했다면 이 라이브러리는 윈도우에서만 가능하다는 것을 알려주어야 하므로 requirements.txt에서 pypiwin32==223;platform_system == "Windows"
이렇게 수정해주면 된다.
각종 에러를 해결한 뒤 다시 deploy를 하면 배포 성공 메세지를 볼 수 있을 것이다. 이후 프론트와 연결해주면 Heroku 배포 끝~~