Notice
Recent Posts
Recent Comments
05-21 07:17
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

Byeol Lo

Flask - 9. Deploy to Production 본문

BackEnd/Flask

Flask - 9. Deploy to Production

알 수 없는 사용자 2024. 2. 25. 17:02

 서비스를 다 만들어 놓고 사용자에게 제공하지 못하면 아무 소용이 없다. 서버 컴퓨터에 자신이 만든 애플리케이션을 올려주어야 하며, 사전에 서버 컴퓨터를 구비해놔야 한다.

 

Build and Install

 우리의 프로젝트를 배포하기 위해 휠파일을 이제 만들어야 한다. wheel 파일을 쉽게 만들어줄 수 있는 build 모듈을 설치하여 dist 디렉터리에 wheel 파일을 자동으로 저장해 준다. 생성된 파일은 {project name}-{version}-{python tag} -{abi tag}-{platform tag} 의 포맷을 가진다.

pip install build # build 모듈 설치
python -m build --wheel # wheel 파일 생성

 이제 생성된 wheel 파일을 서버 컴퓨터에 옮긴 다음 같은 환경의 모듈들을 설치해주자.

pip install "{project name}-{version}-{python tag} -{abi tag}-{platform tag}"
# "..." 빼고 파일명 넣기

 해당 컴퓨터에는 db가 없기 때문에 initialize 해주어야 한다.

flask --app flaskr init-db

 

Configure the Secret Key

 튜토리얼의 시작 부분에서 SECRET_KEY에 기본 값을 제공했었는데, 프로덕션에서는 임의의 바이트로 변경을 해주어야 한다. 그렇지 않으면 해커가 'dev'키를 사용하여 세션 쿠키 또는 비밀 키를 사용하는 다른 항목들을 수정할 수 있기 때문이다.

python -c 'import secrets; print(secrets.token_hex())'

다음을 통해 SECRET_KEY를 간단히 발급할 수 있다.

 

Run with a Production Server

 개발이 아닌 공개적으로 서버를 실행할 때에는 내장된 개발 서버를 사용하면 안된다. 개발 서버는 편의를 위해 Werkzeug에서 제공을 하지만, 안정성이나 효율성이나 보안 측면을 위해 설계된 서버가 아니다. 따라서 다른 WSGI 서버 배포를 사용하여 Flask 어플리케이션을 호스팅할 수 있다. 그 중 하나의 예로 Waitress 모듈을 사용한다면, WSGI 서버 중 하나로 Flask 어플리케이션을 호스팅 할 수 있을 것이다.

pip install waitress

waitress-serve --call 'flaskr:create_app'

 

Comments