Flask 애플리케이션 배포 - 전체 정보 및 예

14564 단어 deploymentflaskwebdev
안녕하십니까, 프로그래머 여러분,
본고는 다양한 설정(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.pyapp 파일에 정의됩니다.
기본적으로 Gunicorn은 포트 8000에서 시작됩니다.다른 포트를 사용하려면 -b 매개변수(bbind)를 사용합니다.
$ 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에서 인코딩된 오픈 소스 관리 대시보드 - 기능:
  • LIVE Demo
  • Product Page
  • DBMS: SQLite, PostgreSQL(생산)
  • 데이터베이스 도구: SQLAlchemy ORM, Alembic(모드 마이그레이션)
  • 청사진을 가진 모듈화 설계
  • 세션 기반 인증(flask_로그인), 폼 검증
  • 배포 스크립트: Docker, Gunicorn/Nginx, Heroku

  • 플라스크 데이터


    Flask Framework에서 인코딩된 오픈 소스 관리 대시보드 - 기능:
  • LIVE Demo
  • Product Page
  • DBMS: SQLite, PostgreSQL(생산)
  • 데이터베이스 도구: SQLAlchemy ORM, Alembic(모드 마이그레이션)
  • 청사진을 가진 모듈화 설계
  • 세션 기반 인증(flask_로그인), 폼 검증
  • 배포 스크립트: Docker, Gunicorn/Nginx, Heroku

  • 화병이 어둡다


    Flask Framework에서 인코딩된 오픈 소스 관리 대시보드 - 기능:
  • LIVE Demo
  • Product Page
  • DBMS: SQLite, PostgreSQL(생산)
  • 데이터베이스 도구: SQLAlchemy ORM, Alembic(모드 마이그레이션)
  • 청사진을 가진 모듈화 설계
  • 세션 기반 인증(flask_로그인), 폼 검증
  • 배포 스크립트: Docker, Gunicorn/Nginx, Heroku

  • 아틀란티스 라이트


    Flask Framework에서 인코딩된 오픈 소스 관리 대시보드 - 기능:
  • LIVE Demo
  • Product Page
  • 데이터베이스 관리 시스템: SQLite, PostgreSQL(생산)
  • 데이터베이스 도구: SQLAlchemy ORM, Alembic(모드 마이그레이션)
  • 청사진을 가진 모듈화 설계
  • 세션 기반 인증(flask_로그인), 폼 검증
  • 배포 스크립트: Docker, Gunicorn/Nginx, Heroku

  • 플라스크 CoreUI


    CoreUI는 소스 부트 관리 템플릿입니다.그러나 CoreUI는 다른 관리 템플릿이 아닙니다.투명한 코드와 파일 구조로 인해 지금까지의 관리 템플릿을 뛰어넘었다.이것도 부족하다면 한마디 더 하자. 코어UI는 독특한 기능과 1000여 개의 고품질 아이콘으로 구성되어 있다.
  • LIVE Demo
  • Product Page
  • DBMS: SQLite, PostgreSQL(생산)
  • 데이터베이스 도구: SQLAlchemy ORM, Alembic(모드 마이그레이션)
  • 청사진을 가진 모듈화 설계
  • 세션 기반 인증(flask_로그인), 폼 검증
  • 배포 스크립트: Docker, Gunicorn/Nginx, Heroku

  • Thank you for reading! Let me know your thoughts in the comments.


    리소스


  • 공식 사이트 Flask
  • 더 많은 Flask AppsFlask Dashboards은 AppSeed에서 제공합니다.
  • 좋은 웹페이지 즐겨찾기