Flask App 部署至Heroku

    最近自学期间,做了几个玩具网站后台项目,既然是网站,光是在本地环境跑跑有什么用,还是得把它发布上线,知道Heroku这个东西是之前学习Ruby on Rails的课程的时候,课上老师介绍的这个平台,而Heroku有免费的APP发布上线服务可以使用。

(1)首先注册Heroku帐号,可以直接用Github帐号登录

(2)注册完成之后,在Heroku的官网下载一个Heroku的CLI工具,这个工具下载安装之后,可以直接在shell里面进行heroku命令行操作

Flask App 部署至Heroku_第1张图片

(3)接下来我们需要在我们的项目文件夹里面添加几个Heroku环境需要的文件(非常重要)

        一个是Procfile文件,直接新建一个名字为Procfile(不需要后缀名)的文件,然后在其中添加

    web: gunicorn runserver:app --preload

        其中web:gunicorn表示使用gunicorn来运行我们的APP, runserver:app 表示启动app的文件为runserver.py(注意这里不能使用manage runserver的方式启动app,gunicorn不支持这种命令格式,所以上线之前先移除manger), --preload参数是规避使用flask-login后无法登录的冲突

        另外一个是不要忘记在添加requirements.txt, 一定注意在生成的requirements.txt中添加 gunicorn,应该Heroku在线上环境中需要使用gunicorn来跑我们的APP

(4)接下来使用Heroku命令创建我们的APP

        heroku create [app名称], 创建完成之后Heroku将会给我们分配我们APP的url以及APP远端git仓库的url

        创建完成之后,我们需要用git remote add [远端仓库地址]添加Heroku远端仓库

        然后git push heroku master,将APP推送到Heroku上面,在推送过程当中我们可以看到Heroku在接收完本地推送之后,会安装我们项目的各种包并且将项目打包生成一个APP

        最后需要输入命令 heroku ps:scale web=1 来启动我们的APP,然后就可以通过APP的url访问APP了


(5)遇到的坑

        heroku线上APP默认使用Postgres数据库,而我采用的是MongoDB,需要添加配置命令

heroku MONGO_URL = mongodb://username:[email protected]:port/db

        添加数据库

        启动APP后,输入命令heroku logs -t可以输出日志信息,协助定位分析

        最好提前安装一个gunicorn包,方便生成requirements.txt的时候可以一起在文件中生成gunicorn

你可能感兴趣的:(Flask App 部署至Heroku)