部署后的最终效果
Github代码链接
部署的坑
-
1.Flask Web开发(基于Python的Web开发实战)这本书在部署这一节讲的不是很详细,在部署的时候遇到很多坑,下面说明下我遇到的坑。
-
2.首先要求你去heroku官网注册一个账号,因为heroku是国外网站,注册的时候没有翻墙的话就会碰到
please confirm you are not a robot
这个警告。这个警告是提示验证码,没有翻墙的话根本看不到验证码,简单的办法就是下载个蓝灯,打开蓝灯就能看到验证码这一栏。 -
3.注册的时候不能使用国内的邮箱注册(反正163和qq邮箱我都试过不行),那就用gmail注册。
-
4.注册成功后,进入该目录,使用
heroku login
命令登陆,要确保这个目录是个git仓库目录,不然后面就无法git push了。如果不是git目录的话,安装git执行以下命令:git init
git add *
git commit -m "v1.0"
-
5.配置数据库的时候书上使用的命令是
heroku addons:add heroku-postgresql:dev
,实际上是不行的,dev需要改成hobby-dev,正确的命令为heroku addons:add heroku-postgresql:hobby-dev
。而且创建完的数据库是没有颜色的,可能是heroku升级的原因吧,第一次创建的数据库已经是DATABASE_URL
,不需要提升为主数据库(因为它已经是主数据库了),后面再创建数据库可以使用heroku pg:promote xxx
提升为主数据库。 -
6.在配置电子邮件的过程中,有个大坑。第一次部署成功的时候,我发现邮件根本发不出来,以前我在本地用163邮箱测试都是可以的。在heroku上是不能使用163邮箱的,后来在本地我改成gmail试了下,结果本地测试都行不通,而且gamil在国内开启smtp服务发邮件确实行不通。试了好几个邮箱终于发现qq邮箱是可以的,部署上去后就是发送邮件有些延迟,至少功能是可以的。
-
7.Procfile这个文件一定要添加,添加
web: gunicorn manage:app
。书上说在本地用Gunicorn可以测试heroku的配置,可是我发现用heroku set:config
输入的坏境变量在本地根本没有啊。所以我一直使用python manager.py runserver
在本地测试的,在本地导入坏境变量。至少我觉得在heroku上配置的坏境变量本地不能用。 -
8.书上还提到了用Foreman进行测试,这部我没有做。最终使用
git push heroku master
的过程中会解析你的requirements.txt文件,会虚拟坏境导入所有模块,并解析Procfile文件。然后部署heroku run python manager.py deploy
,如果这步成功的话就大功告成了。但是这一步我卡了很久,最后我把数据库迁移的migration文件夹删了重新用命令生成,再次上传部署就成功了。
- 9.本来我以为部是个很简单的事情,只要打打命令就可以了,真的是too young too simple。对了,还有人遇到部署后,在网页上操作的数据之后就不见了,感觉数据库中的数据被删除了,这个bug暂时我还没碰到。