Flask 애플리케이션 배포 - 전체 정보 및 예
본고는 다양한 설정(Nginx/Gunicorn, Nginx/waitess, Docker)과 서로 다른 예시 응용 프로그램을 사용하여 생산에 Flask를 배치하는 방법을 설명한다.이런 개념들도 병을 굽는 맏형 장고에게 최소한의 노력으로 각색할 수 있다.
정말 감사합니다.내용은 App Generator에서 제공합니다.
배포
소프트웨어 배포는 소프트웨어 시스템을 사용할 수 있도록 하는 모든 활동입니다.대부분의 경우 개발자는 워크스테이션을 사용하여 응용 프로그램을 작성한 다음 제품을 공공 도메인/하위 도메인에 발표하여 최종 사용자가 사용할 수 있도록 합니다.소프트웨어를 생산에 사용할 수 있도록 하는 과정을 배치라고 한다.
뭐 공부 해요?
초보자에게 Flask는 경량급 WSGI 웹 응용 프로그램 프레임워크입니다.그것의 설계 목적은 입문이 빠르고 간단하며 복잡한 응용 프로그램으로 확장될 수 있도록 하는 것이다.
Flask는 마이크로 프레임워크로 분류되며 Python으로 작성되며 특정한 도구나 라이브러리가 필요하지 않습니다.데이터베이스 추상층, 폼 검증 또는 그 어떠한 구성 요소도 없고 그 중에서 미리 존재하는 제3자 라이브러리는 공공 기능을 제공한다.
WSGI(Web Server 게이트웨이 인터페이스)는 서버와 응용 프로그램이 통신하는 인터페이스 규범일 뿐입니다.
예를 들어 Flask는 백엔드에서 이 통신 프로토콜을 실현하여 웹 응용 프로그램의 상부에 대해 인코딩(기능, 로그인, 데이터베이스 정보 조작)을 하도록 한다.
WSGI Simple App(플라스크 없음)
아마도 역사상 가장 간단한 WSGI 응용 프로그램은 다음과 같다.
def app(environ, start_response):
data = b"Hello! This is a simple WSGI web app.\n"
start_response("200 OK", [
("Content-Type", "text/plain"),
("Content-Length", str(len(data)))
])
return iter([data])
Please save this code snippet in a file named
myapp.py
(or choose another name). We will refer this file in the next section.
이 코드 세그먼트는
app
이라는 방법을 정의했습니다. 이 방법은 간단한 문자열 Hello! This is a simple WSGI web app
을 되돌려줍니다.방법과 응답 모드를 정의하는 데 사용되는 문법은 WSGI 프로토콜 The Application/Framework Side절에서 정의됩니다.
한편 서버는 WSGI 프로토콜을 준수하고 The Server/Gateway Side을 실현해야 한다.
이 복잡한 부분은 Flask, Gunicorn, uWSGI 및 우리가 생산에서 사용할 수 있는 모든 WSGI 준비 서버에서 처리됩니다.
구니콘이 뭐예요?
현재 우리는
Hello world!
과 호응하는 매우 간단한 WSGI 응용 프로그램을 가지고 있다.그뿐이야.브라우저에서 메시지를 보려면 응용 프로그램을 실행하고 브라우저 요청을 제공하는 WSGI 서버(Gunicorn)가 필요합니다.Gunicorn 설치
가장 편리한 방법은 파이썬의 공식 패키지 관리자인 PIP를 사용하는 것이다.
$ pip install gunicorn
Gunicorn을 사용하면 간단한 응용 프로그램을 실행할 수 있습니다.$ gunicorn myapp:app
Gunicorn은 WSGI 서버로서 WSGI 대상을 매개 변수로 실행하기를 희망합니다. 우리의 예시에서 이 매개 변수는 방법 myapp.py
의 app
파일에 정의됩니다.기본적으로
Gunicorn
은 포트 8000에서 시작됩니다.다른 포트를 사용하려면 -b
매개변수(b
은 bind
)를 사용합니다.$ gunicorn myapp:app -b :8001
브라우저 효과여종업원
Gunicorn은 생산 과정에서 문제가 발생하지 않고 사용할 수 있는 놀라운 서버입니다.하지만 작은 한계가 있다.윈도우즈 워크스테이션에서 사용할 수 없습니다.이 문제는waiterse에서 해결합니다.waiterse는 WSGI를 지원하는 강력한 서버입니다.
설치 도우미
$ pip install waitress
우리는 간단한 WSGI 응용 프로그램을waitress에서 실행할 수 있는 코드 한 줄을 사용할 수 있습니다.$ waitress-serve myapp:app
기본적으로 Waitess는 포트 8080부터 시작하지만 --port
매개변수를 사용하여 포트를 조정할 수 있습니다.$ waitress-serve --port=8000 myapp:app
이것은 매우 간단하다, 그렇지?WSGI 응용 프로그램 - 플라스크 버전
만약 우리가
myapp.py
을 다시 한 번 본다면, 우리는 우리의 코드가 간단한 텍스트 하나만 제공했을 뿐, 다른 것은 아무것도 제공하지 않았다는 것을 볼 수 있다.데이터베이스, 예쁜 사용자 인터페이스, 폼, 또는 안전성을 설정하는 것은 어떻습니까?음, Flask를 사용하면 전 세계 개원 애호가들이 작성한 많은 모듈과 기능을 다시 사용할 수 있습니다.
Flask
을 사용하기 전에 설치해야 합니다.PIP
구조하러 왔습니다.$ pip install flask
매우 간단한(WSGI) 플라스크 어플리케이션은 다음과 같습니다.from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello():
return 'Hello WSGI ... from Flask!'
Save the content as
flask_app.py
for later reference.
flask_응용 프로그램입니다.py 다음을 수행합니다.
app
인 WSGI 객체를 정의합니다.route
을 되돌려줍니다.Gunicorn을 사용하여 실행
$ gunicorn flask_app:app
[3445] [INFO] Starting gunicorn 19.10.0
[3445] [INFO] Listening at: http://127.0.0.1:8000 (3445)
[3445] [INFO] Using worker: sync
[3449] [INFO] Booting worker with pid: 3449
브라우저 효과종업원을 이용한 집행은 매우 간단하다.우리는 단지 한 줄만 쓸 수 있다.
$ waitress-serve --port=8000 flask_app:app
브라우저에서 응용 프로그램에 접근하면 같은 dummy
메시지 Hello WSGI ... from Flask!
을 볼 수 있습니다.Nginx
이 때 우리는 Gunicorn과 Waitess를 사용하여 응용 프로그램을 시작할 수 있지만, 생산 환경은 안전한 HTTPS 연결이 필요하다. 이것은 현재 공개 서비스의 추천 방식이다.이를 위해서는 Gunicorn/Waitess 앞에
proxy
서버를 설정하여 브라우저와의 연결을 확보해야 합니다.Nginx는 reverse-proxy
으로 사용할 수 있습니다.초보자에게 reverse proxy은 웹 서버 앞에 있는 서버로 클라이언트(예를 들어 웹 브라우저)가 웹 서버에 요청을 전송합니다.리버스 에이전트는 일반적으로 안전성, 성능, 신뢰성을 향상시키는 데 사용된다.
Cloudfare는 이 유용한 개념-What Is A Reverse Proxy을 잘 소개했다.
Nginx 설정 방법
Nginx를 사용하기 전에 설치해야 합니다.운영 서버에서 Ubuntu를 사용하는 경우 다음과 같은 신기한 회선이 있습니다.
$ sudo apt install nginx
CentOS 서버에서 구문은 약간 다릅니다.$ sudo yum install epel-release
$ sudo yum install nginx
Nginx 서버 시작$ systemctl status nginx
Nginx는 현재 환영 페이지를 제공합니다. 기본 포트 80
을 연결하기 위해 간단한 설정을 추가하여 요청을 WSGI 응용 프로그램으로 전송해야 합니다.만약 WSGI 응용 프로그램이 Gunicorn 또는 Waitess를 사용하여 포트
8000
에서 실행된다고 가정한다면, Nginx를 이 주소를 귀속시키도록 설정해야 합니다.단일 파일을 편집함으로써 우리는 이 점을 쉽게 할 수 있다.$ vi /etc/nginx/sites-enabled/default [On Debian/Ubuntu]
$ vi /etc/nginx/nginx.conf [On CentOS/RHEL]
컨텐트를 편집하기 전에 현재 파일을 백업하여 일부 컨텐트 구성이 잘못되지 않도록 하는 것이 좋습니다.이 작업이 완료되면 파일에는 다음 코드 세그먼트가 포함되어야 합니다.server {
listen 80;
server_name www.my-domain.com;
location / {
proxy_pass http://127.0.0.1:8000;
include proxy_params;
}
}
이 새 구성을 로드하려면 Nginx를 다시 시작해야 합니다.$ sudo systemctl reload nginx
브라우저의 포트 80
에 액세스하면 이전에 WSGI 응용 프로그램에서 제공한 것과 같은 메시지를 볼 수 있습니다.이 모든 개념을 이해한 후에 우리는 이 프레젠테이션을 더욱 소개하고 이미 Nginx/Gunicorn, HEROKU, Docker에 설정된 초보자들을 언급할 수 있다.
예시를 사용할 때 문제가 발생하면 모든 문제를 설명 영역에 두거나 AppSeed Discord 서버에 가입하고 도움을 요청하십시오.
플라스크 블랙 계기판
Flask Framework에서 인코딩된 오픈 소스 관리 대시보드 - 기능:
플라스크 데이터
Flask Framework에서 인코딩된 오픈 소스 관리 대시보드 - 기능:
화병이 어둡다
Flask Framework에서 인코딩된 오픈 소스 관리 대시보드 - 기능:
아틀란티스 라이트
Flask Framework에서 인코딩된 오픈 소스 관리 대시보드 - 기능:
플라스크 CoreUI
CoreUI는 소스 부트 관리 템플릿입니다.그러나 CoreUI는 다른 관리 템플릿이 아닙니다.투명한 코드와 파일 구조로 인해 지금까지의 관리 템플릿을 뛰어넘었다.이것도 부족하다면 한마디 더 하자. 코어UI는 독특한 기능과 1000여 개의 고품질 아이콘으로 구성되어 있다.
Thank you for reading! Let me know your thoughts in the comments.
리소스
공식 사이트 Flask
Reference
이 문제에 관하여(Flask 애플리케이션 배포 - 전체 정보 및 예), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/sm0ke/deploy-flask-app-complete-information-and-samples-4h6i텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)