📢 공지사항
home

Heroku 배포하기

번호
28
비고
16:28
주차
5월 넷째주
확인
1.
Heroku 가입
2.
Heroku CLI 설치
https://devcenter.heroku.com/articles/heroku-cli 에서 pc 환경에 맞는 거 다운로드, 설치
... 설치 확인 위해 Git Bash 앱 실행 → heroku 했을 때 목록 나오면 ok
3.
환경 변수 적용
Debug 다음 값으로 바꿈(settings.py 에 코드 넣음)
DEBUG = (os.environ.get('DEBUG', 'True') != 'False')
Python
복사
맨 아래 AWS_ACCESS_KEY_ID 와 AWS_SECRET_ACCESS_KEY 도 다음 과 같이 바꿈
AWS_ACCESS_KEY_ID = os.environ.get('AWS_ACCESS_KEY_ID') AWS_SECRET_ACCESS_KEY = os.environ.get('AWS_SECRET_ACCESS_KEY')
Python
복사
4.
.gitignore 파일 적용
requirements.txt랑 같은 곳에 .gitignore 파일 생성(없으면)
gitignore 사이트에 django 검색해서 나온 코드를 복사하여 붙여 넣음
5.
Heroku 용 파일 작성
위와 같은 곳에 Procfile 파일 생성
web: gunicorn 프로젝트명.wsgi --log-file -
한 줄만 필요 함 → gunicorn 실행해서 뒤에를 넘겨줘라는 뜻, 프로젝트 명에는 wsgi.py 파일이 있는 폴더(project2)명 넣음
위와 같은 곳에 runtime.txt 파일 생성
python-3.9.2
한 줄만 넣음 → 자신의 python 버전에 따라 넣음
6.
필요한 Dependency 설치
위에서 봤던 gunicorn 설치, whitenoise 는 static 파일 관리해주는 프로그램, heroku 에서 데이터베이스를 주소 형식으로 줄 때 변경?하나로 해주는 dj-database-url, heroku 의 데이터베이스인 포스트클래스쿄엘? 에 접속할 수 있도록 만들어주는 psycopg2-binary 패키지
터미널에 pip install gunicorn whitenoise dj-database-url psycopg2-binary 넣음
7.
whitenoise 가 장고에서 작동하기 위한 코드
settings.py 의 MIDDLEWARE 에서 SecurityMiddleware 있는 코드 아래에 다음 코드 추가
'whitenoise.middleware.WhiteNoiseMiddleware',
Python
복사
ALLOWED_HOSTS 수정
[] 안에 '*' 넣음
→ 모든 주소에서 접근 허용
보안상 안 좋을 수도 있지만 장고에서 관리하기보다는 웹서버 프로그램이 관리하는게 편함
DB 관련 코드 수정
맨 아래에 다음 코드 작성
import dj_database_url db_from_env = dj_database_url.config(conn_max_age=500) DATABASES['default'].update(db_from_env)
Python
복사
import 가 위로 올라갈 수도 있음
pip freeze > requirements.txt
git 에 수정된 파일들 추가 (터미널)
git add -A
git commit -m "add files for deploying to heroku"
(영상에서는 git commit -m "for heroku")

git 문제 해결

git config --global core.autocrlf true → true 를 false 로

heroku 문제 해결

echo $PATH
/c/Program\ Files/Heroku/bin/heroku login
PATH="$PATH:/c/Program Files/Heroku/bin"
git init
git add .
git commit -m "for heroku" ... 다시
git branch -M main
git push origin main
Heroku 관련 명령어 실행 (터미널)
heroku login
창 뜨면 로그인 버튼 누름
heroku create
나의 앱이 배포될 주소 뜸
git push heroku main
빌드 과정 보여줌
오류나면 requirements.txt 에서 해당 오류나는 줄 삭제하고 git add 부터 다시 입력
collectstatic 안해도 heroku 에서 직접 해줌
heroku 에 배포하기 전에 만들어 둔 장고 앱 heroku 가 압축
마지막에 뜨는 링크 들어갔을 때 does not exist 오류 뜨는거 정상
heroku run python manage.py migrate
heroku run python manage.py createsuperuser
Username, Email, Password 작성
heroku open
크롬 창에서 열어줌
Heroku 에서 환경 변수 설정
heroku.com 에서 열었던 페이지 주소 항목에 들어가서 Settings - Reveal Config Vars 누름
DEBUG ... False
AWS_ACCESS_KEY_ID ... AKIAVXMCPHDL3FP7V5AK
AWS_SECRET_ACCESS_KEY ... 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
add
=⇒ 다하고 나서 페이지 새로고침, 주소창에 /a 와 같이 없는 페이지로 들어가면 노란 오류 페이지가 아니라 Not Found 뜸

gunicorn 이란?

= python manage.py runserver
→ 서버를 몇 개를 돌릴지, 서버 프로세스를 몇 개를 할지, 동시 접속 몇 명까지 할지 결정 가능
→ 성능, 속도 기반으로 돌림
→ 보안성
→ uwsgi(usgi?) 나 gunicorn 주로 사용 ... heroku 에서 gunicorn 사용 권장
왜 내용 다 사라진겨? 아몰랑,,,ㅋㅋ큐ㅠㅠㅠ