모에모에 코딩

IIS에 Flask 연결하기 본문

개발 일기/이것 저것

IIS에 Flask 연결하기

hazimenya 2019. 8. 27. 17:43
반응형

C#과 담을 쌓고 지내왔었기 때문에 당연히 ASP.NET 사용 방법을 몰라왔고, 그 녀석이 존재 하는지도 몰라 왔었다. 하지만 회사 내에서 제 파트는 ASP.NET을 사용했기 때문에 어거지로 공부를 시작했고, 야매스럽긴 하지만 나름 짬을 먹은 지금으로선 간단한 개발엔 문제가 없는 수준까진 올라올 수 있었다.

물론 하루하루가 늘 배움의 시작이기 때문에 의외로 모르는 부분이던가 아직 못 해본거라 던가 너무나 많다.

하지만 늘 신경 쓰이는게 있었으니. 정말로 C#은 쓰기 싫었다. 나는 정말로 Python을 쓰고 싶었단 말이다!

쓰기 싫으면 트집을 잡을 건덕지를 찾아 보았다.

I WANT PYTHON

트집 잡기

첫째로 리눅스 장비에 탑제하기가 어려웠다.

MS 홈페이지에 들어가 보면 .NET Framework 는 윈도우 장비만을 위한 프레임 워크라고 한다. 근데 우리는 ASP.NET Framework 를 사용하고 있으니 크로스 플랫폼 지원이 여간 까다로운게 아니었다. 물론 mono를 사용하면 어캐어캐 된다고는 듣긴 했다. 그래도 지원이 어려운건 사실이었으므로 당연히 서버는 윈도우 서버를 사용하기 위해 라이선스를 구매하여 사용해왔고 자연스럽게 단가는 올라갈 수 밖에 없었다.

둘째로 개발 장벽이 나름 높다.

처음 공부할 땐 웹에 관해 잘 모르는 점도 있긴 했었지만, 알아야 할 것들이 너무나 많았다. 서점에 책을 사러 갔을 때도 무슨 책을 사는 것이 아닌 무기를 샀다는 느낌이었다. 얇은 책도 있긴 했지만 차차 알아가기 까지는 꽤 시간이 걸렸던 것 같다. 6개월 정도가 소요되었던 것으로...

근데 flask는? 공식 사이트 들어가서 빠르게 시작하기 한 페이지만 따라 해도 기본적인 웹 서비스 구축이 가능했다.

셋째로 추후 머신러닝 프로젝트를 도입할 것 같다.

사장님과 회의를 할 때가 있었는데 머신러닝, 통계 쪽을 눈 여겨 보시는 것 같았다.

C# 으로도 당연히 머신 러닝을 할 순 있었다. 하지만 pythontensorflow 혹은 scikit learn을 이용하여 개발한 문서나 문제 해결 내역이 우리에겐 더 익숙했다.

서론이 너무 길었다. 본론으로 들어가자면, 아직까진 사내에선 윈도우 장비를 사용하는 것이 익숙했으므로 IIS를 이용한 Flask 기본 앱 연결 및 호스팅 하는 방법에 대해 기록하려 한다.

작업환경

AWS Lightsail Windows Server 2016

Python 3.7.4

Flask 1.1.1

소스 코드

app.py
from flask import Flask
app = Flask(__name__)

@app.route("/")
def hello():
    return "Hello from FastCGI via IIS!"

if __name__ == "__main__":
    app.run()
wfastcgi.py

이건 pip install wfastcgi 로 설치 후 site-packages 폴더 들어가보면 wfastcgi.py 가 같이 딸려 설치 된다 빼오면 된다.

설치 과정

우선 IISCGI를 설치해야 한다. CGI를 사용하는 이유는 웹 서비스를 하기 위해 내부 프로그램의 결과를 HTML 형식으로 반환해주기 위한 일종의 인터페이스이며, 우린 Python을 사용한 웹 서비스를 할 것이기 때문에 변환장치로 사용하는 것 이다. 라고 말 하는게 맞는지는 모르겠다.

Server Manager > Add roles and features > IIS > Management Service + CGI 선택 후 설치 진행 하면 일단은 IISCGI 설치가 자동으로 진행된다. 이 후 웹 브라우저로 localhost 접속 시도를 하여 테스트 페이지가 표시되는지 확인 하면 된다.

C:\inetpub 하위 디렉토리를 하나 생성하여 위에 준비했던 app.py, wfastcgi.py 를 넣어 준다.

IIS 에서는 새 웹 사이트를 생성한다.

Handler Mappings에서 Add Module Mapping 클릭 후

  • Request path:

*

  • Module:

FastCgiModule

  • Executable (optional):

C:\<INSTALLED PYTHON DIRECTORY>|C:\<INSTALLED FLASK WEB APP DIRECTORY>\wfastcgi.py

  • Name:

<WHAT YOU WANT>

작성 후

Request Restrictions > Mapping > Invoke handler only if request is mapped to

체크박스를 체크 해제 해준다.

서버 정보(Root) 로 이동 후

이미 추가 되어 있을 텐데 해당 항목을 더블 클릭 후, Environment Variables > Add

  • Name:

PYTHONPATH

  • Value:

<FLASK WEB INSTALLED PATH>

  • Name:

WSGI_HANDLER

  • Value:

app.app

크롬 브라우저로 자신이 만든 사이트의 포트번호를 통해 접속을 시도하면 위와 같은 에러 메시지가 표시될 것이다.

파이썬을 서버 환경에 처음 설치하였으니 flask 프레임워크가 설치되지 않아 생긴 문제인데 간단하다.

pip install flask 하면 해결 된다.

앞으로 더 많은 곶통이 시작되겠지만 어쨌든 환경 설정은 되었으니 끝!

반응형

'개발 일기 > 이것 저것' 카테고리의 다른 글

HTTPS 검열 뚫어보기  (0) 2019.02.13