Vercel에 Python/Flask 앱을 ​​배포하는 방법

20782 단어
이것은 물론 더 복잡한 응용 프로그램도 작동할 것입니다.

전제 조건



1 단계

아직 계정이 없는 경우 Vercel으로 계정을 만드십시오.

Vercel은 워크플로에 완벽하게 맞는 정적 사이트 및 Serverless Functions용 ​​클라우드 플랫폼입니다. 이를 통해 개발자는 구성 없이 즉시 배포되고 자동으로 확장되며 감독이 필요 없는 Jamstack 웹 사이트 및 웹 서비스를 호스팅할 수 있습니다.

2 단계

npm을 사용하여 컴퓨터에 전역적으로 Vercel을 설치합니다https://www.npmjs.com/package/vercel.

npm i -g vercel


3단계

최신 버전의 Python3이 설치되어 있고 pip3가 포함된 Flask 프레임워크가 있는지 확인합니다.

https://pypi.org/project/Flask/

pip install Flask


프로젝트 설정



프로젝트 만들기

가상 환경을 작동시키는 데 문제가 있는 경우 이 문서를 읽으십시오https://docs.python.org/3/library/venv.html.

mkdir vercel-python-app
cd vercel-python-app
python3 -m venv venv
. venv/bin/activate
cd venv
touch index.py


코드 편집기에서 프로젝트를 연 다음 index.py 파일에 Python/Flask 서버를 만듭니다.

from flask import Flask


app = Flask(__name__)


@app.route('/')
def home():
    return 'Home Page Route'


@app.route('/about')
def about():
    return 'About Page Route'


@app.route('/portfolio')
def portfolio():
    return 'Portfolio Page Route'


@app.route('/contact')
def contact():
    return 'Contact Page Route'


@app.route('/api')
def api():
    with open('data.json', mode='r') as my_file:
        text = my_file.read()
        return text


터미널에서 다음 명령을 실행하여 개발 환경을 설정합니다.

export FLASK_APP=index.py   
export FLASK_ENV=development


Windows를 사용하는 경우 환경 변수 구문은 여기를 참조하십시오https://flask.palletsprojects.com/en/1.1.x/quickstart/#a-minimal-application.

이제 data.json 파일을 만들어 venv의 루트 폴더에 넣고 아래에 .json를 추가합니다.

[
    {
        "id": 1,
        "first_name": "Rene",
        "last_name": "Clemmett",
        "email": "[email protected]",
        "gender": "Male",
        "ip_address": "42.86.99.75"
    },
    {
        "id": 2,
        "first_name": "Rustie",
        "last_name": "Chrishop",
        "email": "[email protected]",
        "gender": "Male",
        "ip_address": "197.128.10.252"
    },
    {
        "id": 3,
        "first_name": "Joe",
        "last_name": "Cocklie",
        "email": "[email protected]",
        "gender": "Male",
        "ip_address": "124.81.44.28"
    },
    {
        "id": 4,
        "first_name": "Diane",
        "last_name": "Catt",
        "email": "[email protected]",
        "gender": "Female",
        "ip_address": "169.47.61.184"
    },
    {
        "id": 5,
        "first_name": "Quinton",
        "last_name": "Shellsheere",
        "email": "[email protected]",
        "gender": "Male",
        "ip_address": "2.57.97.184"
    },
    {
        "id": 6,
        "first_name": "Lena",
        "last_name": "Paull",
        "email": "[email protected]",
        "gender": "Female",
        "ip_address": "121.4.165.63"
    },
    {
        "id": 7,
        "first_name": "Corena",
        "last_name": "Lamswood",
        "email": "[email protected]",
        "gender": "Female",
        "ip_address": "78.65.53.3"
    },
    {
        "id": 8,
        "first_name": "Justinian",
        "last_name": "Nequest",
        "email": "[email protected]",
        "gender": "Male",
        "ip_address": "62.24.98.224"
    },
    {
        "id": 9,
        "first_name": "Vladimir",
        "last_name": "Boeter",
        "email": "[email protected]",
        "gender": "Male",
        "ip_address": "87.119.34.255"
    },
    {
        "id": 10,
        "first_name": "Jillene",
        "last_name": "Eades",
        "email": "[email protected]",
        "gender": "Female",
        "ip_address": "159.173.99.31"
    }
]


아래 명령을 실행하여 브라우저에서 로컬로 작동하는 Python/Flask 앱을 ​​확인하세요.

flask run


Vercel에 배포



프로젝트의 루트 폴더venv 폴더 안에 있는지 확인한 다음 터미널에서 명령vercel을 실행합니다.

아래 프로젝트 설정 설정을 가이드로 사용하여 Vercel로 나만의 프로젝트를 설정하세요.

? Set up and deploy “~/Desktop/username/vercel-python-app/venv”? [Y/n] y
? Which scope do you want to deploy to? username
? Link to existing project? [y/N] n
? What’s your project’s name? venv
? In which directory is your code located? ./
> Upload [====================] 98% 0.0sNo framework detected. Default Project Settings:
- Build Command: `npm run vercel-build` or `npm run build`
- Output Directory: `public` if it exists, or `.`
- Development Command: None
? Want to override the settings? [y/N] n


완료되면 몇 가지 링크를 제공합니다. 앱은 아직 작동하지 않을 예정이며, index.py 파일의 브라우저 파일 다운로드만 제공할 것입니다. Vercel이 Python 애플리케이션임을 알 수 있도록 vercel.json 파일을 생성하여 루트 폴더에 넣어야 합니다. 그리고 index.py 파일이 프로젝트의 다른 서버 측 코드와 함께 루트 폴더에 남아 있어야 하는 것이 매우 중요합니다. 그렇지 않으면 앱이 작동하지 않습니다.
vercel.json 파일을 생성하여 프로젝트 폴더의 루트에 넣은 후 아래 코드를 추가합니다.

{
    "version": 2,
    "builds": [
        {
            "src": "./index.py",
            "use": "@vercel/python"
        }
    ],
    "routes": [
        {
            "src": "/(.*)",
            "dest": "/"
        }
    ]
}


그런 다음 수동으로 requirements.txt 파일을 만들고 아래 코드를 사용하여 루트 폴더에 넣습니다.

flask==1.0.2


여러 패키지가 설치된 더 복잡한 응용 프로그램을 만들 때 requirements.txt 파일을 자동으로 만들기 위해 아래 명령을 사용하는 것이 가장 좋습니다. 이것은 Node.js로 작업한 경우 익숙해야 하는 package.json 파일과 동일합니다. 작동하려면 서버에 종속 항목을 설치해야 합니다. 그러나 이 간단한 예에서는 우리가 사용하는 유일한 패키지가 flask이므로 필요하지 않습니다.

pip3 freeze > requirements.txt


이제 명령vercel --prod을 실행하여 앱을 배포합니다. 프로덕션 링크를 열면 앱이 전체 작업 경로로 온라인에서 작동해야 합니다.

좋은 웹페이지 즐겨찾기