→ 기존 장고 버전이 3.2 이상이라면 패스~
→ 아래 설치할 패키지 중 하나가 django 3.2 버전 이상 부터 적용 가능. 뭐였는지는 기억이 안난다..
💡 pip install --upgrade django==3.2→ 생성된 파일 깃허브에 올리면 됨.
DEBUG = False
ALLOWED_HOSTS = ['*']
CORS_ORIGIN_ALLOW_ALL = True
CORS_ALLOW_CREDENTIALS = True
INSTALLED_APPS = [
...
'corsheaders',
]
MIDDLEWARE = [
'corsheaders.middleware.CorsMiddleware', ## 이거 추가!! 위치 중요!!!
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'whitenoise.middleware.WhiteNoiseMiddleware', ## 이거 추가!!
]
환경 변수 분리를 다른 방법으로 사용 중이었어도 아래 get_env_variable
함수를 이용해 주세요.
def get_env_variable(var_name):
try:
return os.environ[var_name]
except KeyError:
error_msg = 'Set the {} environment variable'.format(var_name)
raise ImproperlyConfigured(error_msg)
SECRET_KEY = get_env_variable('DJANGO_SECRET')
.
.
.
# 데이터베이스는 AWS RDS Mysql 사용 했습니다.
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': get_env_variable('DATABASE'),
'USER': get_env_variable('DB_USER'),
'PASSWORD': get_env_variable('DB_PASSWORD'),
'HOST': get_env_variable('DB_HOST'),
'PORT': get_env_variable('DB_PORT'),
'OPTIONS':{
'init_command' : "SET sql_mode='STRICT_TRANS_TABLES'"
}
→ 이거 안 하면 배포후 admin 페이지에서 css가 적용 안된다.
import os
STATIC_ROOT = os.path.join(BASE_DIR, "static")
다음 명령으로 정적 파일 모으기 → 프로젝트 폴더에 static 폴더가 생성 됨 → 깃헙 레파지토리에 같이 올리면 됨
💡 python manage.py collestatic→ 이거 안 하면 배포후 미디어 파일 경로를 읽지 못 한다.
from django.views.static import serve
from django.urls import re_path
urlpatterns = [
.
.
re_path(r'^media/(?P<path>.*)$', serve, {'document_root':settings.MEDIA_ROOT}),
]
정적 파일을 위한 기존 아래 코드는 지워도 된다.
💡 urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)혹~시 static 파일도 필요하다면 위 방법과 같이 아래 url을 추가해 주면 된다.
urlpatterns = [
re_path(r'^static/(?:.*)$', serve, {'document_root': settings.STATIC_ROOT, },
]
아래 설정은 개발 하면서 썼겠지만 혹시 해서 써놓겠습니다.
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, "static")
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
DJANGO_SUPERUSER_USERNAME
- Django 슈퍼유저 usernameDJANGO_SUPERUSER_PASSWORD
- Django 슈퍼유저 passwordDJANGO_SUPERUSER_EMAIL
- Django 슈퍼유저 emailpython3 manage.py makemigrations && python3 manage.py migrate && python3 manage.py createsuperuser --noinput
python3 manage.py runserver 0:8000
보통 10분 이내로 되는것 같습니다.
Runnring 상태로 안 넘어가면 여기서 어떤 오류가 발생했는지 확인하세요!!
두 개 도메인 중 위에것은 제가 따로 만든 도메인으로 일단 무시하셔도 됩니다. 도메인 생성 및 연결 방법은 바로 알려 드리겠습니다.
로컬에서 개발 할때 장고 3.2 버전 미만에서 했다면 배포시 수행되는 migrate에서 아래 오류가 발생한다.
Auto-created primary key used when not defining a primary key type, by default 'django.db.models.AutoField'
django 3.2부터는 모델의 primary key의 속성을 설정해 줘야 한다. 아래 블로그를 참고하면 해결 가능하다.
https://uiandwe.tistory.com/1304
혹시 디비는 어떻게 해결하셨나요?
재배포시 배포 중에 저장된 디비는 날아가는거같아서요..