honey_pot

[정리] flask 프로젝트를 zip 파일로 만들어서 로컬에 배포하는 방식 본문

AI/웹 프로젝트

[정리] flask 프로젝트를 zip 파일로 만들어서 로컬에 배포하는 방식

_tera_ 2022. 8. 17. 00:22

zip 파일로 로컬 환경에서 배포  예제

게시글의 모든 내용은 공개sw 개발자 사이트에서 제공하는 'ML 서비스 배포' 강의 참조 (ML 서비스 배포하기 1)

 

zip으로 배포했을 때의 결과 모식도

 

 

코랩에서 생성한 필요한 모든 파일 다운로드

 

 

모델, x값,y값을 구하는 파일은 model 폴더

html 템플릿은 templates 폴더에 분리

 

 

 

vscode에서 flask-app 폴더를 연다

 

 

로컬에서는 ngrok을 쓰지 않으므로 ngrok 부분은 지움

 

로컬 환경에 필요한 모든 패키지들이 pip를 통해 설치 되어야 함

 

설치 부분에서 실수가 많으므로 스크립트에 미리 써놓고 자동화

 

!pip list 를 통해 설치된 패키지들의 버전 확인하여 버전을 명시해야 한다

-> 버전이 명확해야 dependency 문제가 생기지 않는다

 

!pip list | grep numpy

-> !pip list |(파이프: 파이프 앞 부분의 결과물을 파이프 뒷부분에 넘긴다) grep(찾는다) numpy

numpy

pandas

tensorflow

...

 

자동화 스크립트 작성

  • requirements.txt -> 터미널에 pip install -r requirements.txt
  • 쉘 스크립트 작성

 

requirements.txt 방식

 

쉘 스크립트 예) 

  1. install_v1.0.sh 파일 생성 후 파일 내에 pip install -r requirements.txt 작성
  2.  터미널에 chmod -x install.sh(실행가능한 파일로 만들어줌)
  3. ./install.sh

 

쉘 스크립트 방식

 

파일을 분리한대로 서버.py 코드 내의 경로를 알맞게 수정함

 

터미널에 python flask-app.py -> 서버 실행

 

 

 

 

플라스크 프로젝트 폴더를 압축하여 .zip 파일로 만든다

zip 파일을 다운 받아서 install.sh를 실행하고 서버.py를 실행하면 내 로컬 내에서 백그라운드로 서버가 실행되고 있다면 다른 사람들이 서버에 접근할 수 있음 -> 내 서버가 꺼지면 접근 불가능 -> 백그라운드에서 서버가 계속 실행되어야 함

 

백그라운드에서 서버가 계속 실행될 수 있게 터미널에 명령어 입력

nohup python flask-app.py &

-> 백그라운드에서 실행된 결과를 파일로 받을 수 있다.

 

실행 후 nohup.out 파일에 로깅됨 -> 디버깅에 유용

tail -f nohup.out -> 명령어로 결과가 바뀔 때마다 로그를 통해 서버 상태 확인 가능

 

백그라운드에서 계속 실행하는 명령어를 run_flask_app.sh 쉘 스크립트 파일로 저장해두면 유용

 

백그라운드 실행 명령어 자동화

 

'AI > 웹 프로젝트' 카테고리의 다른 글

[python] requirements.txt 한번에 정리  (0) 2022.09.07
Comments