部署Flask App到Heroku详细步骤及遇到的问题

0, Heroku
Heroku是老牌的免费云空间,可以很好的满足我们学习/研究/实验/测试的目的,同时,他对Python的支持非常良好。
下面主要针对flask web开发这本书第17章 Flask程序部署到Heroku平台。
(我使用的操作系统是ubuntu 16.04)

1, 注册Heroku账号

进入Heroku官网进行注册, 163,QQ等应该是不支持的,可以fanqiang Gmail或者Apple的iCloud邮箱去注册都可以 https://www.heroku.com/ 

其实注册微软的outlook邮箱很方便, 推荐用outlook来注册Heroku,另外不fanqiang的话 直接访问https://www.heroku.com/注册,你会发现总是提示 Please confirm you're not a robot.这是由于有一个图片验证码被屏蔽了。。。需要寻找代理服务器 再登录 详细可见小白教学-Heroku注册与登录

我自己是在安卓手机上下载了客户端然后注册的,也很方便

2, 下载Heroku Toolbelt客户端

安装这个客户端就可以让我们以命令行来操作管理我们在Heroku上的程序。书上说Heroku Toolbelt实际上装了两个工具:

Heroku客户端和Foreman工具,不过我当时发现装完Toolbelt没有foreman, 其实也简单,直接接提示apt install


3, 登录Heroku
在终端输入heroku login 按提示输入刚刚注册的账号密码 
$ heroku login
最后的 logged in as youremail@xxx.com 表示登录成功
4, 准备你的Web App
要使用Heroku部署Web App就要使用Git仓库托管,用git push的方法将程序放上Heroku。git是很优秀的版本托管工具,开发自然少不了和git打交道
4.1安装Git
下载安装 https://git-scm.com/downloads ubuntu直接apt install
使用命令行查看git版本
$ git --version
4.2 生成git仓库
在Web程序的目录下,命令行输入
$ git init #初始化仓库

接着将文件托管到git仓库, 请不要忘记将migrations文件夹中的versions文件夹一起托管

$ git add .
$ git commit -m "v1.0" #版本号v1.0
5, 用Heroku创建app
命令行
$ heroku create <appname> #你的app的名字
$ heroku apps #查找你的heroku的app程序
$ heroku apps:destory <appname> #删除app程序
6, 配置数据库

创建好app程序后开始配置数据库,Heroku可以支持Postgre数据库,这里我们就用这个。

$ heroku addons:create heroku-postgresql:hobby-dev
Database has been created and is available
! This database is empty. If upgrading, you can transfer
! data from another database with pg:copy
Created postgresql-asymmetrical-71831 as HEROKU_POSTGRESOL_BROWN_URL
Use heroku addons:docs heroku-postgresql to view documentation

出现以上字样表示配置成功,HEROKU_POSTGRESOL_BROWN_URL中保存了数据库的URL 这个环境变量的名字并不是一定是这个。。。用下面命令将数据库地位提升,把URL保存到环境变量DATABASE_URL中

$ heroku pg:promote HEROKU_POSTGRESOL_BROWN_URL
Promoting HEROKU_POSTGRESOL_BROWN_URL to DATABASE_URL ...done

此处DATABASE_URL 就是SQLAlchemy所需要的,config.py脚本中设定的DATABASE_URL, 此时程序可以自动连接到Postgres数据库

7, 检查我们的必要文件
Heroku要求在我们的Web程序(Python Web)目录中必须要有下面的两个文件:
requirements.txt ProcfileProcfile没有后缀(不要问我是怎么知道的。。也请不要拼写错误)Profile的内容就是
web: gunicorn manage:app

requirements.txt文件如下: 版本号麻烦写自己安装的

-r requirements/prod.txt
gunicorn==18.0
psycopg2==2.5.1

其中prod.txt 又引用了common.txt common.txt一般都用pip freeze>common.txt生成 最初我也是这样操作 生成了一大片的包,但是push heroku master时,就出现了 无法安装apurl的对应版本 而apurl就是pip生成的一个需求包 查资料发现两篇好文 

如何解决Python包依赖问题 常用python包(依赖)Ubuntu下

大意就是 pip 生成了很多的python依赖包,而我们需要的只是工程中import 库包 推荐用pipreqs

  1. pip install pipreqs #安装软件
  2. #切换到项目目录下
  3. #生成requirements.txt到项目根目录
  4. pipreqs --use-local ./

这下生成的包少了一大半哟

8, 进行git push部署

$ git push heroku master
....
To git@heroku.com:<appname>.git
* [new branch]  master -> master

看到上面字样就部署成功啦,但还没法正常使用

9, 配置数据库表并重启程序

$ heroku run python manage.py deploy
$ heroku restart
Restarting dynos ... done

下面可以通过https://<appname>.herokuapp.com/  这个书上写的是hero-kuapp.com 哈哈 昨晚到快11点了 我第一次访问没有访问到 简单伤心死 还好进了heroku帐户看了哈 才找到正确的网址 可以访问了 超级有成就感呀 <-->

0, 部署一次升级

可以访问了才是漫漫调试第一步,后续要修改,升级heroku程序前,所有改动提交到git 仓库,按下面命令进行升级:

$ heroku maintenance:on
$ git push heroku master
$ heroku run python manage.py deploy
$ heroku restart
$ heroku maintenance:off

Heroku客户端提供的maintenance命令会在升级过程中下线程序,并向用户显示一个静态页面,告知网站很快恢复。。。目前还没有用过升级功能,先把知识码在这



感谢下面作者:

部署Flask App到Heroku完整过程 - CSDN博客

如何解决Python包依赖问题

常用python包(依赖)Ubuntu下

小白教学-Heroku注册与登录 





  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值