선진이네
[INFRA] FastAPI 배포를 해보자! 본문
python은 3.10으로 설치되어 있었다. 그래서 먼저 pip를 설치하려 한다.
sudo apt-get update
sudo apt-get install python3-pip
명령어를 통해 pip를 설치했다.
참고로, 나는 FastAPI 개발에는 참여한 것이 아니고, 그저 배포만을 담당했다. 따라서 파이썬에 대한 지식이 부족한 점 양해 부탁한다.
KonlPy 관련 라이브러리가 있는데 해당 라이브러리는 자바로 구성되어 있어서 파이썬으로 변환하는 과정이 필요하다고 들었다. 따라서 배포 환경에 파이썬과 자바가 모두 갖춰져있어야했다.
기존의 배포 프로세스는 다음과 같았다.
1. jenkins가 웹 훅을 잡는다.
2. 해당 폴더를 EC2로 복사한다.
3. Dockerfile 실행을 위한 쉘 스크립트를 실행한다.
4. Dockerfile 내부에서 파이썬 이미지를 기반으로 requirements.txt 파일을 통해 환경을 구축하고, uvicorn으로 서버 구동!
그럼 끝인데,, 우리는 앞서 말했듯 자바 환경도 갖춰져있어야했다.
따라서 Dockerfile 내부에서 java를 설치하고 해당 JPipe1을 위한 무언가를 설치하고자 하니,
30분이 지나도, 배포가 되지 않음을 보고 뭔가 잘못되고 있음을 깨달았다. 시간이 금이기에, 배포가 우선이었기에 EC2에 가상환경을 설정하고 그곳에서 배포 환경을 잡기로 했다.
따라서, 배포 중의 실행파일을 다음과 같이 수정했다.
해당 폴더로 이동하여
gitIgnore로 관리하는 파일을 해당 위치로 복사한다
이후 그곳에 위치하는 requirements.txt 파일을 통해 라이브러리 버전을 관리하고,
uvicorn을 활용하여 서버를 실행한다.
이러면 될 줄 알았다.. 하지만 BEEP!
왜?? 자동 배포는 이전에 쉽게 했다고 생각했지만 반자동 배포는 어려웠다...!
왜?? 도커로 컨테이너를 띄우는건 compose up down으로 관리가 편했는데
이제는 프로세스 아이디를 다 찾아서 죽이고 다시 해야한다..!
그럼 난 어떻게 했느냐!!
ps aux | grep uvicorn
kill -9 uvicorn
nohup uvicorn main:app --host 0.0.0.0 --port 8000 > myapp.log 2>&1 &
cat myapp.log
1. uvicorn 프로세스아이디 찾기
2. kill -9 uvicorn PID 해당 프로세스 죽이기!
3. nohup uvicorn main:app --host 0.0.0.0 --port 8000 > myapp.log 2>&1 & 로 서버 ON!
4. cat myapp.log 잘 떴는지 확인!
이렇게 서버도 잘 떠있고? 통신도 잘 되는걸 확인했어!
그럼 이만~~
'INFRA' 카테고리의 다른 글
[INFRA] EC2에서 파이썬 환경 다시 잡아보기 (0) | 2023.10.03 |
---|---|
[INFRA] 하나의 도커파일에서 자바와 파이썬 구동 환경 구성하기 (1) | 2023.10.02 |
[INFRA] EC2 서버에 MongoDB 설치하고 Spring 프로젝트와 연동하기(2) - 스프링 프로젝트와 연동하기 (0) | 2023.09.28 |
[INFRA] EC2 서버에 MongoDB 설치하고 Spring 프로젝트와 연동하기(1) - MongoDB 설치하기 (0) | 2023.09.27 |
[INFRA] AWS EC2, Docker, Jenkins, Nginx를 이용하여 CI/CD 환경 구축하기(5) - Nginx 설정 및 새로고침 에러 해결해보기 (0) | 2023.09.22 |