Heroku는 Java, Node.js, Python등 여러 언어를 지원하는 클라우드 Paas
서비스형 플랫폼(Platform as a Service, PaaS)은 클라우드 컴퓨팅 서비스 분류 중 하나다. 일반적으로 앱을 개발하거나 구현할 때, 관련 인프라를 만들고 유지보수하는 복잡함 없이 애플리케이션을 개발, 실행, 관리할 수 있게 하는 플랫폼을 제공한다. SaaS의 개념을 개발 플랫폼에도 확장한 방식으로, 개발을 위한 플랫폼을 구축할 필요 없이, 필요한 개발 요소를 웹에서 쉽게 빌려쓸 수 있게 하는 모델
SECRET_KEY = '시크 릿키' # 기존의 시크릿 키를 아래와 같이 변경 후 삽입
SECRET_KEY = os.environ.get('DJANGO_SECRET_KEY', '기존의 시크릿키')
출처: https://zodlab.tistory.com/95 [조드군의 일상:티스토리]
DEBUG = bool( os.environ.get('DJANGO_DEBUG', True) )
ALLOWED_HOSTS = ['*']
__pycache__/
*.log
*.pot
*.pyc
*.py[cod]
.Python
venv/
db.sqlite3
.DS_Store
pip install dj-database-url gunicorn psycopg2-binary whitenoise django-cors-headers
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)
pip freeze > requirements.txt
python -V 버전 확인후 runtime.txt 파일 생성 후 아래와 같이 버전 입력
python-3.8.5 # 대소문자와 "-" 에 주의
setting.py 맨밑에 입력
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
web: gunicorn 프로젝트명.wsgi --log-file -
최상단 위치에서 Procfile 파일을 만들어야 되며 확장자는 필요없습니다.
프로젝트명은 django-admin startproject "프로젝트명" 의 명령어로 만든 프로젝트입니다.
위의 프로젝트명을 제대로 입력하지 않으면 배포과정에서 NOMODULE 라는 에러가 생기며 배포를 할 수 없습니다.
예시 : web: gunicorn config.wsgi --log-file -
github 레포지토리에 내가 만든 장고 프로젝트를 올려야 합니다.
heroku cli 를 설치해야합니다.
brew install heroku/brew/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 # 어플리케이션 에러 라는 메세지가 없다면 배포성공