본문 바로가기
Python/Common

IIS에서 Python(FastApi) 웹서버 올리기 (wfastcgi 이용)

by jiyoon_92 2025. 2. 27.
반응형

python 3.13

 

IIS 서버에 Python으로 만든 fastapi 웹서버 연동하기

 

1. IIS 서버에 Python, 관련 라이브러리 설치하기

먼저, IIS(Internet Information Services)는 윈도우 서버에서 제공하는 웹 서버 기능으로, 다양한 웹 애플리케이션을 운영할 수 있는 강력한 플랫폼이다. Python으로 작성한 FastAPI 서버를 IIS와 연동하면 윈도우 환경에서도 Python 웹 애플리케이션을 손쉽게 호스팅할 수 있다. 이 글에서는 IIS에 FastAPI를 연동하는 방법을 단계별로 설명하며, 각 단계별로 필요한 설정과 도구, 주의사항을 꼼꼼하게 다룬다. 전체적인 개요와 준비 단계부터 실제 연동 및 테스트, 배포 과정까지 하나씩 따라가면 IIS 환경에서 FastAPI 서버를 성공적으로 운영할 수 있다.

먼저 Python 환경과 FastAPI, 그리고 ASGI 서버인 Uvicorn을 설치하는 과정이다. Python은 공식 웹사이트(https://www.python.org/)에서 설치하고, pip를 이용해 FastAPI와 Uvicorn을 설치한다. 터미널에서 아래 명령어를 실행하면 된다.

pip install fastapi uvicorn

아래는 기본적인 fastapi 예제다.

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
def read_root():
    return {"message": "Hello, FastAPI on IIS!"}

if __name__ == "__main__":
    import uvicorn
    uvicorn.run(app, host="127.0.0.1", port=8000)

이 코드를 실행하면 로컬에서 FastAPI 서버가 시작되고, 브라우저나 curl 명령어를 통해 접속하여 정상 작동하는지 확인할 수 있다. 개발 환경에서 먼저 기능을 점검한 후, IIS 연동을 위한 준비를 마친다.

IIS에 Python 애플리케이션을 연동하려면 wfastcgi 모듈을 사용해야 한다. 먼저 pip를 통해 wfastcgi를 설치한다.

pip install wfastcgi

설치가 완료되면, wfastcgi-enable 명령어를 사용해 IIS와의 연동 설정을 자동으로 구성한다. 관리자 권한으로 명령 프롬프트를 열고 아래 명령어를 실행한다.

wfastcgi-enable

만약 환경에 따라 경로가 다르다면, 직접 프로젝트 폴더 내에 웹.config 파일을 작성해 설정할 수 있다.

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.webServer>
    <handlers>
      <add name="Python FastCGI" path="*" verb="*" modules="FastCgiModule" scriptProcessor="C:\Python39\python.exe|C:\Python39\Lib\site-packages\wfastcgi.py" resourceType="Unspecified" requireAccess="Script" />
    </handlers>
    <fastCgi>
      <application fullPath="C:\Python39\python.exe" arguments="C:\Python39\Lib\site-packages\wfastcgi.py" />
    </fastCgi>
  </system.webServer>
</configuration>

2. 사이트 생성하고 fastcgi 모듈 추가하기

사이트 생성

우클릭하여 사이트를 생성하는데 위에서 만든 프로젝트 폴더를 경로로 설정한다.

사이트 설정

처리기 매핑을 더블클릭하여, 모듈 매핑 추가를 클릭한다.

매핑 처리기 추가
모듈 매핑 추가

모듈을 FastCgiModule로 설정하고 실행 파일 옵션에는 python.exe 경로 | python라이브러리의 wfastcgi.py 경로를 넣어준다.

모듈 명은 임의로 정해준다.

요청제한 해제

요청제한에 들어가서 요청이 다음에 매핑되는 경우에만 처리기 호출 옵션을 해제하고 확인 클릭한다.


3. 서버 FastCGI 설정

IIS 서버를 다시 클릭하여 FastCGI 설정을 클릭한다.

fastcgi설정
애플리케이션 리스트

애플리케이션을 더블클릭하면 편집기가 뜬다.

애플리케이션 편집
환경변수 컬렉션 편집

환경변수를 편집하는데, PYTHONPATH 를 추가하고 value에 python.exe 경로를 넣어준다. WSGI_HANDLER에는 

wsgihandler 편집

a2wsgi 라이브러리를 설치하여 아래와 같은 코드를 넣어준다. "파일명.앱명" = app.wsgi_app 으로 환경변수를 설정해준다.

wsgi_app = ASGIMiddleware(app)
pip install a2wsgi

4. 프로젝트 폴더 권한 설정하기 (IIS_IUSRS) 권한 추가하기

프로젝트 폴더 권한 설정

Library와 python이 설치된 폴더의 권한을 위와 같이 IIS_IUSRS를 추가하여 모든권한 허용을 설정한다. 프로젝트 폴더도 마찬가지다. 나는 venv를 써서 프로젝트 폴더 내에 환경설정을 해놨기 때문에 프로젝트폴더에만 설정했다.


5. 마치며

삽질을 이번에 좀 많이 한 것 같은데 fastapi로 서버 만드는게 생각보다 간단하고, IIS랑도 궁합이 안맞을 것 같았지만 막상 붙여놓으니 잘 작동해서 다행이다.

반응형

댓글