개요
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 설치
- NSSM 공식 사이트에서 NSSM을 다운로드합니다.
- 압축 파일을 해제한 후
nssm.exe
파일을C:\Windows\System32
에 복사합니다. 이렇게 하면 NSSM을 명령어로 사용할 수 있게 됩니다.
3.2 NSSM으로 FastAPI 서비스 등록
관리자 권한으로 명령 프롬프트를 실행한 후, NSSM을 통해 새로운 Windows 서비스를 등록합니다.
nssm install FastAPI_Service
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의 인스턴스 이름입니다.
- 여기서
모든 설정이 완료되면 Install service 버튼을 클릭하여 서비스를 등록합니다.
4. 서비스 시작 및 확인
등록한 서비스를 시작하려면 다음 명령어를 사용합니다.
nssm start FastAPI_Service
또는 서비스 관리자를 통해 시작할 수도 있습니다:
- Windows 키 + R을 눌러 "services.msc"를 입력하고 엔터.
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 애플리케이션을 윈도우 환경에서 안정적이고 효율적으로 운영해보세요!