Flask
Flask 是一个用 Python 编写的 Web 应用程序框架。Flask 基于 Werkzeug WSGI 工具包和 Jinja2 模板引擎。两者都是 Pocco 项目。本文围绕如何在 Heroku 上部署 Flask 应用程序展开。为了证明这一点,我们首先将创建一个示例应用程序以更好地了解该过程。
软件需求
Python
pip
Heroku CLI
Git
pipenv > pip + virtualenv
pipenv 主要有以下特性:
pipenv 集成了 pip,virtualenv 两者的功能,且完善了两者的一些缺陷。
过去用 virtualenv 管理 requirements.txt 文件可能会带来各种问题,pipenv 使用 pipfile 和 pipfile.lock,后者存放包的依赖关系,查看依赖关系是十分方便。
使用哈希校验,无论安装还是卸载包都十分安全,且会自动公开安全漏洞
良好的跨平台支持。
pipenv的安装
pip3 install pipenv
在 Heroku 上部署 Flask App
首先创建一个简单的 Flask 应用程序,然后将其部署到 heroku。
此处假设我们在Heroku上创建的app名为:autoflask
创建autoflask目录,并进入该目录
mkdir autoflaskcd autoflask
使用 pipenv 创建虚拟环境并安装 Flask 和 Gunicorn。
pipenv install flask gunicorn
创建Procfile文件
echo "web gunicorn wsgi:app" >Procfile
创建runtime.txt文件(可选项)
echo "python-3.8.6" >runtime.txt
该文件用于指定Python的版本,heroku-18默认的是3.6.9,如果你觉得该版本够用,可以忽略runtime.txt的创建。
创建app目录,并进入该目录
mkdir appcd app
创建main.py文件,并添加如下内容,
from flask import Flask app = Flask(__name__) @app.route("/") def home_view(): return "<h1>Welcome to Heroku</h1>"
返回上级目录,创建wsgi.py文件,并添加如下内容,
from app.main import app if __name__ == "__main__": app.run()
目录结构
本地测试
pipenv run python3 wsgi.py
访问 http://localhost:5000/
本地测试
登录heroku并创建一个app
#提供用户名和密码heroku login#该名字必须唯一,没有被别人注册过heroku create autoflask
部署
初始化 gitgit init# 指定 appheroku git:remote -a autoflask#提交代码,服务器端自动部署git add .git commit -m "第一次提交"git push heroku master
最后Flask程序成功地部署到了http://autoflask.herokuapp.com,可以打开并访问它了
Welcome to Heroku
自动脚本
将以上代码放到一个脚本里,实现自动化创建Flask app,创建Heroku app并部署
export APP=autoflaskmkdir $APP && cd $APPpipenv install flask gunicornecho 'web gunicorn wsgi:app' >Procfileecho 'python-3.8.6' >runtime.txtmkdir appcat > app/main.py <<EOFfrom flask import Flask app = Flask(__name__) @app.route("/") def home_view(): return "<h1>Welcome to Heroku</h1>"EOFcat >wsgi.py <<EOFfrom app.main import app if __name__ == "__main__": app.run() EOF# 测试#pipenv run python3 wsgi.py# app name 必须平台唯一,否则会报Name xxx is already takenheroku create $APP# 部署git initheroku git:remote -a $APPgit add .git commit -m "第一次提交"git push heroku master
小编提供有偿安装部署服务,欢迎私信骚扰。
喜欢我的文章,烦请【在看】、【转发】 和【关注】三连,🙏🙏!