웹 서버(Apache)와 연동
웹 애플리케이션 개발 완료 후 실제 서비스를 위해 개발 환경 => 운영 환경으로 옮겨야 함
즉, 설정 사항 변경 필수
1) mod_wsgi 확장 모듈
아파치에서는 웹 서버 관련해서 여러 확장 모듈을 제공
여러 확장 모듈 중 파이썬 웹 애플리케이션을 실행할 수 있는 mod_wsgi을 소개
mod_wsgi = 파이썬 웹 애플리케이션 표준 규격인 WSGI(Web Server Gateway Interface)를 구현한 확장 모듈
즉, 아파피(Apache)에서 파이썬 웹 애플리케이션을 실행하는데 사용
2) Django의 웹 서버 연동 원리
프로젝트 뼈대를 만들 때, 프로젝트이름/wsgi.py 파일이 생성
이 모듈이 Django와 웹 서버를 연결하는데 필요한 모듈
wsgi.py 모듈 안에 WSGI 규격에 따라 호출 가능한 웹 애플리케이션 객체를 정의
객체명은 반드시 application으로 정의
이 application 객체는 아파치같은 사용 웹 뿐만 아니라, Django 개발용 웹 서버(runserver)에서도 같이 사용
아파치 | runserver |
httpd.conf 설정 파일에서 WSGIScriptAlias 지시자를 통해 지정 | settings.py의 WSGI_APPLICATION 변수를 통해 지정 |
즉, 웹 서버는 이 application 객체를 호출하여 Django 애플리케이션을 실행
하지만 application 객체를 호출하기 전에 현재 프로젝트 및 모든 애플리케이션들에 대한 설정 정보를 로딩해야함
이 설정 정보를 담고있는 settings 모듈 위치 지정 방법
아파치 | runserver |
wsgi.py에서 설정 정보 지정 import os os.environ['DJANGO_SETTINGS_MODULE'] = '프로젝트명. settings' |
실행 시 지정 python manage.py runserver --settings = 프로젝트명.settings |
3) 상용 서버 적용 전 Django 설정 변경
아파치 같은 상용 웹 서버와 연동하는 단계는 개발용 웹 서버(runserver)에서 정상적으로 동작하는 것을 확인한 후 단계
상용 서버에 적용하기 전에 보안, 성능 등을 고려하여 설정을 변경해야함 - settings.py
- DEBUG 설정 값 - settings.py
개발 모드에서는 에러 발생 시 디버그를 위해 브라우저에 여러 정보 출력.
상용 모드에서는 보안을 위해서 출력하면 안됨
settings.py 에서 DEBUG = False 로 셋팅
- ALLOWED_HOSTS 설정 값
HTTP Host 헤더를 변조하여 CSRF 공격을 할 수 있기때문에 방지
ALLOWED_HOSTS = [ u '192.168.56.101' ]
- STATIC_ROOT
개발 서버에서는 이미지, css, js 등의 정적 파일들을 알아서 잘 찾아주지만,
사용 모드에서는 정적 파일들이 어디에 있는지 알 수 있도록 설정
STATIC_ROOT = os.path.join(BASE_DIR, "www_static")
이 STATIC_ROOT 항목은 Django의 collectstatic 명령 실행 시 정적 파일들을 한 곳에 모아주는 디렉토리
collectstatic 명령은 다음과 같이 실행
- python manage.py collectstatic
주의! STATICFILES_DIRS 항목에 STATIC_ROOT 항목에서 정의된 디렉토리가 포함되면 안됨
STATICFILES_DIRS 항목에 정의된 디렉토리에서 정적 파일을 찾아 STATIC_ROOT에 복사해주기 때문
'Django' 카테고리의 다른 글
6 - 필수적으로 알아야 하는 Django의 핵심 기능들 (0) | 2023.02.24 |
---|---|
5 - MVT 실제 코딩하기 (0) | 2023.02.07 |
4 - Django 프로젝트 & 애플리케이션 생성 (0) | 2023.02.05 |
3 - Django 이론 (0) | 2023.02.02 |
2 - 파이썬 웹 관련 라이브러리 이론 (0) | 2023.02.02 |