728x90
오늘 목표
- FastAPI 설치하고 Hello, World 예제 만들기
- 실행해서 작동 확인
- 서버 재부팅해도 자동 실행되도록 systemd 설정
FastAPI 프로젝트 만들기
1.1 작업 폴더 만들기
mkdir fastapi-app
cd fastapi-app
Tip: 나중에 관리 쉽게 하려면 한 폴더에 모아두는 게 좋아요!
1.2 가상환경 만들고 활성화하기 (선택이지만 강력 추천!)
python3 -m venv venv
source venv/bin/activate
가상환경을 쓰면 프로젝트마다 필요한 패키지를 따로 설치할 수 있어요. 안 쓰면 시스템 전체에 설치돼서 꼬일 수 있어요 😱
1.3 필요한 패키지 설치
pip install fastapi uvicorn
fastapi
: 웹 프레임워크uvicorn
: FastAPI를 실행해주는 서버
1.4 main.py
만들기
# main.py
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
def read_root():
return {"message": "Hello, World!"}
이게 바로 FastAPI의 기본 구조! 경로(
/
)에 요청이 오면 메시지를 리턴해요.
FastAPI 실행해보기
실행 명령어
uvicorn main:app --host 0.0.0.0 --port 8000 --reload
main:app
: main.py 파일에 있는 app 객체 실행--reload
: 코드 수정 시 자동 반영 (개발용)
브라우저에서 확인
기본 페이지:
http://서버IP:8000
{"message": "Hello, World!"}
가 나오면 성공!자동 문서:
http://서버IP:8000/docs
Swagger UI도 자동으로 생겨요! (완전 멋짐)
서버 재부팅해도 자동 실행되게 하기 (systemd)
3.1 systemd 서비스 파일 만들기
sudo nano /etc/systemd/system/fastapi.service
아래 내용 붙여넣기 (경로는 본인 서버 기준으로 수정!)
[Unit]
Description=FastAPI application
After=network.target
[Service]
User=ubuntu
WorkingDirectory=/home/ubuntu/fastapi-app
ExecStart=/home/ubuntu/fastapi-app/venv/bin/uvicorn main:app --host 0.0.0.0 --port 8000
Restart=always
[Install]
WantedBy=multi-user.target
User
,WorkingDirectory
,ExecStart
는 본인 환경에 맞게 수정!which uvicorn
으로 정확한 경로 확인 가능해요.
3.2 서비스 등록 & 실행
sudo systemctl daemon-reload
sudo systemctl enable fastapi
sudo systemctl start fastapi
enable
: 서버 재부팅 시 자동 실행start
: 지금 바로 실행
3.3 서비스 상태 확인
sudo systemctl status fastapi
active (running)
이 나오면 성공!
보너스: 진짜 잘 되는지 테스트!
서버 재부팅
sudo reboot
재접속 후 확인
- 브라우저에서 다시 접속:
http://서버IP:8000
여전히 "Hello, World!" 가 나오면 완전 성공입니다!!
오늘 배운 것 요약
단계 | 내용 |
---|---|
1 | FastAPI 프로젝트 만들고 Hello, World 작성 |
2 | uvicorn 으로 실행하고 브라우저로 확인 |
3 | systemd 로 서버 부팅 시 자동 실행되게 설정 |
느낀 점
- FastAPI는 생각보다 간단하면서도 엄청 강력하다!
- systemd는 처음이라 헷갈렸지만, 한번 해보니 의외로 쉬움!
- 다음에는 Docker로도 한번 실행해보고 싶다!
'소개 > 소소한공부' 카테고리의 다른 글
작은 행동이 만드는 큰 변화 ‘가속의 법칙’으로 긍정 에너지를 얻는 법 (2) | 2025.05.16 |
---|---|
인간의 디지털 복사 미러드 바디(Mirrored Body)의 시대가 온다! (1) | 2025.04.22 |
개발환경에서 로컬 서버 외부에 노출하는 방법 모음 (1) | 2025.04.11 |
Cloudflare Tunnel 설정 및 자동 실행 방법 보안 웹 서버 구축 가이드 (1) | 2025.04.11 |
30대의 성공적인 이직 전략 라이프 스테이지에 맞는 기업 선택의 비밀 (2) | 2025.04.10 |