HELOKU 배포

jeong_hyeon·2022년 6월 15일
0

TIL

목록 보기
20/22

Heloku 란?

Heroku는 Java, Node.js, Python등 여러 언어를 지원하는 클라우드 Paas

서비스형 플랫폼(Platform as a Service, PaaS)은 클라우드 컴퓨팅 서비스 분류 중 하나다. 일반적으로 앱을 개발하거나 구현할 때, 관련 인프라를 만들고 유지보수하는 복잡함 없이 애플리케이션을 개발, 실행, 관리할 수 있게 하는 플랫폼을 제공한다. SaaS의 개념을 개발 플랫폼에도 확장한 방식으로, 개발을 위한 플랫폼을 구축할 필요 없이, 필요한 개발 요소를 웹에서 쉽게 빌려쓸 수 있게 하는 모델

배포 방법

  1. SECRET_KEY 분리
SECRET_KEY = '시크 릿키'   # 기존의 시크릿 키를 아래와 같이 변경 후 삽입

SECRET_KEY = os.environ.get('DJANGO_SECRET_KEY', '기존의 시크릿키')
출처: https://zodlab.tistory.com/95 [조드군의 일상:티스토리]
  1. DEBUG 와 ALLOWED_HOSTS 부분을 수정합니다.
DEBUG = bool( os.environ.get('DJANGO_DEBUG', True) )

ALLOWED_HOSTS = ['*']
  1. .gitignore파일을 만들어주고 불필요한 파일들이 깃헙에 등록되지 않도록합니다.
__pycache__/
*.log
*.pot
*.pyc
*.py[cod]

.Python
venv/

db.sqlite3
.DS_Store
  1. 헤로쿠 서버에 배포하기 위한 필요한 라이브러리들을 설치합니다.  (DB, 웹서버 등)
pip install dj-database-url gunicorn psycopg2-binary whitenoise django-cors-headers
  1. settings.py 파일내에 INSTALLED_APPS, MIDDLEWEAR 부분에 설치한 라이브러리들을 등록하고 코드추가합니다.
INSTALLED_APPS = [
 	...
	'corsheaders',
]
MIDDLEWARE = [
	...	
	'whitenoise.middleware.WhiteNoiseMiddleware',
	'corsheaders.middleware.CorsMiddleware',
]

5-1 . 정적파일관련 환경 설정

PROJECT_ROOT = os.path.dirname(os.path.abspath(__file__))
STATIC_ROOT = os.path.join(PROJECT_ROOT, 'staticfiles')
STATIC_URL = '/static/'STATICFILES_DIR = [    os.path.join(PROJECT_ROOT, 'static'),]
STATICFILES_STORAGE = 'whitenoise.django.GzipManifestStaticFilesStorage'

5-2. DB관련

DATABASES = {
	'default' = {
    'ENGINE': 'django.db.backends.sqlite3',
	'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}
import dj_database_url
db_from_env=dj_database_url.config(conn_max_age=500)
DATABASES['default'].update(db_from_env)
  1. 설치한 라이브러리 리스트로 만듭니다. (필요한 라이브러리를 헤로쿠에 알려주기 위해)
pip freeze > requirements.txt
  1. runtime.txt 파일 만들기 (파이썬 버전을 입력해줘야 합니다)
python -V 버전 확인후 runtime.txt 파일 생성 후 아래와 같이 버전 입력
python-3.8.5      # 대소문자와 "-" 에 주의
  1. API 서버 등의 용도로 정적 파일이 필요없더라도 헤로쿠 배포를 위해 아래의 코드를 입력해줍니다.
setting.py 맨밑에 입력
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
  1. Procfile파일 생성.
web: gunicorn 프로젝트명.wsgi --log-file -
최상단 위치에서 Procfile 파일을 만들어야 되며 확장자는 필요없습니다.
프로젝트명은 django-admin startproject "프로젝트명" 의 명령어로 만든 프로젝트입니다.
위의 프로젝트명을 제대로 입력하지 않으면 배포과정에서 NOMODULE 라는 에러가 생기며 배포를 할 수 없습니다.
예시 : web: gunicorn config.wsgi --log-file -
  1. github 레포지토리에 내가 만든 장고 프로젝트를 올려야 합니다.

  2. heroku cli 를 설치해야합니다.

brew install heroku/brew/heroku
  1. heroku cli 설치가 완료 됐다면, 개발IDE 콘솔창에서 heroku 배포 명령어들을 입력합니다.
heroku login
    
# 헤로쿠에 로그인 
# 로그인 명령어 입력시 새로운 창이 뜨며 인터넷창에서 로그인을 요구합니다.    
# 로그인을 하면 자동으로 콘솔창에 로그인이 되었다고 뜹니다.
    
heroku create "생성하고싶은 서버이름"   			# 서버생성
    
git push heroku master                			# git 에 올린 파일들을 헤로쿠에 push 
    
heroku run python manage.py migrate   			# 서버에 데이터베이스 등록을 위해 
    
heroku run python manage.py createsuperuser     # DB 관리자 아이디 등록
    
heroku open                                     # 어플리케이션 에러 라는 메세지가 없다면 배포성공

0개의 댓글