그런데 장고(Django) 앱 배포 시 아래와 같이 정상적으로 진행되지 않고 여러가지 오류가 날 때가 있다.
배포가 거절되었다(Reject Deploying)는 등등…
그럴 땐 아래 3가지 항목이 정상적으로 잘 설정되어 있는지 확인 해보면 좋다.
1. Procfile 파일의 생성
Procfile을 프로젝트 최상위 폴더에 생성 후 아래와 같이 WSGI에 대한 설정 부분을 입력한다.
web: gunicorn <자기 프로젝트="" 이름="">.wsgi --log-file - (입력 시 꺽쇠기호는 빼고 입력)자기>
2. gunicorn 패키지 설치 여부
헤로쿠에 앱 배포 시 WSGI를 사용하는데 <1번>에서 gunicorn을 사용하기로 했다면, gunicorn 패키지가 로컬에 설치되어 아래 <2번>requirements.txt를 만들 때 항목에 기록되어야 헤로쿠 앱 배포 시 자동으로 설치가 되며 에러가 발생하지 않는다.
3. requirements.txt 존재 여부
‘pip freeze > requirements.txt’ 명령으로 현재 프로젝트의 패키지 설치 환경이 담긴 파일을 만들 수 있다. 이 파일이 헤로쿠에 배포하고자 하는 프로젝트 최상위 폴더에 위치해야 한다.
초보자가 사소하지만 자주하는 실수는 ‘requirements.txt’ 파일명을 입력할 때 ‘s’ 문자를 빼고 생성하는 것이다.
4. collectstatic 명령
헤로쿠 배포 스크립트가 collectstatic 명령을 실행할 때 에러가 나는 경우는 STATIC_ROOT 항목이 settings.py에 설정되지 않아서이다. 개발버전이 아닌 배포를 할 때는 장고 프로젝트 내에 여러군데 흩어져있는 정적 파일들(html, css 등등)을 한 곳에 모아 주어야 WSGI가 실행될 때 해당 경로를 참고 할 수 있다.
STATIC_ROOT = os.path.join(BASE_DIR, ‘staticfiles’) 와 같이 settings.py에 설정하면 된다.
필수적이진 않지만 잘 설명되어 있지 않는 부분 중 하나가 실행되는 파이썬 버전을 지정하는 방법이다.
기본적으로 헤로쿠 문서의 Getting Start를 따라 실행하면 로컬 개발 환경에서 파이썬 3를 이용해 개발하고 있더라도 헤로쿠에 배포 시 배포 스크립트는 파이썬 2.x 버전으로 설치한다. 원하는 버전으로 설치하기 위해선 아래와 같이 프로젝트의 최상위 폴더에 runtime.txt 파일을 만들고 실행되길 원하는 파이썬 버전명을 지정하면 해당 버전으로 헤로쿠 앱 배포 시 설치된다.