• 카테고리

    질문 & 답변
  • 세부 분야

    풀스택

  • 해결 여부

    미해결

실제 서비스를 올릴 시 DEBUG = False 로 변경한 뒤 업로드 해야하는 것으로 알고있습니다.

19.11.13 23:13 작성 조회수 2.33k

0

하지만 프로젝트 setting.py에서 DEBUG를 False로 변경하는 순간 static과 media가 반영되지 않던데 해결책이 있을까요?

답변 1

답변을 작성해보세요.

0

안녕하세요. 말씀하신대로, Django는 DEBUG=False로 해서 서비스하는 것이 보안상 이롭습니다. 그러나 이를 위해서는 Apache나 Nginx로 웹서버를 설정하여 운영하는 것이 정석입니다. 아쉽게도 본 강좌는 웹 개발에 초점을 맞추었기 때문에 Apache나 Nginx를 사용하는 방법을 다루고 있지 않습니다. 

Apache나 Nginx를 설정하는 정석은 아니지만, 현재 상태에서도 DEBUG=False로 운영하는 방법을 설명드리겠습니다. 

일단 static 파일을 활성화 시키는 방법입니다. 

python manage.py runserver --insecure

커맨드 창에서 뒤에 --insecure를 붙여서 실행시켜주세요. 그리고 브라우저를 열어보시면 CSS, JS 파일들이 반영되어 있을겁니다. 

하지만, 현재 상태로는 media 파일들이 제대로 연결되어 있지 않습니다. 

settings.py가 있는 프로젝트 폴더 (영상 그대로 따라하셨다면 my_site_prj 폴더)에 있는 urls.py를 열어주세요. 

맨 위에 아래 두 줄을 추가해주세요. 

from django.views.static import serve
from django.urls import re_path

그리고, urlpatterns를 아래와 같이 수정해주세요. 

urlpatterns = [
path('blog/', include('blog.urls')),
path('admin/', admin.site.urls),
path('markdownx/', include('markdownx.urls')),
path('accounts/', include('allauth.urls')),
re_path(r'^media/(?P<path>.*)$', serve, {'document_root':settings.MEDIA_ROOT}), # 이부분 추가!!
path('', include('basecamp.urls')),
]

이제 브라우저를 refresh 보세요. 

더 안전하고 안정적인 서버 운영을 하고 싶다면, 앞서 말씀드린대로, Apache나 Nginx를 활용하여 운영하는 방법을 찾아보시기 바랍니다.