Flask + IIS 로 윈도우에서 서비스하기

Flask로 만든 라이센스서버를 윈도우에 올려보기로 한다.

테스트할 환경은 다음과 같다.

  • OS : Microsoft Windows 10
  • Python : 3.6.8
  • Flask로 작성된 어플리케이션

 

Flask와 IIS

원래는 Flask로 만들었으니 IIS에 붙이려고 했다. 그런데 그게 쉽지 않았다. IIS에 온갖 설정과 에러와 싸우며 조금씩 전진했지만 나는 지쳐갔고 정말 이게 최선인가…? 하는 생각이 들기 시작했다. 어차피 플라스크만으로도 괜찮은 웹서버 아니었던가? 굳이 IIS와 연동이 왜 필요한가? 에서 답을 찾지 못했다.

아파치나 nginx와 연동도 있었지만 이건 결국 플라스크로 만든 어플리케이션을 띄워놓은 상태에서 웹으로 들어오는 요청만 프록시 처리해주는 방식이라 더 의미 없는 것 같았다.

그래서 이걸 아예 윈도우서비스로 올릴 수 있으면 어떨까 싶었다.

 

Web.config 파일 생성

https://docs.microsoft.com/ko-kr/visualstudio/python/configure-web-apps-for-iis-windows?view=vs-2019

웹페이지를 보며 설정한다.

간단하게 web.config 파일만 생성해주면 되었다.

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.webServer>
    <handlers>
      <add	name="PythonHandler"
            path="*"
            verb="*"
            modules="FastCgiModule"
            scriptProcessor="C:\Python\Python36\python.exe|C:\Python\Python36\Lib\site-packages\wfastcgi.py"
            resourceType="Unspecified"
            requireAccess="Script" />
    </handlers>
    
  </system.webServer>
  
  <appSettings>
      <add key="PYTHONPATH" value="D:\license_server"/>
      <!-- The handler here is specific to Bottle; see the next section. -->
      <add key="WSGI_HANDLER" value="runserver.application"/>
      <add key="WSGI_LOG" value="D:\logs\wfastcgi.log"/>
  </appSettings>
</configuration>

 

wfastcgi-enable 실행

cmd를 관리자 권한으로 열고, 파이썬 프로그램이 있는 곳에 가서 wfastcgi-enable 을 실행해준다.

 

IIS에서 사이트를 생성하고 접속해본다.

 

파일을 생성하고 실행하니 이상하게도 config 파일을 읽어오지 못하는 문제가 발생했다. 경로도 모두 맞는데 파일을 읽지 못하는 현상.

확인해봤더니 root 경로를 잘못 잡고 있었다. 경로 밑에 config 파일을 넣어주니 해결

 

참고자료

Python stdlib source files not found 에러 해결방법

파이썬 개발환경을 만들기 위해 이클립스에 PyDev를 설치하고 환경을 맞추다보니 에러가 생긴다.

문제 화면은 다음과 같다.

Python stdlib source files not found. 라는 에러인데… (파이썬도 stdlib 라는 라이브러리가 있나보다. 신기하다.) 맥에는 파이썬이 기본으로 설치되어 있는데 왜 안될까 해서 쉘에서 설치여부를 확인해봐도 여전히 설치되어 있음. 미치고 환장할 일이다.

구글을 한참 뒤지고 stackoverflow로 한참 뒤지다보니 여러가지 해결방법이 보인다. 파이썬 홈페이지 가서 파이썬 패키지를 다시 깔면 된다고 하는데 이렇게 하면 파이썬 버전이 3버전대로 업그레이드 되는게 문제다. 난 지금 있는 맥의 환경이 좋은데다가 앞으로 할 작업도 2.7 이하 버전이 필요하기 때문에 이 방법은 패쓰.

그러다가 한가지 URL을 찾았다.

http://stackoverflow.com/questions/11702139/pydev-debugger-unable-to-find-real-location-for-python-2-7-after-os-10-8-upgrad

Mac OSX 10.8로 업그레이드 한 경우에는 Command Line Tools를 설치해야한다는 것. 나도 10.7에서 업그레이드해서 설치한 것이라 이 링크가 도움이 될 것 같았다. 밑에 어떤 사람이 리플로 Xcode가 설치되어 있다면 Preference에 Download에 가면 된다고 해서 Xcode를 켜고 가보니 정말로 Install 버튼이 활성화 되어 있었다. 이것을 설치하고 나니 위 에러가 싹 사라졌다.

만약에 Xcode가 없는 사람이라면 https://developer.apple.com/downloads/index.action?=command%20line%20tools 에서 다운로드 받을 수 있다.

다시 이클립스를 켜고 PyDev 프로젝트를 생성해보니 잘 된다! 이로써 파이썬 2.7 설치환경은 완료.

이클립스에 PyDev 설치하기

파이썬을 개발하기 위해 이클립스에 PyDev를 설치한다.

PyDev가 실행될 수 있는 환경은 http://www.pydev.org/download.html 에 자세히 나와있다. 별로 특이한 점 없고 이클립스를 사용해왔던 환경이라면 이정도는 무난히 충족되는 환경일거라고 생각한다.

설치과정은 에 http://khmirage.tistory.com/404 잘 나와있다. 이분도 맥에서 이클립스를 쓰시는구나. 🙂

쉽게 이클립스에서 인스톨 URL에 http://pydev.org/updates 만 입력해주면 된다는 것만 기억하면 된다. 중요한건 Aptana를 쓸 때와 이클립스를 쓸 때 등등 여러가지 환경에서 설치URL이 틀리다. 이런 귀찮음을 방지하기 위해서는 역시 그냥 오리지널 이클립스만 쓰는 것이 제일 나은 것 같다.

여튼 인스톨 URL만 잘 입력해주면 별로 어렵지 않게 설치된다.

중요한 점 하나. 중간에 인증관련한 화면이 한번 나오는데 체크박스에 꼭 체크를 해줘야한다. 안 그러면 설치가 중지된다. ㅡㅡ;; 이클립스 플러그인 중에 이런 화면은 또 처음 봤다.

잘 설치가 되었다면 새 프로젝트 생성할 때 PyDev라는 항목이 생긴다.