IIS에 Django 설치: 단계별 자습서

게시 됨: 2022-03-11

많은 Django 개발자가 이를 신성 모독이라고 생각할 수 있지만, 특히 Windows 생태계를 기반으로 인프라를 기반으로 하는 클라이언트와 작업할 때 Windows/IIS에 Django 응용 프로그램을 배포해야 하는 경우가 있습니다. " 신성 모독 " 부분은 실제로 Unix 환경을 대상으로 하는 Django 에서 비롯되었으며 WSGI, FastCGI 및 명령줄 도구와 같은 기능에 크게 의존하며 모두 Windows와는 다릅니다. 다행스럽게도 Django/IIS 호환성은 방정식의 Windows 및 Python+Django 측 모두에 기능이 추가되어(그렇지 않으면 문제가 될 수 있음) 이 두 가지 서로 다른 기술 세계 간의 호환성 문제를 해결하는 데 도움이 되어 개선되고 있습니다.

이 짧고 집중적인 튜토리얼은 Windows에서 Django 프로젝트의 기본 설정을 안내합니다. Python, Django 및 Django 프로젝트를 독립 실행형 및 FastCGI 서버로 실행하는 것을 포함하여 관련 도구의 설치를 다룹니다. IIS가 이제 공식적으로 FastCGI를 지원하기 때문에(IIS 7+에서는 CGI 기능을 설치하기만 하면 됨) 후자의 중요성이 점점 더 커지고 있습니다.

참고: 이 자습서는 Windows에 대해 제대로 이해하고 있고 IIS 관리 콘솔에 익숙한 사용자를 대상으로 합니다. 이 튜토리얼에서 사용하는 IIS의 버전은 8.5이지만 설명과 기술은 이전 버전과 비슷합니다. 이 튜토리얼은 Python 2.7과 Django 1.7을 기반으로 합니다. 왜냐하면 그것들은 제가 프로젝트에 사용하는 버전이기 때문입니다. 여기에서 다른 Django 튜토리얼을 찾을 수 있습니다.

전문가 팁: 여러 Django(또는 일반 Python) 프로젝트를 배포하려는 경우 또는 개발자인 경우 격리된 Python 환경을 만들기 위한 도구인 virtualenv를 살펴봐야 합니다.

윈도우에 파이썬 설치하기

먼저 파이썬을 다운로드합니다. 32비트 및 64비트 MSI 설치 프로그램이 모두 제공되며 설치하려는 시스템에 적합한 설치 프로그램을 선택해야 합니다.

PIP의 기초

PIP는 Python 라이브러리를 설치하고 유지 관리하는 도구입니다(Django는 하나의 예일 뿐입니다). 명령 프롬프트에서 pip 명령을 실행하여 호출됩니다. 여러 하위 명령을 구현하며 가장 유용한 두 가지 명령은 installfreeze 입니다. PIP는 또한 프로젝트에 종속성(추가 라이브러리)이 설치되어 있는 경우 프로젝트에 설치합니다.

pip install <package_name> 을 실행하면 패키지와 모든 종속성(중첩되고 상당히 복잡할 수 있음)이 다운로드되고 설치됩니다. pip install --upgrade <package_name> 을 실행하면 기존 패키지도 최신 버전으로 업그레이드됩니다. PIP는 "최신 버전" 대신 정확한 버전의 패키지를 설치하기 위한 특수 구문을 지원합니다. 이는 패키지 이름에 연산자와 버전 번호를 추가하여 수행됩니다. 예: "Jinja2==2.7.3"(정확한 버전 설치) 또는 "six>=1.8"(지정된 버전 번호보다 크거나 같은 버전 설치).

pip freeze 를 실행하면 현재 설치된 패키지 목록이 pip install 에서 직접 사용할 수 있는 형식으로 표시됩니다.

일부 Python/PIP 패키지는 C로 작성된 라이브러리와 함께 제공되며 패키지가 작동하려면 컴파일해야 합니다. Python 실행 파일과도 호환되는 작동하는 C 컴파일러를 갖도록 시스템을 설정하지 않으면 그러한 패키지를 설치할 수 없습니다. Django는 순수 Python 라이브러리이므로 C 컴파일러를 설치할 필요가 없습니다.

Python 2.7.9 이상을 설치하는 것이 중요합니다. Python 버전 2.7.9에는 이 튜토리얼의 다른 모든 것을 설치하는 데 사용되는 Python 라이브러리/패키지/소프트웨어 관리자인 PIP가 포함되어 있습니다.

설치 프로세스는 매우 간단하고 간단합니다. C:\Python27 디렉토리에 Python을 설치할 것을 제안합니다. 이후에 더 쉽게 사용할 수 있으므로 이를 수락해야 합니다. 이름에 공백이 있는 디렉토리에 물건을 설치하는 Windows 습관에 굴복하지 마십시오.

설치 후 기본 디렉토리에는 약 8개의 하위 디렉토리, 기타 파일 및 Python.exePythonW.exe 라는 두 개의 실행 파일이 포함됩니다. 전자는 기본 명령줄 인터프리터 및 Python 셸인 반면 후자는 호출되는 경우 콘솔 창을 사용(또는 생성)하지 않는 인터프리터일 뿐이므로 GUI Python 응용 프로그램을 실행하는 데 적합합니다.

다음으로 시스템의 PATH 환경 변수에 Python을 추가해야 합니다. 고급 탭의 고급 시스템 설정 (또는 시스템 속성 )에서 환경 변수 버튼을 클릭하면 됩니다. 추가할 두 개의 디렉토리가 있습니다: C:\Python27C:\Python27\Scripts . 세미콜론( ; )으로 구분하여 PATH 목록에 추가해야 합니다. PATH 변수의 끝은 ;C:\Python27;C:\Python27\Scripts 합니다.

전문가 팁: Cygwin과 유사한 Unix 명령줄 유틸리티의 경량 모음인 GOW를 설치할 수도 있습니다. ls 와 같은 도구뿐만 아니라 make , wget , curl , ssh , scp , gziptar 와 같은 더 흥미로운 도구도 제공합니다.

Windows에 Django 설치하기

Django는 pip install django 와 같은 명령과 함께 PIP를 사용하여 설치할 수 있습니다. 시스템에 아직 존재하지 않는 경우 프로세스에서 일부 추가 종속성을 가져올 수 있습니다. 그렇지 않으면 다음과 유사한 출력과 함께 Django만 설치됩니다.

 Downloading/unpacking django Installing collected packages: django Successfully installed django Cleaning up...

새 Windows 명령 프롬프트를 시작하고, python 명령을 실행하고, Python 프롬프트에 import django 명령을 입력하여 Python과 Windows용 Django가 모두 작동하는지 확인할 수 있습니다. 제대로 작동하면 import django 명령 후에 출력이나 메시지가 없어야 합니다. 즉:

 Python 2.7.9 (default, Dec 10 2014, 12:24:55) [MSC v.1500 32 bit (Intel)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>> import django >>>

Windows에 Django 프로젝트 설치

Django "프로젝트"는 하나 이상의 "앱"으로 구성됩니다. 프로젝트의 최상위 디렉터리에는 일반적으로 설정 및 일부 일반 프로젝트 수준 정보가 포함된 하나의 특수 프로젝트 하위 디렉터리, 앱당 하나의 하위 디렉터리 및 manage.py 라는 명령줄 스크립트가 포함됩니다. 예를 들어:

 C:\Devel\djangoproject\src>dir Volume in drive C is OS Volume Serial Number is 6A3D-C1B8 Directory of C:\Devel\djangoproject\src 22/12/2014 04:25 <DIR> . 22/12/2014 04:25 <DIR> .. 22/12/2014 04:19 <DIR> project 22/12/2014 04:58 <DIR> djangoapp 16/12/2014 03:30 <DIR> templates 16/12/2014 00:50 250 manage.py 1 File(s) 250 bytes 5 Dir(s) 23,552,929,792 bytes free

Django 프로젝트는 전체 프로젝트 디렉토리를 보관하고 다른 시스템에서 압축을 해제하여 간단히 배포할 수 있습니다. 위의 예에서 프로젝트에는 project 하위 디렉터리, djangoapp 이라는 응용 프로그램 디렉터리 및 보조 templates 하위 디렉터리가 포함되어 있습니다.

manage.py 스크립트는 Django 애플리케이션의 "스위스 군용 칼"입니다. 새로운 앱 생성부터 데이터베이스 마이그레이션, 테스트(임베디드) HTTP 서버 또는 FastCGI 서버 실행에 이르기까지 모든 작업을 수행합니다.

테스트 HTTP 서버 실행

프로젝트와 해당 앱이 작동하는 경우 manage.py runserver 명령을 실행하여 기본 Django 개발 전용 HTTP 서버를 시작할 수 있어야 합니다. 그러면 다음과 유사한 출력이 표시됩니다.

 C:\Devel\djangoproject\src>manage.py runserver Performing system checks... System check identified no issues (0 silenced). December 23, 2014 - 01:19:02 Django version 1.7.1, using settings 'project.settings' Starting development server at http://127.0.0.1:8000/ Quit the server with CTRL-BREAK.

메시지에서 볼 수 있듯이 이것은 localhost, 포트 8000에서 서버를 시작합니다. 웹 브라우저에서 즉시 액세스할 수 있습니다.

FastCGI 서버 구성 및 실행

더 흥미로운 옵션은 FastCGI 서버를 활성화하는 것입니다. FastCGI를 사용하면 IIS, Apache 또는 기타 웹 서버를 사용하여 프로덕션 설정에서 애플리케이션을 제공할 수 있습니다. 이것이 작동하려면 fcgi.py(FastCGI를 통해 IIS가 있는 Windows에서 Django를 실행하는 Django 관리 명령)를 다운로드하고 Django 앱(프로젝트가 아님!) 하위 디렉터리의 management/commands 하위 디렉터리에 넣어야 합니다. managementcommands 하위 디렉터리에는 __init__.py 라는 빈 파일이 있어야 합니다 (해당 디렉터리를 Python 모듈로 전환).

fcgi.py 는 매우 간단하고 최소한의 WSGI to FastCGI 어댑터로 TCP 소켓이나 파이프에서 수신 대기를 지원하지 않으며 stdin 및 stdout`을 사용하여 모든 처리를 수행합니다. 따라서 nginx와 같은 최신 웹 서버에서는 사용할 없지만 IIS에서는 작동합니다.

FastCGI 응용 프로그램을 실행하도록 IIS 구성

FastCGI 모듈이 IIS(또는 단순히 IIS 7+의 CGI 모듈)에 로드되면 IIS 관리 콘솔에 "FastCGI 설정" 아이콘이 표시됩니다. Django는 자체 URL 라우팅이 있는 프레임워크이므로 Django 앱은 특정 경로에 대해 IIS에서 "처리기"로 설치되어야 합니다. IIS의 기본 웹 사이트 에 Django 앱을 설치하려면 관리 콘솔에서 해당 앱을 선택하고 핸들러 매핑 구성 기능을 엽니다. 여기에서 Add Module Mapping… 작업을 클릭하고 다음 정보를 입력합니다.

  • 요청 경로 : 내부 Django 라우팅으로 모든 요청을 처리하려면 \* 로 설정하십시오.
  • 모듈 : IIS의 FastCGI 모듈을 사용하려면 FastCgiModule 로 설정하십시오.
  • 실행 파일 : 여기에서 파이프 문자( | )를 구분 기호로 사용하여 python.exe 경로와 명령줄 인수를 모두 설정해야 합니다. 이 설정의 값 예: C:\Python27\python.exe|C:\app\src\manage.py fcgi --pythonpath C:\app\src --settings project.settings . manage.py 스크립트에 대해 fcgi 명령을 지정하고 프로젝트에 대한 Python 인터프리터의 검색 경로와 프로젝트의 설정 모듈에 대한 Python 모듈 이름을 수동으로 설정해야 합니다.
  • 이름 : 원하는 대로 설정할 수 있습니다.

구성 대화 상자는 다음과 같아야 합니다.

iis 구성 대화 상자

그런 다음 요청 제한 버튼을 클릭하고 매핑 탭을 편집합니다. "요청이 매핑된 경우에만 처리기 호출..." 확인란을 선택 취소합니다(그렇지 않으면 IIS에서 URL 요청의 하위 디렉터리라고 생각하는 것을 매핑하는 데 문제가 있음).

요청 제한

핸들러 정보 대화 상자에서 확인을 클릭하십시오. 그런 다음 IIS는 확인해야 하는 일치하는 FastCGI 응용 프로그램 항목의 생성을 확인하도록 요청합니다. 이 항목은 IIS 관리 콘솔의 루트 화면에서 액세스할 수 있는 FastCGI 설정 기능에서 볼 수 있습니다. IIS 자체에 의해 생성된 기본 항목은 적절하지만 다음과 같은 이점을 사용할 수 있는 몇 가지 선택적 설정이 있습니다.

  • 최대 인스턴스 : FastCGI 응용 프로그램을 실행하기 위해 사용하는 접근 방식은 단일 프로세스, 단일 스레드입니다. 즉, 각 동시 요청에 대해 별도의 Python 인터프리터 프로세스가 시작됩니다. 이 설정은 동시 Django 앱 인스턴스 수를 제한합니다.
  • 파일 변경 사항 모니터링 : 기본적으로 앱 프로세스가 시작되면 수동으로 종료되거나 인스턴스 MaxRequest 요청을 처리할 때까지 앱 프로세스가 활성화됩니다. 이 설정을 사용하여 IIS는 임의 파일의 타임스탬프를 모니터링하고 변경되면 앱 인스턴스를 중지하고 다시 로드합니다. 이는 변경 시 앱을 다시 로드할 수 있으므로 개발자와 프로덕션 환경 모두에 편리합니다. "다시 로드 표시기를 위한 파일 타임스탬프 모니터링"은 Windows에서 상당히 이상한 개념이지만 Unix와 같은 환경에서는 정상이므로 여기에서 FastCGI로 이어졌습니다.

FastCGI 응용 프로그램 추가

정적 리소스 및 미디어 디렉터리 구성

최신 웹 애플리케이션은 CSS, JavaScript 등과 같은 여러 리소스 파일을 사용하며 Django 앱도 예외는 아닙니다. Django는 개발자가 필요한 리소스를 응용 프로그램 디렉터리 트리에 통합할 수 있는 매우 편리한 기능을 제공하지만 Django에서 추출하여 적절한 정적 디렉터리로 복사할 수 있습니다. 이것은 기본적으로 개발자가 제어하는 ​​기능이며 Django가 정적 파일을 저장할 위치는 프로젝트의 settings.py 에서 제어됩니다. 선의로 행동하는 프로젝트는 이를 위해 합리적으로 정상적인 경로를 사용하지만 표준화되지 않았습니다.

업로드된 파일을 처리하는 앱은 Django에서 전통적으로 이름이 media 인 유사하게 관리되는 디렉토리에 파일을 저장합니다. staticmedia 디렉터리를 IIS 구성에 가상 디렉터리로 추가해야 합니다.

정적 리소스 및 미디어 디렉터리 구성

여기서 중요한 단계는 각 디렉토리에 대한 핸들러 매핑 기능을 재구성하고 Django App 핸들러를 제거하여 StaticFile 핸들러를 가장 중요한 것으로 남겨두는 것입니다.

static 디렉터리는 IIS(Django 프로젝트의 다른 모든 파일 및 디렉터리 포함)에서 읽을 수 있어야 하지만 media 디렉터리도 IIS에서 쓸 수 있어야 합니다. 최종 사이트 구성은 다음과 유사해야 합니다.

iis 사이트 구성 예

데이터베이스에 대한 참고 사항

SQLite는 Unix 계열 시스템에서와 같이 Windows에서 기본적으로 작동합니다. 다른 대부분의 오픈 소스 데이터베이스는 이제 Windows에서 작동하며, PostgreSQL도 제가 권장합니다. 그러나 기존 Windows 설치에서는 MS SQL Server와 함께 Django를 배포해야 할 수 있습니다. 이것은 ODBC 브리지 드라이버를 사용하거나 기본 MS SQL 드라이버를 사용하여 가능합니다. 이론적으로 둘 다 작동하지만 테스트하지는 않았습니다. 새 데이터베이스로 전환하려면 최소한 데이터베이스 연결 매개변수(프로젝트의 settings.py 파일에 있음)를 변경해야 합니다. 데이터 마이그레이션은 수동으로 수행해야 합니다.

SQLite 데이터베이스를 사용하는 경우 데이터베이스 파일과 이 파일이 있는 디렉토리 모두 IIS에서 쓸 수 있어야 합니다.

문제 해결

설명된 구성은 테스트를 거쳐 작동하는 것으로 입증되었지만 문제가 발생하는 경우 Windows용 Django 설치 문제를 해결하기 위한 몇 가지 기본 단계가 있습니다.

  1. FastCGI 명령줄을 직접 시작해 보십시오. 이것은 FastCGI 설정 에 구성된 명령이며 사이트에 대한 핸들러 매핑 에 구성된 명령과 일치해야 합니다.
  2. IIS용 추적 기능을 설치한 다음 실패한 요청 추적 규칙 의 Django 사이트에 대해 구성하여 모든 콘텐츠( ), 상태 코드 "500" 및 이벤트 심각도 "오류"를 추적합니다. 추적은 IIS의 C:\inetpub\logs\FailedReqLogFiles 디렉터리(또는 구성에 따라 유사한 디렉터리)에서 XML 파일(첨부된 XSLT 포함)로 사용할 수 있습니다. 그런 다음 *Configure->Failed request tracing… 작업에서 특정 웹 사이트(또는 가상 디렉터리)에 대한 추적을 활성화해야 합니다 .

결론

확실히 Django는 Unix 계열 환경에 맞게 조정되었으며 Django를 실행하는 가장 광범위하고 지원되는 방법은 Linux 시스템(예: uwsgi 및 nginx 사용)입니다.

그러나 이 튜토리얼에서 볼 수 있듯이 Windows에서 Django를 실행하는 데 많은 작업이 필요하지 않습니다. 설명된 단계 중 일부는 순수한 Windows 관점에서 직관에 어긋나는 것처럼 보일 수 있지만 필수이며 다행히 구성에 소요된 노력은 한 번뿐입니다. 일단 구성되면 Django 애플리케이션은 Linux 플랫폼에서와 거의 동일한 방식으로 작동해야 합니다.