Python Django 프로젝트 IIS 설정
Django 프로젝트를 IIS서버를 통해 접속할 수 있도록 설정해보자.
기본 프로젝트와 가상환경 설정은 아래 포스트 참조
VSCode] 윈도우 환경에서 Python, Django 개발환경 세팅 (tistory.com)
1. IIS, CGI 설치
브라우저를 열고 http://localhost 에 접속해보자.
기본 IIS page를 확인할 수 있다.
2. python 가상환경에 wfastcgi 설치
IIS가 request를 Django로 전달할 수 있도록 wfastcgi를 설치한다.
가상환경 활성화 된 상태에서 wfastcgi를 설치한다.
(DjangoFirstAppVenv) PS C:\Project\DjangoFirstApp>pip install wfastcgi
3. IIS에서 FastCGI 설정
FastCGI 설정 > 애플리케이션 추가
전체경로 : C:\Project\DjangoFirstApp\DjangoFirstAppVenv\Scripts\python.exe
인수 : C:\Project\DjangoFirstApp\DjangoFirstAppVenv\Lib\site-packages\wfastcgi.py
환경변수:
Name : WSGI_HANDLER, Value : django.core.wsgi.get_wsgi_application()
Name : PYTHONPATH, Value : C:\Project\DjangoFirstApp\myproject
Name : DJANGO_SETTINGS_MODULE, Value : myproject.settings
4. IIS에 사이트 추가
사이트 > 웹 사이트 추가
사이트이름 : DjangoFirstApp
실제 경로 : C:\Project\DjangoFirstApp\myproject
포트 : 81
추가된 DjangoFirstApp 사이트에 FastCGI handler 매피ㅣㅇ
DjangoFirstApp 홈 > 처리기 매핑 > 모듈 매핑 추가
요청 경로 : *
모듈 : FastCgiModule
실행 파일(옵션) : C:\Project\DjangoFirstApp\DjangoFirstAppVenv\Scripts\python.exe|C:\Project\DjangoFirstApp\DjangoFirstAppVenv\Lib\site-packages\wfastcgi.py
이름 : DjangoFirstAppHandler
확인 후 뜨는 prompt에서 아니오 선택
5. 사이트 실행 확인
http://localhost:81 정상접속 확인
6. Static Files 설정
Django 프로젝트 생성 시, 기본으로 포함된 admin 경로를 접속해보면 화면이 이상하게 보인다.
IIS는 Django 앱의 static files 경로를 모르기 때문에 로딩하지 못한다.
C:\Project\DjangoFirstApp\myproject\myproject\settings.py
settings.py 파일에 STATIC_ROOT를 추가한다.
STATIC_URL = 'static/'
STATIC_ROOT = 'static/'
C:\Project\DjangoFirstApp\myproject\myproject\urls.py
urls.py 코드를 아래와 같이 수정한다.
from django.contrib import admin
from django.urls import path
from django.conf import settings
from django.conf.urls.static import static
urlpatterns = [
path('admin/', admin.site.urls),
] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
앱 내에 위치한 static files를 한곳에 모으기 위해 아래 명령어를 실행한다.
(DjangoFirstAppVenv) PS C:\Project\DjangoFirstApp\myproject> python manage.py collectstatic
127 static files copied to 'C:\Project\DjangoFirstApp\myproject\static'.
해당 경로에 static files이 복사되었다.
브라우저 새로고침하면 static files가 정상 로드된 것을 확인할 수 있다.