Flask-heroku部署相关问题

个人认为狗书最难的地方就是部署,尽管我这是第3次部署,但还是花了一天的时间才完成。期间遇到了各种坑爹的问题,一卡就是4,5个小时,有时候你上stackoverflow去找也找不到解决方法。因此这一章主要记下我跌到过的坑

1 创建仓库

如果你的程序没有托管在Git仓库中,那么必须在自己电脑上创建一个仓库。

cd到程序所在位置,我这里是/xhu
git init 

或者

git init xhu  #在xhu目录下创建.git文件

这里写图片描述

.git 文件就是仓库,和你自己写的程序在一个目录中

2 下载heroku客户端

根据书上的网址下载,里面有个git安装选项,如果你自己已经安装了git,可以把这个选项勾掉。我自己因为之前部署的时候已经下载过heroku,但是又重新下了一遍。虽然在安装过程中有自动添加到Path中,但是当我运行git-cmd的时候,有多次执行’heroku’显示不可执行文件,我反复确认了多次Path,发现heroku就在path内,怎么老报错呢?后来才知道,我电脑上有2个heroku,之前的放在C盘,这次放在F盘,两个都在Path里,可能冲突了。于是我把之前C盘的删除,完美解决问题。

3注册heroku账号

这个没什么说的,登录网站,注册账号。然后在命令行直接输”heroku login”这里写图片描述

4 ssh公钥

这个书上说login会自动创建并上传,我这边是在F盘顶部目录有个ssh文件夹这里写图片描述

里面有个config文件

这里写图片描述 可能里面的内容需要改写,如果是ssh相关报错的话

5 用heroku客户端创建程序

heroku create <Appname>

之后会得到两个URL,左边的是你的网页URL,用来访问。右边的是Heroku为你分配的Git服务器URL。书上是自动将这个服务器地址添加为本地Git仓库的远程服务器。但是这里我们可能需要手动添加

cd 到.git文件夹所在的目录 (即cd xhu)
git remote add <自定义名称> [url]

[url]:是分配给你的服务器地址,也就是你得到的右边的URL

5配置Postgres数据库(No Such Table问题)

这个数据库配置我卡了6个小时,不是说配置有问题,而是出在我自己的config.py代码中,按照书上说的配置就行。如果你第一次输入

heroku addons:add heroku:postgresql:dev

得到的应该是一个DATABASE_URL,没有颜色URL。而书上得到的是一个棕色URL,如果你也想有个颜色的话,可以再输入一次上面的代码,创建一个新的Postgres数据库,这次就能得到一个有颜色的URL了,之后再把这个有颜色代号的数据库URL赋值给DATABASE_URL。也就是说DATABASE_URL的值就是Postgres数据库了

说下我自己为什么卡了6个小时,我这边Postgres数据库配置没问题,但是我config.py代码中prodconfig指定的数据库url有误,书上是

os.environ.get('DATABASE_URL') or 'sqlite:///'+ os.path.join(database, 'data.sqlite')

我自己为了开发简便,把os.environ.get(‘DATABASE_URL’)去掉了,只留了sqlite部分。而我的.gitignore文件里面是把sqlite类型的文件在push的时候删除的这里写图片描述

这就导致我虽然用heroku config:set FLASK_CONFIG=heroku
指定了使用herokuconfig配置,使用的数据库URL是os.getenv(‘DATABASE_URL’)也就是上面的Postgres数据库,但是我删掉了,也就是说我在heroku端没有数据库。这也就引发了之后的我在deploy之后打开网页,出现”internal server error”,然后查看日志发现总是说”No such table”的原因

6添加依赖文件和Procfile文件

7 改动程序

git add .             
git commit -m '说明'

这两个代码是用来将你所有的改动都提交到本地Git仓库中的,包括你第一次部署,先运行这两行代码把你的程序都加到Git仓库中,还有就是你要添加功能时,代码有改动后,再次运行这两行代码,把改动提交上去。

8.gitignore

.gitignore文件里列出的都是些你不想push的文件,创建方式是选择你要创建的地方,鼠标右键,然后选择git bash here ,跳出来命令行后输入 touch .gitignore

9Push

本地仓库提交好后就该Push到远程服务器上了,也就是你之前

git remote add <自定义名称> [远程服务器URL]

你之前已经命名了远程服务器的名称了,这里我们就命名为x吧,下面就是把本地仓库push到x中

git push x master

之后再按照书上最后的2步就成功了。

10 找错

当网站上线后,出现错误时,使用heroku logs或heroku logs -t来查找错误

11 Can’t run more 1 Free size dynos问题

当运行

heroku run python manage.py deploy

报上面的错误。原因应该是dynos超了,dyno是Heroku的计算单元,依次收取服务费的。既然超了,解决方法就是释放掉一些

heroku ps   #得到含有[run:数字]代码,如run:988
heroku ps:stop [run:数字]   #自己看下run后面数字是多少,替换就行

12No default language 问题

当运行git push [远程服务器名] master时,报上面的错误。应该是requirements依赖包的问题,看下命名和里面的代码

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值