如何部署Python Web应用:Heroku部署完整过程记录(4)

当然,你也完全可以把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

 

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/95588e51431522ed7cfb81aa06c3cd4a.html