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 파일을 넣어주니 해결

 

참고자료

Windows에서 Jenkins 설치하기

CentOS에서 Jenkins를 설치하는 글을 썼었는데 이제는 윈도우에서 설치해보기로 했다.

Jenkins 홈페이지에 보면 젠킨스를 여러가지 버전으로 제공하고 있다. 각 운영체제에 맞도록 인스톨러를 제공하고 있다. 톰캣 따로 설치해서 설정하는게 귀찮아서 그냥 Windows Stable Installer 버전으로 다운로드 받고 설치한다.

http://127.0.0.1:8080 에 접속해보면 젠킨스 화면이 나온다.

빨강색 글씨에 있는 경로를 찾아사 initialAdminPassword 의 암호를 입력해준다. Setup Wizard가 실행되면 따라서 진행한다. 플러그인을 수동으로 선택하여 설치할지 추천하는 플러그인을 설치할지 나오는데 난 그냥 귀찮아서 제안하는대로 설치했다.

플러그인을 잠시 설치하고 나면 관리자 계정을 생성한다. 관리자 계정까지 생성하고 나면 http://localhost:8080/ 로 들어가면 젠킨스가 실행된다.

 

2019년 3월 6일 추가

윈도우용 톰캣을 설치하고 webapps 디렉토리에 jenkins.war 파일을 넣고 실행하면 위와 같은 화면이 나오지만 initialAdminPassword 파일의 경로가 다르다.

C:\WINDOWS\system32\config\systemprofile\.jenkins\secrets\initialAdminPassword

이 경로의 파일을 요구하게 된다. 하지만 이 경로에 들어가봐도 이 파일은 존재하지 않는다.

이런 경우에는 로그 파일을 찾아봐야 한다. jenkins 디렉토리에서 logs 디렉토리로 간다음 catalina 로그파일을 열어서 password 로 검색해보면 생성된 암호를 찾을 수 있었다.