0, Heroku
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客户端和Foreman工具,不过我当时发现装完Toolbelt没有foreman, 其实也简单,直接接提示apt install
3, 登录Heroku
4, 准备你的Web App
4.1安装Git
$ git --version
4.2 生成git仓库
$ 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, 检查我们的必要文件
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
- pip install pipreqs #安装软件
- #切换到项目目录下
- #生成requirements.txt到项目根目录
- pipreqs --use-local ./
这下生成的包少了一大半哟
8, 进行git push部署
$ git push heroku master .... To [email protected]:<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博客