[Django] heroku 배포 2 - 패키지 설치 및 파일 생성

wonyu·2022년 2월 25일
0

requirements.txt

  1. gunicorn, whitenoise를 설치한다.
    pip install gunicorn whitenoise
    whitenoise의 경우 settings.py의 미들웨어 부분에 추가한다.
    MIDDLEWARE = [
      'whitenoise.middleware.WhiteNoiseMiddleware'
      # ...
    ]

gunicorn: python WSGI. 웹 서버와 장고 사이에서 request를 처리해주는 역할이다.

whitenoise: 배포 시 settings.py에서 DEBUG를 false로 설정하게 되는데, 이렇게 하면 기존에 사용하던 static 파일들의 경로를 찾지 못한다. 이를 해결하기 위한 패키지이다.

  1. 설치된 패키지 목록을 requirements.txt 파일로 만든다.
    pip freeze > requirements.txt

Procfile

manage.py와 같은 위치에 Procfile을 생성한다. 내용은 아래와 같이 작성하는데, heroku 서버에 "웹 사이트를 시작하려면 이걸 실행해" 라고 알려주는 것이다.

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

runtime.txt

내가 파이썬 어떤 버전을 사용하고 있는지 헤로쿠에게 알려주기 위한 파일이다. Procfile과 같은 위치에 생성한다.

python-3.9.6

settings.py

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'),
)

Config Vars 등록


settings.py에 있는 시크릿 키를 포함하여 필요한 시크릿 키를 heroku 서버에서도 알 수 있도록 등록한다.

배포


코드를 깃헙에 올리고 해당하는 레파지토리의 해당 브랜치를 가져와서 배포를 시작한다. Deployment method에서 Github을 선택하면 깃헙 로그인 후 레파지토리를 선택할 수 있었던 걸로 기억한다. 깃헙과 연결한 뒤 나는 에러를 하나씩 수정하면서 테스트하기 위해 Manual deploy를 했다.

Deploy Branch를 클릭하면 터미널에서 뭔가 진행되는 것을 줄줄이 보여주는데 에러가 발생하면 맨 아랫줄에서 바로 바로 확인이 가능하다. 이 에러 메세지를 보면서 하나씩 에러를 고치면 되는데, 나는 pypiwin32와 관련한 에러를 해결하는 데에 오래 걸렸다. 혹시 이 문제가 발생했다면 이 라이브러리는 윈도우에서만 가능하다는 것을 알려주어야 하므로 requirements.txt에서 pypiwin32==223;platform_system == "Windows" 이렇게 수정해주면 된다.

각종 에러를 해결한 뒤 다시 deploy를 하면 배포 성공 메세지를 볼 수 있을 것이다. 이후 프론트와 연결해주면 Heroku 배포 끝~~

0개의 댓글