윈도우 PC에서 서비스할 프로젝트가 시작되었습니다.
윈도우에 Docker를 설치해서 하려다 번거로워서, ASP.NET 개발 할 때 IIS를 사용한 경험을 되살려서 IIS에 Flask서버를 가동하였습니다.
아래와 같은 환경에서 설정하였습니다.
- Anaconda3
- Windows 10
- python <= 3.8
아래는 도움받은 블로그 글입니다
https://blog.gapmoe.net/entry/IIS%EC%97%90-Flask-%EC%97%B0%EA%B2%B0%ED%95%98%EA%B8%B0
https://urame.tistory.com/entry/IIS%EC%99%80-Flask-Python-%EC%97%B0%EB%8F%99
1. IIS & CGI 설정
윈도우 OS에 설치되어 있는 IIS를 활성화해줘야합니다.
아래 처럼 '인터넷 정보 서비스(IIS)' 내 항목들과 'CGI'를 체크하여 확인을 누른 후 설치과정을 진행합니다
2. FLASK 실행을 위한 설정
다른 서버 어플리케이션과 달리 설정할 변수들이 많아 번거로울 수도 있지만 한 번 세팅해두면 의외로 IIS도 서버 관리에 장점이 많은 어플리케이션입니다.
1) python 실행 경로
먼저 Python은 Ananconda3에서 실행되는 환경입니다.
저 같은 경우 가상환경 이름은 'flask'로 지정했으며 python이 실행되는 인터프리터 경로는 아래와 같습니다
C:\anaconda3\envs\flask\python.exe
2) 필요한 파이썬 패키지
wfastcgi, flask 두 가지 패키지가 필요합니다.
아래 처럼 anaconda prompt에서 설치를 진행해줍니다.
(flask) C:\WINDOWS\system32> pip install wfastcgi
(flask) C:\WINDOWS\system32> pip install flask
3) flask 웹 서버 경로 설정
iis 가 정상적으로 설치되었다면
"C:\inetpub\" 디렉토리가 생성됩니다.
참고로 웹 브라우저상에서 'http://localhost' 경로를 호출하면 아래와 같은 페이지를 불러오게 되며, 기본적인 iis 설치가 완료된 상태임을 확인할 수 있습니다.
flask 프로젝트 경로는 아래의 경로에서 실행할 예정입니다.
C:\inetpub\flask
'wfastcgi.py'파일을 flask 프로젝트 폴더에 복사해줍니다.
저 같은 경우는 flask라는 anaconda3 가상공간에 wfastcgi 패키지를 설치하였으므로 해당 경로에서 파일을 찾을 수 있었습니다.
그리고 위 파일을 복사하여 flask 프로젝트에 복사해주고 'app.py'파일을 생성해줍니다
3. IIS와 Python Flask Mapping 설정
여기서 부터가 실제로 설정하는 단계입니다.
IIS 어플리케이션을 실행한 후 사이트 -> 웹 사이트 추가를 해줍니다.
'flask_test'라는 웹 사이트를 추가하였으며 포트는 '5000'으로 지정하였습니다
flask_test 웹 사이트의 처리기 매핑 설정 -> 처리기 매핑 클릭
우측 상단에 '모듈 매핑 추가',
아래 화면과 같이 설정값을 입력해줘야 합니다.
'파이썬 인터프리터 경로|프로젝트 내 wfastcgi.py 경로'
'|'기호로 연결된다는 점을 유의해야합니다.
C:\anaconda3\envs\flask\python.exe|C:\inetpub\flask\wfastcgi.py
마지막으로 FastCGI를 설정해줘야합니다.
IIS내 최상단 장치명 -> FastCGI 설정 클릭 -> 환경변수 설정하여 아래 두 개의 환경 변수를 설정합니다
NAME : PYTHONPATH
VALUE : C:\inetpub\flask (flask 프로젝트 폴더 경로)
---------------------
NAME : WSGI_HANDLER
VALUE : app.app
4. Flask Test 페이지 코드 입력
flask 프로젝트 폴더 내 'app.py'파일에 아래와 같은 코드를 입력합니다.
from flask import Flask
app = Flask(__name__)
@app.route('/')
def home():
return "Hello, World!"
if __name__ == '__main__':
app.run()
그리고 웹 사이트 생성하면서 설정한 포트(5000)로 접속하여 결과값을 확인합니다.
'Data infrastructure' 카테고리의 다른 글
Apple Silicon MacOS에 Tensorflow 설치 (M1 기준) (0) | 2024.05.01 |
---|---|
Ubuntu pytorch 설치 에러 ("ModuleNotFoundError: No module named 'torch_geometric'") (0) | 2024.04.22 |