brunch

You can make anything
by writing

C.S.Lewis

by Master Seo Nov 26. 2024

1.  FastAPI로 API 만들고 배포하기

프로젝트

이미지 올리면 피부 질환과 피부암을 알려주는 API 만들기.





AI로 API를 만듬

클라우드에 배포




# 배포 초보자를 위한 설치 매뉴얼.


<1> aws ec2 생성

<2> fastapi  소스 준비

<3> ec2에 fastapi 애플리케이션 업로드

<4> ec2에 필요한 패키지 설치

<5> 애플리케이션 실행




<1 > aws ec2 생성



1

https://console.aws.amazon.com/console/home


2

amazon linux

22 (디폴트)



2

ec2 접속




3

생성  실습


# 브라우저

새텝에서 보기





# 이름

fastapi-aws-web01



# 사양이 좀 높아야 하는 경우

 c5.xlarge 로 변경함.




# Create new key pair

fastapi-aws-web01-key


ppk는 windows pc

pem은 리눅스, mac




#  디폴트로  외부에서 접속되는 공인 IP 할당 받는다.

Auto-assign public IP

 Info                              

Enable



# 디폴트로 ssh (22) 허용

Allow SSH traffic from

Allow HTTP traffic from (체크해 허용)



생성



# 추가 허용 포트

8080

8081



4

네트워크에서 public ip 확인하고 접속



5

putty

ppk키 사용


ec2-user





<2> fastapi  소스 준비


생성형 AI로 만듬.



<3> ec2에 fastapi 애플리케이션 업로드


1

winscp로 애플리케이션 올리기


파일 이름 영어로 변경

폴더 이름을 영어로 변경


unzip해서 압축 풀기




<4> ec2에 필요한 패키지 설치


sudo yum update

sudo yum install python3

sudo yum install python3-pip

sudo pip3 install fastapi

sudo pip3 install uvicorn





<5> 애플리케이션 실행



# 첫번째 애플리케이션


1

# 애플리케이션 실행해서 부족한 모듈이 없는지 확인

python3 Cancer.py




2

# 서버에서

cpu버전이면 tensorflow-cpu 만 설치하세요.

tensorflow 전체 설치하면 용량이 커서 서버가 다운되요.


sudo pip install tensorflow-cpu


sudo pip install python-multipart


sudo pip install --upgrade pillow



3

# 80으로 애플리케이션 실행 테스트

sudo uvicorn Cancer:app --host 172.30.1.49 --port 80




4

# pc에서 curl로 질의함.  이미지를 첨부해서 서버에 질의해보자.


curl -X POST -F "file=@./te.png" http://13.125.74.15


# 샘플 이미지 , te.png




5


# 2번째  애플리케이션

# 실행해서 부족한 모듈 확인 후 설치


python3 Disease.py



6

sudo pip install torch

sudo pip install torchvision


7

# 애플리케이션을 8081 포트로 띠워보자.

sudo uvicorn Disease:app --host 172.30.1.49 --port 8081





8

# 백그라운드 실행 - 터미널을 나가더라도 계속 동작하게 백그라운드로 실행하자.

# 터미널을 나가고 동작하는기  curl 로 점검하자.


nohup uvicorn Disease:app --host 172.30.1.49 --port 8080 &



9

# 같이 보면 좋을 자료


https://brunch.co.kr/@topasvga/4116


감사합니다.




브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari