当然,你也完全可以把Gunicorn下载下来进行本地的测试,由于不是每个人都使用的Python Web框架都是Flask或者使用的生Web服务器软件是Gunicorn,所以这里就不提及。
9.添加依赖需求文件和Profile文件
这是必需也是非常重要的一点,否则的话部署很难成功!
Heroku要求在我们的Web程序(这里针对Python的Web应用程序)目录中必须要有下面的两个文件:
必需文件 说明requirements.txt Web应用程序所依赖的各种第三方扩展包
Procfile 里面包含的是我的Web应用服务器启动时执行的命令
正如刚刚在我的Heroku_pro目录下看到的:
1 2 3
xpleaf@leaf:~/Heroku_pro$ ls -l requirements.txt Procfile -rw-rw-r-- 1 xpleaf xpleaf 25 1月 29 03:13 Procfile -rw-rw-r-- 1 xpleaf xpleaf 76 1月 29 03:13 requirements.txt
注意这两个文件必须位于当前Heroku_pro目录下。
requirements.txt的文件内容类似于这样:
1 2 3 4 5 6 7 8 9 10
Flask==0.10.1 Flask-Bootstrap==3.0.3.1 Flask-HTTPAuth==2.7.0 Flask-Login==0.3.1 ... SQLAlchemy==0.9.9 WTForms==1.0.5 Werkzeug==0.10.4 alembic==0.6.2 bleach==1.4.0
里面包含了支撑我的Web应用程序运行的各种扩展包。当然至于内容是什么,取决于你正在开发的Web项目。
而Profile文件的内容则类似于这样:
1
web: gunicorn manage:app
正如前面所说,里面放的是命令,比如这里的这个命令就是用来启动我前面所说的Gunicorn生产环境Web服务器的。
再次说明,这两个文件非常重要,如果没有的话,待会部署就会失败的。
10.执行git push进行部署
前面的确认无误之后,就可以部署了,当然,如果你临时修改了你当前Heroku_pro目录下的文件,请先使用下面的命令提交你的修改:
1 2
git add . git commit -m "ver1.0"
Ok,下面就开始部署:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
xpleaf@leaf:~/Heroku_pro$ git push heroku master 对象计数中: 97, 完成. Delta compression using up to 4 threads. 压缩对象中: 100% (90/90), 完成. 写入对象中: 100% (97/97), 35.04 KiB | 0 bytes/s, 完成. Total 97 (delta 22), reused 0 (delta 0) remote: Compressing source files... done. remote: Building source: remote: remote: -----> Python app detected remote: -----> Installing runtime (python-2.7.11) remote: -----> Installing dependencies with pip remote: Collecting Flask==0.10.1 (from -r requirements/common.txt (line 1)) .......... remote: -----> Preparing static assets remote: Collectstatic configuration error. To debug, run: remote: $ heroku run python manage.py collectstatic --noinput remote: remote: -----> Discovering process types remote: Procfile declares types -> web remote: remote: -----> Compressing... remote: Done: 37.2M remote: -----> Launching... remote: Released v6 remote: https://my-heroku-app-cn.herokuapp.com/ deployed to Heroku remote: remote: Verifying deploy.... done. To https://git.heroku.com/my-heroku-app-cn.git * [new branch] master -> master