본문 바로가기
Web/FastAPI

Windows에서 FastAPI를 서비스로 배포하는 방법

by 스퀴시 2024. 11. 2.
728x90
SMALL

개요
FastAPI는 Python으로 작성된 고성능 웹 프레임워크로, 백엔드 API 개발에 널리 사용되고 있습니다. Windows 환경에서 FastAPI를 서비스로 배포하면, 서버 재부팅 시 자동으로 시작하고 쉽게 관리할 수 있어 운영 환경에서 유용합니다. 이번 글에서는 FastAPI를 Windows 서비스로 등록하고, Python 가상환경을 통해 실행하는 방법을 설명합니다.


1. 사전 준비 사항

Windows 서비스로 배포하려면 다음을 준비해야 합니다:

  • FastAPI 프로젝트가 있는 Python 가상환경
  • Windows 서비스 매니저 도구인 NSSM (Non-Sucking Service Manager)

NSSM을 사용하면 FastAPI 서버를 쉽게 Windows 서비스로 등록하고, 서버 재부팅 시 자동으로 실행되도록 설정할 수 있습니다.


2. FastAPI 프로젝트 및 가상환경 설정

먼저, FastAPI 프로젝트 디렉토리로 이동한 후 가상환경을 생성하고 필요한 패키지를 설치합니다.

cd your_project_directory
python -m venv venv

가상환경을 활성화하고 FastAPI 및 Uvicorn을 설치합니다.

# 가상환경 활성화
venv\Scripts\activate

# FastAPI 및 Uvicorn 설치
pip install fastapi uvicorn

이제 프로젝트가 가상환경 내에서 실행될 준비가 되었습니다.


3. NSSM 설치 및 Windows 서비스로 등록

NSSM을 사용하면 Python 가상환경을 통해 FastAPI 서버를 Windows 서비스로 실행할 수 있습니다.

3.1 NSSM 설치

  1. NSSM 공식 사이트에서 NSSM을 다운로드합니다.
  2. 압축 파일을 해제한 후 nssm.exe 파일을 C:\Windows\System32에 복사합니다. 이렇게 하면 NSSM을 명령어로 사용할 수 있게 됩니다.

3.2 NSSM으로 FastAPI 서비스 등록

  1. 관리자 권한으로 명령 프롬프트를 실행한 후, NSSM을 통해 새로운 Windows 서비스를 등록합니다.

     nssm install FastAPI_Service
  2. NSSM 설정 창이 열리면 다음 정보를 입력합니다:

    • Application Path: 가상환경의 python.exe 경로를 입력합니다.

      • 예: C:\path\to\your_project_directory\venv\Scripts\python.exe
    • Startup directory: FastAPI 프로젝트 경로를 지정합니다.

      • 예: C:\path\to\your_project_directory
    • Arguments: uvicorn main:app --host 0.0.0.0 --port 8000

      • 여기서 main은 FastAPI 애플리케이션 파일명(main.py)이며, app은 FastAPI의 인스턴스 이름입니다.
  3. 모든 설정이 완료되면 Install service 버튼을 클릭하여 서비스를 등록합니다.


4. 서비스 시작 및 확인

등록한 서비스를 시작하려면 다음 명령어를 사용합니다.

nssm start FastAPI_Service

또는 서비스 관리자를 통해 시작할 수도 있습니다:

  1. Windows 키 + R을 눌러 "services.msc"를 입력하고 엔터.
  2. FastAPI_Service를 찾아 우클릭 후 시작을 선택합니다.

서비스 실행 확인

브라우저에서 http://localhost:8000로 접속하여 FastAPI 애플리케이션이 정상적으로 실행되는지 확인합니다. FastAPI의 Swagger 문서는 http://localhost:8000/docs에서 확인할 수 있습니다.


5. 서비스 관리 명령어

Windows 서비스 관리 명령어를 통해 FastAPI 서비스를 시작, 중지, 삭제할 수 있습니다.

# 서비스 중지
nssm stop FastAPI_Service

# 서비스 삭제
nssm remove FastAPI_Service confirm

이렇게 하면 FastAPI 애플리케이션이 Windows 서비스로 등록되며, 서버 재부팅 시 자동으로 실행됩니다.


결론

이번 글에서는 FastAPI 애플리케이션을 Windows 서비스로 배포하여 운영 환경에서 안정적으로 실행되도록 설정하는 방법을 알아보았습니다. NSSM을 통해 간편하게 서비스로 등록하고 관리할 수 있으며, Python 가상환경을 이용해 프로젝트의 의존성을 분리하여 배포할 수 있습니다.

이를 통해 FastAPI 애플리케이션을 윈도우 환경에서 안정적이고 효율적으로 운영해보세요!

LIST